Replace Rofi with Walker as application launcher

Walker (GTK4 + Elephant backend) replaces rofi-lbonn-wayland-git as the
central launcher and menu framework.

Native Walker providers replace 5 custom rofi scripts:
- App launcher (desktopapplications provider)
- Clipboard (clipboard provider, replaces cliphist frontend)
- Bluetooth (bluetooth provider, replaces bluetoothctl script)
- Volume/audio (wireplumber provider)
- Sink switcher (wireplumber provider)

3 scripts ported to Walker dmenu mode:
- moonarch-vpn (nmcli)
- moonarch-cpugov (auto-cpufreq)
- moonarch-sink-switcher (pactl)

Settings menu (moonarch-setmen) removed — apps are findable via Walker
app search directly.

Walker theme (gtk-inherit) inherits all colors from the active GTK4
theme instead of hardcoding Catppuccin values.

Walker and Elephant run as systemd user services for instant startup.

Also standardizes GTK theme to Colloid-Grey-Dark-Catppuccin across all
config files (was inconsistent between gsettings and file configs).

Old rofi configs preserved in legacy/rofi/ for reference.
This commit is contained in:
nevaforget committed 2026-03-30 12:06:25 +02:00
1 parent 1b55ea648f
commit f37dc00c7f
45 files changed
+1387 -102

No files matched your search

+12
View File
@@ -17,3 +17,15 @@
- **Why**: System artifacts (XDG configs, helper scripts, zsh config, wallpaper) should be managed by pacman for clean deployment, versioning, rollback, and deinstallation
- **Tradeoffs**: /etc/xdg/ configs NOT in backup= (moonarch philosophy: system defaults flow through, users override in ~/.config/). /etc/greetd/ and /etc/moongreet/ NOT owned by package (owned by greetd/moongreet-git, overwritten via .install hook). Helper scripts move from /usr/local/bin/ to /usr/bin/ (FHS for package-managed files)
- **How**: moonarch-git PKGBUILD in moonarch-pkgbuilds repo. sweet-cursors-git as separate package. moonarch-update simplified (no git-sync, pacman handles file deployment). Installer scripts (post-install.sh, transform.sh) remain for orchestration, will be refactored in a follow-up to delegate file deployment to `paru -S moonarch-git`
## 2026-03-30 – Replace Rofi with Walker as application launcher
- **Who**: Dominik, Ragnar
- **Why**: Walker is Wayland-native (GTK4 + gtk4-layer-shell), has built-in providers for clipboard, bluetooth, audio (wireplumber), and Niri integration. Reduces custom shell scripts from 8 to 3. Rofi required a Wayland fork (rofi-lbonn-wayland-git) and every applet was a custom bash script.
- **Tradeoffs**: Walker is newer/less battle-tested than Rofi. Requires separate Elephant daemon with per-provider packages. Dmenu mode lacks Rofi's `-a`/`-u` (active/urgent) and `-mesg` flags. Settings menu (moonarch-setmen) dropped entirely — apps are findable via Walker's app search.
- **How**: Walker + Elephant as systemd user services. Native providers replace 5 rofi scripts (launcher, clipboard, bluetooth, volume, sink-switcher). 3 scripts ported to walker dmenu (vpn, cpugov, sink-switcher). Walker theme inherits GTK4 system theme colors (gtk-inherit). Old rofi configs preserved in `legacy/rofi/`.
## 2026-03-30 – Standardize GTK theme to Colloid-Grey-Dark-Catppuccin
- **Who**: Dominik, Ragnar
- **Why**: gsettings had `Colloid-Dark-Catppuccin` while config files had `Colloid-Catppuccin` — inconsistent. Grey accent matches the icon theme (Colloid-Grey-Catppuccin-Dark). Explicit `-Dark` variant is more reliable than depending on `prefer-dark` color-scheme setting.
- **Tradeoffs**: Explicit dark locks out light mode toggle — acceptable since Moonarch is dark-only by design.
- **How**: Updated transform.sh, post-install.sh, gtk-3.0/settings.ini, and gsettings to `Colloid-Grey-Dark-Catppuccin`. GTK4 symlinks updated accordingly.
+14 -19
View File
@@ -5,7 +5,7 @@ configured Niri (scrollable tiling Wayland) system with Catppuccin Mocha theming
Moonarch combines archinstall for the base system with post-install automation that
handles packages, XDG defaults, system services, greeter, idle management, and a
suite of rofi-based helper tools. The result is a complete development/productivity
Walker launcher with native providers and dmenu-based helper scripts. The result is a complete development/productivity
desktop that can be rebuilt from scratch in minutes.
## Why These Choices
@@ -18,14 +18,14 @@ desktop that can be rebuilt from scratch in minutes.
| **Power Menu** | [moonset](https://gitea.moonarch.de/nevaforget/moonset) | GTK4 Layer Shell overlay above Waybar. Lock, logout, hibernate, reboot, shutdown with confirmation. |
| **Idle Manager** | [stasis](https://aur.archlinux.org/packages/stasis) | Separate AC/battery power plans. Brightness dimming, DPMS, lock (via moonlock), and suspend on configurable timeouts. |
| **Bar** | [Waybar](https://github.com/Alexays/Waybar) | Wayland-native, highly customizable. Niri workspace/window modules via community plugins. |
| **Launcher** | [Rofi](https://github.com/lbonn/rofi) (lbonn Wayland fork) | Versatile dmenu replacement. Powers app launcher, clipboard, bluetooth, volume, VPN, CPU governor, and session menus. |
| **Launcher** | [Walker](https://github.com/abenz1267/walker) + [Elephant](https://github.com/abenz1267/elephant) | Wayland-native GTK4 launcher with built-in providers for apps, clipboard, bluetooth, audio, files, and calculator. Dmenu mode for custom scripts (VPN, CPU governor). |
| **Terminal** | [Foot](https://codeberg.org/dnkl/foot) | Fast, minimal Wayland-native terminal. Server mode for instant window spawning. |
| **Shell** | Zsh | Programmable completion, FZF integration, syntax highlighting. |
| **Audio** | PipeWire | Drop-in replacement for PulseAudio/JACK with lower latency. RNNoise input denoising configured out of the box. |
| **Display Management** | [kanshi](https://sr.ht/~emersion/kanshi/) + [wdisplays](https://github.com/artizirk/wdisplays) | kanshi auto-switches output profiles on hotplug. wdisplays for manual GUI configuration. |
| **Notifications** | [dunst](https://dunst-project.org/) | Lightweight, scriptable. DND mode exposed as Waybar module. |
| **Clipboard** | [cliphist](https://github.com/sentriz/cliphist) + wl-clipboard | Text and image history. Rofi frontend for selection, wl-paste watches the clipboard. |
| **Theme** | Catppuccin Mocha | Consistent dark palette across GTK, terminal, bar, rofi, notifications, and lock screen. |
| **Clipboard** | Walker clipboard provider | Built-in clipboard history with image support. Managed by Elephant backend. |
| **GTK Theme** | Colloid-Grey-Dark-Catppuccin | Catppuccin Mocha palette, grey accent, explicit dark variant. |
| **Icons** | Colloid-Grey-Catppuccin-Dark | Catppuccin-colored icon set matching the GTK theme. |
| **Cursor** | Sweet-cursors | Visible on dark backgrounds without clashing. |
| **Font** | UbuntuSans Nerd Font | Clean sans-serif with full Nerd Font glyph coverage for bar/terminal icons. |
@@ -113,7 +113,7 @@ defaults/
xdg/ System-wide XDG configs (deployed to /etc/xdg/)
niri/config.kdl Compositor: layout, keybinds, startup apps
waybar/config, style.css Bar: modules, layout, Catppuccin styling
rofi/config.rasi, themes/ Launcher: config + 8 applet themes
walker/config.toml, themes/ Launcher: Walker config + gtk-inherit theme
foot/foot.ini Terminal: font, colors, keybinds
dunst/dunstrc Notifications: geometry, colors, behavior
kanshi/config Display profiles (empty, user-configured)
@@ -125,15 +125,9 @@ defaults/
gtk-3.0/, gtk-4.0/ GTK theme settings
bin/ Helper scripts (deployed to /usr/local/bin/)
moonarch-launcher App launcher (rofi drun/run/filebrowser/window)
moonarch-clipboard Clipboard history browser (rofi + cliphist)
moonarch-bluetooth Bluetooth device manager (rofi + bluetoothctl)
moonarch-volume Volume control applet (rofi + amixer/pactl)
moonarch-sink-switcher Audio output switcher (rofi + pactl)
moonarch-vpn VPN connection manager (rofi + nmcli)
moonarch-cpugov CPU governor switcher (rofi + auto-cpufreq)
moonarch-session Session menu (rofi: lock/logout/suspend/reboot/shutdown)
moonarch-setmen Settings menu launcher (rofi script mode)
moonarch-sink-switcher Audio output switcher (walker dmenu + pactl)
moonarch-vpn VPN connection manager (walker dmenu + nmcli)
moonarch-cpugov CPU governor switcher (walker dmenu + auto-cpufreq)
moonarch-dnd Dunst Do Not Disturb toggle (Waybar JSON output)
moonarch-btnote Bluetooth device battery monitor (upower + notify-send)
moonarch-capsnote Caps Lock toggle notification
@@ -144,7 +138,7 @@ defaults/
shell/zshrc Zsh config: prompt, aliases, FZF, completion
etc/greetd/ greetd daemon + greeter Niri config
etc/moongreet/ moongreet configuration
user/systemd/user/ Systemd user services (kanshi)
user/systemd/user/ Systemd user services (kanshi, walker, elephant)
user/waybar/ Per-user Waybar overrides (only copied if missing)
backgrounds/wallpaper.jpg Default wallpaper (shared by desktop, greeter, lock screen)
```
@@ -170,7 +164,7 @@ greetd ─► niri (greeter instance) ─► moongreet ─► user authenticates
| Key | Action |
|-----|--------|
| `Super+Return` | Open terminal (foot) |
| `Super+Space` | App launcher (rofi) |
| `Super+Space` | App launcher (walker) |
| `Super+Q` | Close window |
| `Super+O` / `Super+Tab` | Overview |
| `Super+F` | Maximize column |
@@ -182,8 +176,7 @@ greetd ─► niri (greeter instance) ─► moongreet ─► user authenticates
| `Super+1-9` | Switch workspace |
| `Super+C` | Clipboard history |
| `Super+E` | File manager |
| `Super+A` | Volume control |
| `Super+T` | Settings menu |
| `Super+A` | Audio control (walker) |
| `Super+N` | VPN manager |
| `Super+Alt+L` | Session menu (wlogout) |
| `Print` | Screenshot |
@@ -198,7 +191,7 @@ All system configs live in `/etc/xdg/` and can be overridden per-user in `~/.con
|-----------|---------------|---------------|
| Niri | `/etc/xdg/niri/config.kdl` | `~/.config/niri/config.kdl` |
| Waybar | `/etc/xdg/waybar/` | `~/.config/waybar/` |
| Rofi | `/etc/xdg/rofi/` | `~/.config/rofi/` |
| Walker | `/etc/xdg/walker/` | `~/.config/walker/` |
| Foot | `/etc/xdg/foot/foot.ini` | `~/.config/foot/foot.ini` |
| Dunst | `/etc/xdg/dunst/dunstrc` | `~/.config/dunst/dunstrc` |
| kanshi | `/etc/xdg/kanshi/config` | `~/.config/kanshi/config` |
@@ -225,6 +218,8 @@ are part of the system and updated via `moonarch-update`.
| Service | Purpose |
|---------|---------|
| kanshi | Dynamic display configuration (auto-switch output profiles on hotplug) |
| elephant | Walker data provider backend (apps, clipboard, bluetooth, audio) |
| walker | Walker application launcher (GTK4 service mode for instant startup) |
## Moonarch Ecosystem
+3 -4
View File
@@ -1,5 +1,5 @@
#!/usr/bin/env bash
# ABOUTME: Rofi-based CPU governor switcher using auto-cpufreq.
# ABOUTME: Walker-dmenu CPU governor switcher using auto-cpufreq.
# ABOUTME: Allows switching between performance, powersave, and reset modes.
declare -A LABELS
@@ -38,8 +38,7 @@ function print_menu()
##
function start()
{
# print_menu | rofi -dmenu -p "?=>"
print_menu | sort | rofi -theme /etc/xdg/rofi/themes/cpugov.rasi -show "CPU Modes" -dmenu -mesg "󰓅 CPU Modes" -i -p "rofi-bangs: "
print_menu | sort | walker -d -p "󰓅 CPU Mode"
}
@@ -66,5 +65,5 @@ then
notify-send -h string:x-canonical-private-synchronous:cpugov -i cpu "CPU Mode" "Set to $choice ${LABELS[$choice]}"
else
echo "Unknown command: ${choice}" | rofi -dmenu -p "error"
notify-send -u critical "CPU Governor" "Unknown command: ${choice}"
fi
-66
View File
@@ -1,66 +0,0 @@
#!/usr/bin/env bash
# ABOUTME: Rofi script mode that lists desktop files from /usr/share/settings-menu/.
# ABOUTME: Used with rofi -show fb -modes "fb:moonarch-setmen" for a settings launcher.
####
# @author moonarch.de (nevaforget)
# script used with rofi to list desktop files of specific dir
# dir: /usr/share/settings-menu/
# @example rofi -show fb -modes "fb:moonarch-setmen" -theme /etc/xdg/rofi/themes/settings-menu.rasi
# @dependencies glib >= 2.67.2
####
function get_name {
local lang=$(locale | grep LANG | cut -d= -f2 | cut -d_ -f1)
local find="Name\[$lang\]="
local name=$(grep "^$find" $1 | tail -1 | sed "s/^$find//" | sed 's/%.//' | sed 's/^"//g' | sed 's/" *$//g')
if [ "${name}" = "" ]
then
find="Name="
name=$(grep "^$find" $1 | tail -1 | sed "s/^$find//" | sed 's/%.//' | sed 's/^"//g' | sed 's/" *$//g')
fi
echo "$name"
}
if [ "$ROFI_RETV" = "1" ]
then
for deskfile in /usr/share/settings-menu/*
do
match=$(grep "^Name" $deskfile | grep "$@" )
if [ -n "$match" ]
then
#gio launch $deskfile
# old way
app=$(grep '^Exec' $deskfile | tail -1 | sed 's/^Exec=//' | sed 's/%.//' | sed 's/^"//g' | sed 's/" *$//g')
coproc ( $app > /dev/null 2>&1 )
break
fi
done
exit 0
fi
function init {
for file in /usr/share/settings-menu/*
do
local name=$(get_name "$file")
local iconline=$(sed -n -e '/^Icon=/p' "$file")
local icon=${iconline/Icon=/""}
if [ -n "$name" ]
then
echo -en "$name\0icon\x1f$icon\n"
fi
done
}
init
+2 -2
View File
@@ -1,11 +1,11 @@
#!/usr/bin/bash
# ABOUTME: Rofi-based PulseAudio sink switcher using pactl.
# ABOUTME: Walker-dmenu PulseAudio sink switcher using pactl.
# ABOUTME: Changes the default sink and moves all active streams to it.
# choose audio sink via rofi
# changes default sink and moves all streams to that sink
sink=$(pactl list sinks short | awk '{print $1, $2}' | rofi -dmenu -theme '/etc/xdg/rofi/themes/volume.rasi' -mesg '󱡫 Sink Switcher' -p 'audio sink:' -location 6 -width 100 | awk '{print $1}') &&
sink=$(pactl list sinks short | awk '{print $1, $2}' | walker -d -p "󱡫 Sink Switcher" | awk '{print $1}') &&
pactl set-default-sink "$sink" &&
for input in $(pactl list sink-inputs short | awk '{print $1}'); do
+2 -2
View File
@@ -1,5 +1,5 @@
#!/usr/bin/env bash
# ABOUTME: Rofi-based VPN connection manager using NetworkManager (nmcli).
# ABOUTME: Walker-dmenu VPN connection manager using NetworkManager (nmcli).
# ABOUTME: Lists VPN connections and toggles them on/off.
# Copyright (C) 2021 Damien Cassou
@@ -80,7 +80,7 @@ function extract_connection_name_from_result() {
# used as lines to select from.
function start_rofi() {
local content="$1"
echo -e "$content" | rofi -dmenu -theme /etc/xdg/rofi/themes/vpn.rasi -mesg "󰖂 VPN Connection Manager" -icon "󰖂"
echo -e "$content" | walker -d -p "󰖂 VPN"
}
# List the VPN connections and let the user toggle one using rofi.
+11
View File
@@ -0,0 +1,11 @@
[Unit]
Description=Walker Application Launcher
After=graphical-session.target elephant.service
[Service]
Type=simple
ExecStart=walker --gapplication-service
Restart=on-failure
[Install]
WantedBy=graphical-session.target
+1 -1
View File
@@ -2,7 +2,7 @@
# ABOUTME: User overrides go in ~/.config/gtk-3.0/settings.ini
[Settings]
gtk-theme-name=Colloid-Catppuccin
gtk-theme-name=Colloid-Grey-Dark-Catppuccin
gtk-icon-theme-name=Colloid-Grey-Catppuccin-Dark
gtk-font-name=UbuntuSans Nerd Font 11
gtk-cursor-theme-name=Sweet-cursors
+4 -5
View File
@@ -122,21 +122,20 @@ window-rule {
binds {
Mod+Shift+Slash { show-hotkey-overlay; }
Super+C hotkey-overlay-title=null { spawn "moonarch-clipboard"; }
Super+C hotkey-overlay-title=null { spawn "walker" "-s" "clipboard"; }
Alt+W { spawn-sh "killall waybar && waybar &"; }
Super+E { spawn-sh "xdg-open ~"; }
Super+T { spawn-sh "pkill rofi || rofi -show fb -modes \"fb:moonarch-setmen\" -theme /etc/xdg/rofi/themes/settings-menu.rasi"; }
Super+N { spawn-sh "pkill rofi || moonarch-vpn"; }
Super+N { spawn-sh "moonarch-vpn"; }
Mod+Return hotkey-overlay-title="Open a Terminal: foot" { spawn "foot"; }
Mod+Space hotkey-overlay-title="Run an Application: rofi" { spawn-sh "pkill rofi || moonarch-launcher"; }
Mod+Space hotkey-overlay-title="Run an Application: walker" { spawn "walker"; }
Super+Alt+L hotkey-overlay-title="Session Menu: moonset" { spawn "moonset"; }
Mod+A { spawn-sh "pkill rofi || moonarch-volume"; }
Mod+A { spawn "walker" "-s" "audio"; }
XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+"; }
XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; }
+187
View File
@@ -0,0 +1,187 @@
# ABOUTME: Walker launcher configuration for moonarch.
# ABOUTME: Catppuccin Mocha theme, Niri-aware, replaces rofi applets.
force_keyboard_focus = false
close_when_open = true
click_to_close = true
as_window = false
single_click_activation = true
selection_wrap = false
theme = "gtk-inherit"
disable_mouse = false
page_jump_items = 10
hide_quick_activation = false
hide_action_hints = false
hide_action_hints_dmenu = true
hide_return_action = false
resume_last_query = false
[shell]
exclusive_zone = -1
layer = "overlay"
anchor_top = true
anchor_bottom = true
anchor_left = true
anchor_right = true
[placeholders]
"default" = { input = "Search…", list = "No Results" }
"clipboard" = { input = "Clipboard…", list = "Empty" }
"bluetooth" = { input = "Bluetooth…", list = "No Devices" }
"wireplumber" = { input = "Audio…", list = "No Devices" }
[keybinds]
close = ["Escape"]
next = ["Down"]
previous = ["Up"]
left = ["Left"]
right = ["Right"]
down = ["Down"]
up = ["Up"]
toggle_exact = ["ctrl e"]
resume_last_query = ["ctrl r"]
quick_activate = ["F1", "F2", "F3", "F4"]
page_down = ["Page_Down"]
page_up = ["Page_Up"]
show_actions = ["alt j"]
[providers]
default = [
"desktopapplications",
"calc",
"websearch",
]
empty = ["desktopapplications"]
max_results = 50
[providers.sets.clipboard]
default = ["clipboard"]
empty = ["clipboard"]
[providers.sets.bluetooth]
default = ["bluetooth"]
empty = ["bluetooth"]
[providers.sets.audio]
default = ["wireplumber"]
empty = ["wireplumber"]
[[providers.prefixes]]
prefix = ";"
provider = "providerlist"
[[providers.prefixes]]
prefix = ">"
provider = "runner"
[[providers.prefixes]]
prefix = "/"
provider = "files"
[[providers.prefixes]]
prefix = "."
provider = "symbols"
[[providers.prefixes]]
prefix = "="
provider = "calc"
[[providers.prefixes]]
prefix = "@"
provider = "websearch"
[[providers.prefixes]]
prefix = ":"
provider = "clipboard"
[[providers.prefixes]]
prefix = "$"
provider = "windows"
[providers.clipboard]
time_format = "relative"
[providers.actions]
fallback = [
{ action = "menus:open", label = "open", after = "Nothing" },
{ action = "menus:default", label = "run", after = "Close" },
{ action = "menus:parent", label = "back", bind = "Escape", after = "Nothing" },
{ action = "erase_history", label = "clear hist", bind = "ctrl h", after = "AsyncReload" },
]
dmenu = [{ action = "select", default = true, bind = "Return" }]
desktopapplications = [
{ action = "start", default = true, bind = "Return" },
{ action = "start:keep", label = "open+next", bind = "shift Return", after = "KeepOpen" },
{ action = "new_instance", label = "new instance", bind = "ctrl Return" },
{ action = "pin", bind = "ctrl p", after = "AsyncReload" },
{ action = "unpin", bind = "ctrl p", after = "AsyncReload" },
]
bluetooth = [
{ action = "find", bind = "ctrl f", after = "AsyncClearReload" },
{ action = "remove", bind = "ctrl d", after = "AsyncReload" },
{ action = "trust", bind = "ctrl t", after = "AsyncReload" },
{ action = "untrust", bind = "ctrl t", after = "AsyncReload" },
{ action = "pair", bind = "Return", after = "AsyncReload" },
{ action = "connect", default = true, bind = "Return", after = "AsyncReload" },
{ action = "disconnect", default = true, bind = "Return", after = "AsyncReload" },
{ action = "power_on", label = "Power On", bind = "ctrl e", after = "AsyncReload" },
{ action = "power_off", label = "Power Off", bind = "ctrl e", after = "AsyncReload" },
]
clipboard = [
{ action = "copy", default = true, bind = "Return" },
{ action = "remove", bind = "ctrl d", after = "AsyncClearReload" },
{ action = "remove_all", label = "clear", bind = "ctrl shift d", after = "AsyncClearReload" },
{ action = "show_images_only", label = "only images", bind = "ctrl i", after = "AsyncClearReload" },
{ action = "show_text_only", label = "only text", bind = "ctrl i", after = "AsyncClearReload" },
{ action = "show_combined", label = "show all", bind = "ctrl i", after = "AsyncClearReload" },
{ action = "pin", bind = "ctrl p", after = "AsyncClearReload" },
{ action = "unpin", bind = "ctrl p", after = "AsyncClearReload" },
]
wireplumber = [
{ action = "increase_volume", label = "+volume", bind = "ctrl y", after = "Nothing" },
{ action = "decrease_volume", label = "-volume", bind = "ctrl n", after = "Nothing" },
{ action = "mute", bind = "ctrl m", after = "Nothing" },
{ action = "unmute", bind = "ctrl m", after = "Nothing" },
{ action = "set_default_device", label = "set default", bind = "ctrl d", after = "Nothing" },
]
archlinuxpkgs = [
{ action = "install", bind = "Return", default = true },
{ action = "remove", bind = "Return" },
{ action = "show_all", label = "show all", bind = "ctrl i", after = "AsyncClearReload" },
{ action = "refresh", label = "refresh", bind = "ctrl r", after = "AsyncReload" },
{ action = "visit_url", label = "open URL", bind = "ctrl o" },
{ action = "show_installed", label = "show installed", bind = "ctrl i", after = "AsyncClearReload" },
]
calc = [
{ action = "copy", default = true, bind = "Return" },
{ action = "delete", bind = "ctrl d", after = "AsyncReload" },
{ action = "delete_all", bind = "ctrl shift d", after = "AsyncReload" },
]
websearch = [
{ action = "search", default = true, bind = "Return" },
{ action = "open_url", label = "open url", default = true, bind = "Return" },
]
files = [
{ action = "open", default = true, bind = "Return" },
{ action = "opendir", label = "open dir", bind = "ctrl Return" },
{ action = "copypath", label = "copy path", bind = "ctrl shift c" },
{ action = "copyfile", label = "copy file", bind = "ctrl c" },
]
runner = [
{ action = "run", default = true, bind = "Return" },
{ action = "runterminal", label = "run in terminal", bind = "shift Return" },
]
symbols = [
{ action = "run_cmd", label = "select", default = true, bind = "Return" },
]
@@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"></requires>
<object class="GtkBox" id="ItemBox">
<style>
<class name="item-box"></class>
</style>
<property name="orientation">horizontal</property>
<property name="spacing">10</property>
<child>
<object class="GtkLabel" id="ItemImageFont">
<style>
<class name="item-image-text"></class>
</style>
<property name="width-chars">2</property>
</object>
</child>
<child>
<object class="GtkImage" id="ItemImage">
<style>
<class name="item-image"></class>
</style>
<property name="icon-size">large</property>
</object>
</child>
<child>
<object class="GtkBox" id="ItemTextBox">
<style>
<class name="item-text-box"></class>
</style>
<property name="orientation">vertical</property>
<property name="vexpand">true</property>
<property name="hexpand">true</property>
<property name="vexpand-set">true</property>
<property name="spacing">0</property>
<child>
<object class="GtkLabel" id="ItemText">
<style>
<class name="item-text"></class>
</style>
<property name="ellipsize">end</property>
<property name="vexpand_set">true</property>
<property name="vexpand">true</property>
<property name="xalign">0</property>
</object>
</child>
<child>
<object class="GtkLabel" id="ItemSubtext">
<style>
<class name="item-subtext"></class>
</style>
<property name="ellipsize">end</property>
<property name="vexpand_set">true</property>
<property name="vexpand">true</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkLabel" id="QuickActivation">
<style>
<class name="item-quick-activation"></class>
</style>
<property name="wrap">false</property>
<property name="valign">center</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
</object>
</child>
</object>
</interface>
@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"></requires>
<object class="GtkBox" id="ItemBox">
<style>
<class name="item-box"></class>
</style>
<property name="orientation">horizontal</property>
<property name="spacing">10</property>
<child>
<object class="GtkBox" id="ItemTextBox">
<style>
<class name="item-text-box"></class>
</style>
<property name="orientation">vertical</property>
<property name="vexpand">true</property>
<property name="hexpand">true</property>
<property name="vexpand-set">true</property>
<property name="spacing">0</property>
<child>
<object class="GtkLabel" id="ItemText">
<style>
<class name="item-text"></class>
</style>
<property name="wrap">false</property>
<property name="vexpand_set">true</property>
<property name="vexpand">true</property>
<property name="xalign">0</property>
</object>
</child>
<child>
<object class="GtkLabel" id="ItemSubtext">
<style>
<class name="item-subtext"></class>
</style>
<property name="wrap">true</property>
<property name="vexpand_set">true</property>
<property name="vexpand">true</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkLabel" id="QuickActivation">
<style>
<class name="item-quick-activation"></class>
</style>
<property name="wrap">false</property>
<property name="valign">center</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
</object>
</child>
</object>
</interface>
@@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"></requires>
<object class="GtkBox" id="ItemBox">
<style>
<class name="item-box"></class>
</style>
<property name="orientation">horizontal</property>
<property name="spacing">10</property>
<child>
<object class="GtkLabel" id="ItemImageFont">
<style>
<class name="item-image-text"></class>
</style>
<property name="width-chars">2</property>
</object>
</child>
<child>
<object class="GtkImage" id="ItemImage">
<style>
<class name="item-image"></class>
</style>
<property name="pixel-size">48</property>
</object>
</child>
<child>
<object class="GtkBox" id="ItemTextBox">
<style>
<class name="item-text-box"></class>
</style>
<property name="orientation">vertical</property>
<property name="hexpand">true</property>
<property name="vexpand">true</property>
<property name="vexpand-set">true</property>
<property name="spacing">0</property>
<child>
<object class="GtkLabel" id="ItemText">
<style>
<class name="item-text"></class>
</style>
<property name="wrap">false</property>
<property name="vexpand_set">true</property>
<property name="vexpand">true</property>
<property name="xalign">0</property>
</object>
</child>
<child>
<object class="GtkLabel" id="ItemSubtext">
<style>
<class name="item-subtext"></class>
</style>
<property name="wrap">true</property>
<property name="vexpand_set">true</property>
<property name="vexpand">true</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkLabel" id="QuickActivation">
<style>
<class name="item-quick-activation"></class>
</style>
<property name="wrap">false</property>
<property name="valign">center</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
</object>
</child>
</object>
</interface>
@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"></requires>
<object class="GtkBox" id="ItemBox">
<style>
<class name="item-box"></class>
</style>
<property name="orientation">horizontal</property>
<property name="spacing">10</property>
<child>
<object class="GtkBox">
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox" id="ItemTextBox">
<style>
<class name="item-text-box"></class>
</style>
<property name="orientation">vertical</property>
<property name="hexpand">true</property>
<property name="vexpand">true</property>
<property name="vexpand-set">true</property>
<property name="spacing">0</property>
<child>
<object class="GtkLabel" id="ItemText">
<style>
<class name="item-text"></class>
</style>
<property name="vexpand">true</property>
<property name="xalign">0</property>
<property name="lines">1</property>
<property name="wrap">true</property>
<property name="ellipsize">3</property>
<property name="single-line-mode">true</property>
</object>
</child>
<child>
<object class="GtkLabel" id="ItemSubtext">
<style>
<class name="item-subtext"></class>
</style>
<property name="xalign">0</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkLabel" id="QuickActivation">
<style>
<class name="item-quick-activation"></class>
</style>
<property name="wrap">false</property>
<property name="valign">center</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
</object>
</child>
</object>
</interface>
@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"></requires>
<object class="GtkBox" id="ItemBox">
<style>
<class name="item-box"></class>
</style>
<property name="orientation">horizontal</property>
<property name="spacing">10</property>
<child>
<object class="GtkBox" id="ItemTextBox">
<style>
<class name="item-text-box"></class>
</style>
<property name="orientation">vertical</property>
<property name="hexpand">true</property>
<property name="vexpand">true</property>
<property name="vexpand-set">true</property>
<property name="spacing">0</property>
<child>
<object class="GtkLabel" id="ItemText">
<style>
<class name="item-text"></class>
</style>
<property name="vexpand">true</property>
<property name="xalign">0</property>
<property name="lines">1</property>
<property name="ellipsize">3</property>
<property name="single-line-mode">true</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkLabel" id="QuickActivation">
<style>
<class name="item-quick-activation"></class>
</style>
<property name="wrap">false</property>
<property name="valign">center</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
</object>
</child>
</object>
</interface>
@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"></requires>
<object class="GtkBox" id="ItemBox">
<style>
<class name="item-box"></class>
</style>
<property name="orientation">horizontal</property>
<property name="spacing">10</property>
<child>
<object class="GtkBox" id="ItemTextBox">
<style>
<class name="item-text-box"></class>
</style>
<property name="orientation">vertical</property>
<property name="vexpand">true</property>
<property name="hexpand">true</property>
<property name="vexpand-set">true</property>
<property name="spacing">0</property>
<child>
<object class="GtkLabel" id="ItemText">
<style>
<class name="item-text"></class>
</style>
<property name="wrap">false</property>
<property name="vexpand_set">true</property>
<property name="vexpand">true</property>
<property name="xalign">0</property>
</object>
</child>
<child>
<object class="GtkLabel" id="ItemSubtext">
<style>
<class name="item-subtext"></class>
</style>
<property name="wrap">true</property>
<property name="vexpand_set">true</property>
<property name="vexpand">true</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkLabel" id="QuickActivation">
<style>
<class name="item-quick-activation"></class>
</style>
<property name="wrap">false</property>
<property name="valign">center</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
</object>
</child>
</object>
</interface>
@@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"></requires>
<object class="GtkBox" id="ItemBox">
<style>
<class name="item-box"></class>
</style>
<property name="orientation">horizontal</property>
<property name="spacing">10</property>
<child>
<object class="GtkImage" id="ItemImage">
<style>
<class name="item-image"></class>
</style>
<property name="icon-size">large</property>
</object>
</child>
<child>
<object class="GtkBox" id="ItemTextBox">
<style>
<class name="item-text-box"></class>
</style>
<property name="orientation">vertical</property>
<property name="hexpand">true</property>
<property name="vexpand">true</property>
<property name="vexpand-set">true</property>
<property name="spacing">0</property>
<child>
<object class="GtkLabel" id="ItemText">
<style>
<class name="item-text"></class>
</style>
<property name="wrap">false</property>
<property name="vexpand_set">true</property>
<property name="vexpand">true</property>
<property name="xalign">0</property>
<property name="ellipsize">1</property>
</object>
</child>
<child>
<object class="GtkLabel" id="ItemSubtext">
<style>
<class name="item-subtext"></class>
</style>
<property name="wrap">false</property>
<property name="vexpand_set">true</property>
<property name="vexpand">true</property>
<property name="xalign">0</property>
<property name="ellipsize">1</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkLabel" id="QuickActivation">
<style>
<class name="item-quick-activation"></class>
</style>
<property name="wrap">false</property>
<property name="valign">center</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
</object>
</child>
</object>
</interface>
@@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"></requires>
<object class="GtkBox" id="ItemBox">
<style>
<class name="item-box"></class>
</style>
<property name="orientation">horizontal</property>
<property name="spacing">10</property>
<child>
<object class="GtkLabel" id="ItemImageFont">
<style>
<class name="item-image-text"></class>
</style>
<property name="width-chars">2</property>
</object>
</child>
<child>
<object class="GtkImage" id="ItemImage">
<style>
<class name="item-image"></class>
</style>
<property name="icon-size">large</property>
</object>
</child>
<child>
<object class="GtkBox" id="ItemTextBox">
<style>
<class name="item-text-box"></class>
</style>
<property name="orientation">horizontal</property>
<property name="hexpand">true</property>
<property name="vexpand">true</property>
<property name="vexpand-set">true</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel" id="ItemText">
<style>
<class name="item-text"></class>
</style>
<property name="wrap">false</property>
<property name="vexpand_set">true</property>
<property name="vexpand">true</property>
<property name="xalign">0</property>
</object>
</child>
<child>
<object class="GtkLabel" id="ItemSubtext">
<style>
<class name="item-subtext"></class>
</style>
<property name="ellipsize">end</property>
<property name="vexpand_set">true</property>
<property name="vexpand">true</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkLabel" id="QuickActivation">
<style>
<class name="item-quick-activation"></class>
</style>
<property name="wrap">false</property>
<property name="valign">center</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
</object>
</child>
</object>
</interface>
@@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"></requires>
<object class="GtkBox" id="ItemBox">
<style>
<class name="item-box"></class>
</style>
<property name="orientation">horizontal</property>
<property name="spacing">10</property>
<child>
<object class="GtkLabel" id="ItemImage">
<style>
<class name="item-image"></class>
</style>
<property name="width-chars">2</property>
</object>
</child>
<child>
<object class="GtkBox" id="ItemTextBox">
<style>
<class name="item-text-box"></class>
</style>
<property name="orientation">vertical</property>
<property name="hexpand">true</property>
<property name="vexpand">true</property>
<property name="vexpand-set">true</property>
<property name="spacing">0</property>
<child>
<object class="GtkLabel" id="ItemText">
<style>
<class name="item-text"></class>
</style>
<property name="wrap">false</property>
<property name="vexpand_set">true</property>
<property name="vexpand">true</property>
<property name="xalign">0</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkLabel" id="QuickActivation">
<style>
<class name="item-quick-activation"></class>
</style>
<property name="wrap">false</property>
<property name="valign">center</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
</object>
</child>
</object>
</interface>
@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"></requires>
<object class="GtkBox" id="ItemBox">
<style>
<class name="item-box"></class>
</style>
<property name="orientation">vertical</property>
<property name="spacing">10</property>
<child>
<object class="GtkLabel" id="ItemImage">
<style>
<class name="item-image"></class>
</style>
</object>
</child>
<child>
<object class="GtkBox" id="ItemTextBox">
<style>
<class name="item-text-box"></class>
</style>
<property name="hexpand">true</property>
<property name="hexpand-set">true</property>
<child>
<object class="GtkLabel" id="ItemText">
<style>
<class name="item-text"></class>
</style>
<property name="wrap">true</property>
<property name="hexpand">true</property>
<property name="xalign">0.5</property>
<property name="justify">2</property>
</object>
</child>
</object>
</child>
</object>
</interface>
@@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"></requires>
<object class="GtkBox" id="ItemBox">
<style>
<class name="item-box"></class>
</style>
<property name="orientation">horizontal</property>
<property name="spacing">10</property>
<child>
<object class="GtkImage" id="ItemImage">
<style>
<class name="item-image"></class>
</style>
<property name="pixel-size">48</property>
</object>
</child>
<child>
<object class="GtkBox" id="ItemTextBox">
<style>
<class name="item-text-box"></class>
</style>
<property name="orientation">vertical</property>
<property name="vexpand">true</property>
<property name="vexpand-set">true</property>
<property name="spacing">0</property>
<child>
<object class="GtkLabel" id="ItemText">
<style>
<class name="item-text"></class>
</style>
<property name="wrap">true</property>
<property name="vexpand_set">true</property>
<property name="vexpand">true</property>
<property name="hexpand">true</property>
<property name="xalign">0</property>
</object>
</child>
<child>
<object class="GtkLabel" id="ItemSubtext">
<style>
<class name="item-subtext"></class>
</style>
<property name="wrap">false</property>
<property name="hexpand">true</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
</object>
</child>
</object>
</child>
</object>
</interface>
@@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"></requires>
<object class="GtkBox" id="ItemBox">
<style>
<class name="item-box"></class>
</style>
<property name="orientation">horizontal</property>
<property name="spacing">10</property>
<child>
<object class="GtkLabel" id="ItemImage">
<style>
<class name="item-image"></class>
</style>
<property name="width-chars">3</property>
</object>
</child>
<child>
<object class="GtkBox" id="ItemTextBox">
<style>
<class name="item-text-box"></class>
</style>
<property name="orientation">vertical</property>
<property name="hexpand">true</property>
<property name="vexpand">true</property>
<property name="vexpand-set">true</property>
<property name="spacing">0</property>
<child>
<object class="GtkLabel" id="ItemText">
<style>
<class name="item-text"></class>
</style>
<property name="wrap">false</property>
<property name="vexpand_set">true</property>
<property name="vexpand">true</property>
<property name="xalign">0</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkLabel" id="QuickActivation">
<style>
<class name="item-quick-activation"></class>
</style>
<property name="wrap">false</property>
<property name="valign">center</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
</object>
</child>
</object>
</interface>
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"></requires>
<object class="GtkBox" id="Keybind">
<style>
<class name="keybind"></class>
</style>
<property name="orientation">vertical</property>
<child>
<object class="GtkButton" id="KeybindButton">
<style>
<class name="keybind-button"></class>
</style>
<child>
<object class="GtkLabel" id="KeybindLabel">
<style>
<class name="keybind-label"></class>
</style>
</object>
</child>
</object>
</child>
<child>
<object class="GtkLabel" id="KeybindBind">
<property name="margin-top">5</property>
<style>
<class name="keybind-bind"></class>
</style>
</object>
</child>
</object>
</interface>
@@ -0,0 +1,160 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"></requires>
<object class="GtkWindow" id="Window">
<style>
<class name="window"></class>
</style>
<property name="resizable">true</property>
<property name="title">Walker</property>
<child>
<object class="GtkBox" id="BoxWrapper">
<style>
<class name="box-wrapper"></class>
</style>
<property name="overflow">hidden</property>
<property name="orientation">horizontal</property>
<property name="valign">center</property>
<property name="halign">center</property>
<property name="width-request">600</property>
<property name="height-request">570</property>
<child>
<object class="GtkBox" id="Box">
<style>
<class name="box"></class>
</style>
<property name="orientation">vertical</property>
<property name="hexpand-set">true</property>
<property name="hexpand">true</property>
<property name="spacing">10</property>
<child>
<object class="GtkBox" id="SearchContainer">
<style>
<class name="search-container"></class>
</style>
<property name="overflow">hidden</property>
<property name="orientation">horizontal</property>
<property name="halign">fill</property>
<property name="hexpand-set">true</property>
<property name="hexpand">true</property>
<child>
<object class="GtkEntry" id="Input">
<style>
<class name="input"></class>
</style>
<property name="halign">fill</property>
<property name="hexpand-set">true</property>
<property name="hexpand">true</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkBox" id="ContentContainer">
<style>
<class name="content-container"></class>
</style>
<property name="orientation">horizontal</property>
<property name="spacing">10</property>
<child>
<object class="GtkLabel" id="ElephantHint">
<style>
<class name="elephant-hint"></class>
</style>
<property name="label">Waiting for elephant...</property>
<property name="hexpand">true</property>
<property name="vexpand">true</property>
<property name="visible">false</property>
<property name="valign">0.5</property>
</object>
</child>
<child>
<object class="GtkLabel" id="Placeholder">
<style>
<class name="placeholder"></class>
</style>
<property name="label">No Results</property>
<property name="hexpand">true</property>
<property name="vexpand">true</property>
<property name="valign">0.5</property>
</object>
</child>
<child>
<object class="GtkScrolledWindow" id="Scroll">
<style>
<class name="scroll"></class>
</style>
<property name="can_focus">false</property>
<property name="overlay-scrolling">true</property>
<property name="hexpand">true</property>
<property name="vexpand">true</property>
<property name="max-content-width">500</property>
<property name="min-content-width">500</property>
<property name="max-content-height">400</property>
<property name="propagate-natural-height">true</property>
<property name="propagate-natural-width">true</property>
<property name="hscrollbar-policy">automatic</property>
<property name="vscrollbar-policy">automatic</property>
<child>
<object class="GtkGridView" id="List">
<style>
<class name="list"></class>
</style>
<property name="max_columns">1</property>
<property name="min_columns">1</property>
<property name="can_focus">false</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkBox" id="Preview">
<style>
<class name="preview"></class>
</style>
</object>
</child>
</object>
</child>
<child>
<object class="GtkBox" id="Keybinds">
<property name="hexpand">true</property>
<property name="margin-top">10</property>
<style>
<class name="keybinds"></class>
</style>
<child>
<object class="GtkBox" id="GlobalKeybinds">
<property name="spacing">10</property>
<style>
<class name="global-keybinds"></class>
</style>
</object>
</child>
<child>
<object class="GtkBox" id="ItemKeybinds">
<property name="hexpand">true</property>
<property name="halign">end</property>
<property name="spacing">10</property>
<style>
<class name="item-keybinds"></class>
</style>
</object>
</child>
</object>
</child>
<child>
<object class="GtkLabel" id="Error">
<style>
<class name="error"></class>
</style>
<property name="xalign">0</property>
<property name="visible">false</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</interface>
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"></requires>
<object class="GtkBox" id="PreviewBox">
<style>
<class name="preview-box"></class>
</style>
<property name="height-request">300</property>
<property name="width-request">500</property>
<child>
<object class="GtkStack" id="PreviewStack">
<style>
<class name="preview-stack"></class>
</style>
<property name="hexpand">true</property>
<property name="vexpand">true</property>
</object>
</child>
</object>
</interface>
@@ -0,0 +1,182 @@
/* ABOUTME: Walker theme that inherits colors from the active GTK4 theme.
ABOUTME: Only overrides layout/spacing — colors come from Colloid-Dark-Catppuccin or whatever is active. */
* {
all: unset;
font-family: "UbuntuSans Nerd Font", sans-serif;
}
popover {
background: lighter(@window_bg_color);
border: 1px solid darker(@accent_bg_color);
border-radius: 18px;
padding: 10px;
}
.normal-icons {
-gtk-icon-size: 16px;
}
.large-icons {
-gtk-icon-size: 32px;
}
scrollbar {
opacity: 0;
}
.box-wrapper {
box-shadow:
0 19px 38px rgba(0, 0, 0, 0.3),
0 15px 12px rgba(0, 0, 0, 0.22);
background: @window_bg_color;
padding: 20px;
border-radius: 20px;
border: 1px solid darker(@accent_bg_color);
}
.preview-box,
.elephant-hint,
.placeholder {
color: @theme_fg_color;
opacity: 0.6;
}
.search-container {
border-radius: 10px;
}
.input placeholder {
opacity: 0.5;
}
.input selection {
background: alpha(@accent_bg_color, 0.3);
color: @theme_fg_color;
}
.input {
caret-color: @accent_bg_color;
background: lighter(@window_bg_color);
padding: 10px;
color: @theme_fg_color;
border-radius: 10px;
}
.list {
color: @theme_fg_color;
}
.item-box {
border-radius: 10px;
padding: 10px;
}
.item-quick-activation {
background: alpha(@accent_bg_color, 0.15);
border-radius: 5px;
padding: 10px;
color: @accent_bg_color;
}
child:selected .item-box,
row:selected .item-box {
background: alpha(@accent_bg_color, 0.15);
}
child:selected .item-text,
row:selected .item-text {
color: @accent_bg_color;
}
.item-subtext {
font-size: 12px;
opacity: 0.5;
}
.providerlist .item-subtext {
font-size: unset;
opacity: 0.75;
}
.item-image-text {
font-size: 28px;
}
.preview {
border: 1px solid alpha(@accent_bg_color, 0.25);
border-radius: 10px;
color: @theme_fg_color;
}
.calc .item-text {
font-size: 24px;
}
.symbols .item-image {
font-size: 24px;
}
.todo.done .item-text-box {
opacity: 0.25;
}
.todo.urgent {
font-size: 24px;
color: @error_bg_color;
}
.todo.active {
font-weight: bold;
}
.bluetooth.disconnected {
opacity: 0.5;
}
.preview .large-icons {
-gtk-icon-size: 64px;
}
.keybinds {
padding-top: 10px;
border-top: 1px solid lighter(@window_bg_color);
font-size: 12px;
color: @theme_fg_color;
opacity: 0.6;
}
.keybind-button {
opacity: 0.5;
}
.keybind-button:hover {
opacity: 0.75;
}
.keybind-bind {
text-transform: lowercase;
opacity: 0.35;
}
.keybind-label {
padding: 2px 4px;
border-radius: 4px;
border: 1px solid @theme_fg_color;
}
.error {
padding: 10px;
background: @error_bg_color;
color: @error_fg_color;
border-radius: 10px;
}
:not(.calc).current {
font-style: italic;
}
.preview-content.archlinuxpkgs,
.preview-content.dnfpackages {
font-family: monospace;
}
File renamed without changes.
File renamed without changes.
File renamed without changes.
+41
View File
@@ -0,0 +1,41 @@
#!/usr/bin/env bash
# ABOUTME: Walker-dmenu settings menu that lists desktop files from /usr/share/settings-menu/.
# ABOUTME: Reads Name and Icon from .desktop files and launches the selected entry.
SETTINGS_DIR="/usr/share/settings-menu"
declare -A EXEC_MAP
get_name() {
local lang
lang=$(locale | grep "^LANG=" | cut -d= -f2 | cut -d_ -f1)
local find="Name[$lang]="
local name
name=$(grep "^$find" "$1" | tail -1 | sed "s/^$find//" | sed 's/%.//' | sed 's/^"//g' | sed 's/" *$//g')
if [[ -z "$name" ]]; then
name=$(grep "^Name=" "$1" | tail -1 | sed 's/^Name=//' | sed 's/%.//' | sed 's/^"//g' | sed 's/" *$//g')
fi
echo "$name"
}
get_exec() {
grep '^Exec=' "$1" | tail -1 | sed 's/^Exec=//' | sed 's/%.//' | sed 's/^"//g' | sed 's/" *$//g'
}
entries=""
for file in "$SETTINGS_DIR"/*.desktop; do
[[ -f "$file" ]] || continue
name=$(get_name "$file")
[[ -z "$name" ]] && continue
EXEC_MAP["$name"]=$(get_exec "$file")
entries+="$name\n"
done
chosen=$(echo -e "$entries" | sed '/^$/d' | sort | walker -d -p "⚙ Settings")
if [[ -n "$chosen" && -n "${EXEC_MAP[$chosen]}" ]]; then
${EXEC_MAP[$chosen]} &disown
fi
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+11 -1
View File
@@ -9,7 +9,17 @@ colloid-catppuccin-gtk-theme-git
colloid-catppuccin-theme-git
# Niri / Wayland Extras
rofi-lbonn-wayland-git
walker-bin
elephant-bin
elephant-desktopapplications-bin
elephant-clipboard-bin
elephant-bluetooth-bin
elephant-calc-bin
elephant-runner-bin
elephant-files-bin
elephant-providerlist-bin
elephant-niriactions-bin
elephant-wireplumber-bin
waybar-niri-windows-bin
waybar-niri-workspaces-enhanced-git
waypaper
+1 -1
View File
@@ -44,7 +44,7 @@ paru -S --needed --noconfirm moonarch-git
# --- User-level GTK4 symlinks for libadwaita apps ---
THEME_NAME="Colloid-Catppuccin"
THEME_NAME="Colloid-Grey-Dark-Catppuccin"
THEME_GTK4="/usr/share/themes/$THEME_NAME/gtk-4.0"
if [[ -d "$THEME_GTK4" ]]; then
+1 -1
View File
@@ -223,7 +223,7 @@ paru -S --needed --noconfirm moonarch-git
# ============================================================
# User-level GTK4 symlinks for libadwaita apps
THEME_NAME="Colloid-Catppuccin"
THEME_NAME="Colloid-Grey-Dark-Catppuccin"
THEME_GTK4="/usr/share/themes/$THEME_NAME/gtk-4.0"
if [[ -d "$THEME_GTK4" ]]; then