Teach the launcher what an operating system knows

The OS-parity batch from the vicinae plan, tasks 1 through 7. The audit
came back better than the plan guessed: the calculator already links
libqalculate, the built-in file index answers in under 100ms across all
of home, quicklinks and snippets ship as built-in stores -- so zero new
packages, and `vicinae dmenu` replaces the planned compiled extension
outright. What was missing gets built: a power menu (lock, suspend, log
out through uwsm, restart, power off), reminders as transient systemd
timers with a pick-to-cancel list, a color picker over hyprpicker, and
dmenu pick-lists for window switching, force quit, kill process, SSH
hosts, and recent files -- all through one panama-pick helper. The
launcher commands contract exercises the reminder parsing and every
pick-list against stubs, including killing its own sacrificial sleep.
This commit is contained in:
Gabriel Brown
2026-08-21 19:32:11 -04:00
parent 1e430881e5
commit 4e978bf3b7
18 changed files with 581 additions and 36 deletions
+9
View File
@@ -0,0 +1,9 @@
#!/usr/bin/env bash
# @vicinae.schemaVersion 1
# @vicinae.title Force Quit Window
# @vicinae.mode silent
# @vicinae.icon ../../icons/hicolor/scalable/apps/panama-settings.svg
# @vicinae.description Pick a window; ask it to close, then make it.
# @vicinae.keywords ["force quit", "kill window", "unresponsive", "frozen"]
exec "$HOME/.config/quickshell/scripts/panama-pick" quit-window
+9
View File
@@ -0,0 +1,9 @@
#!/usr/bin/env bash
# @vicinae.schemaVersion 1
# @vicinae.title Kill Process
# @vicinae.mode silent
# @vicinae.icon ../../icons/hicolor/scalable/apps/panama-settings.svg
# @vicinae.description Pick a process by CPU; send it SIGTERM.
# @vicinae.keywords ["kill", "process", "task manager", "cpu"]
exec "$HOME/.config/quickshell/scripts/panama-pick" process
+9
View File
@@ -0,0 +1,9 @@
#!/usr/bin/env bash
# @vicinae.schemaVersion 1
# @vicinae.title Pending Reminders
# @vicinae.mode silent
# @vicinae.icon ../../icons/hicolor/scalable/apps/panama-settings.svg
# @vicinae.description See pending reminders; pick one to cancel it.
# @vicinae.keywords ["reminders", "timers", "pending", "cancel"]
exec "$HOME/.config/quickshell/scripts/panama-remind" pick
+11
View File
@@ -0,0 +1,11 @@
#!/usr/bin/env bash
# @vicinae.schemaVersion 1
# @vicinae.title Lock Screen
# @vicinae.mode silent
# @vicinae.icon ../../icons/hicolor/scalable/apps/panama-settings.svg
# @vicinae.description Lock the session now.
# @vicinae.keywords ["lock", "screen", "away", "secure"]
# The logind signal, same as the CTRL+ALT+L bind: hypridle is the one listener
# and owns actually running hyprlock.
exec loginctl lock-session
+15
View File
@@ -0,0 +1,15 @@
#!/usr/bin/env bash
# @vicinae.schemaVersion 1
# @vicinae.title Log Out
# @vicinae.mode silent
# @vicinae.icon ../../icons/hicolor/scalable/apps/panama-settings.svg
# @vicinae.description End the session and return to the login screen.
# @vicinae.keywords ["logout", "log out", "sign out", "exit", "session"]
# uwsm owns the session (see the hypr README), so it gets to end it: units stop
# in order instead of being orphaned by a bare compositor exit. The dispatch is
# the fallback for the plain non-uwsm session.
if command -v uwsm >/dev/null 2>&1; then
exec uwsm stop
fi
exec hyprctl dispatch exit
+16
View File
@@ -0,0 +1,16 @@
#!/usr/bin/env bash
# @vicinae.schemaVersion 1
# @vicinae.title Pick Color
# @vicinae.mode silent
# @vicinae.icon ../../icons/hicolor/scalable/apps/panama-settings.svg
# @vicinae.description Pick a color from the screen; the hex lands on the clipboard.
# @vicinae.keywords ["color", "colour", "picker", "eyedropper", "hex"]
# -a autocopies to the clipboard; the notification is the receipt. hyprpicker
# exits 1 on Escape, which is a choice, not a failure.
if ! command -v hyprpicker >/dev/null 2>&1; then
notify-send "Pick Color" "hyprpicker is not installed" 2>/dev/null || true
exit 1
fi
color="$(hyprpicker -a)" || exit 0
[[ -n "$color" ]] && notify-send --icon=color-select-symbolic "Copied $color" 2>/dev/null || true
+9
View File
@@ -0,0 +1,9 @@
#!/usr/bin/env bash
# @vicinae.schemaVersion 1
# @vicinae.title Power Off
# @vicinae.mode silent
# @vicinae.icon ../../icons/hicolor/scalable/apps/panama-settings.svg
# @vicinae.description Shut the machine down.
# @vicinae.keywords ["power off", "shutdown", "shut down", "poweroff", "halt"]
exec systemctl poweroff
+9
View File
@@ -0,0 +1,9 @@
#!/usr/bin/env bash
# @vicinae.schemaVersion 1
# @vicinae.title Restart
# @vicinae.mode silent
# @vicinae.icon ../../icons/hicolor/scalable/apps/panama-settings.svg
# @vicinae.description Restart the machine.
# @vicinae.keywords ["reboot", "restart"]
exec systemctl reboot
+9
View File
@@ -0,0 +1,9 @@
#!/usr/bin/env bash
# @vicinae.schemaVersion 1
# @vicinae.title Recent Files
# @vicinae.mode silent
# @vicinae.icon ../../icons/hicolor/scalable/apps/panama-settings.svg
# @vicinae.description Open something you had open recently.
# @vicinae.keywords ["recent", "files", "documents", "history"]
exec "$HOME/.config/quickshell/scripts/panama-pick" recent
+11
View File
@@ -0,0 +1,11 @@
#!/usr/bin/env bash
# @vicinae.schemaVersion 1
# @vicinae.title Remind Me
# @vicinae.mode silent
# @vicinae.icon ../../icons/hicolor/scalable/apps/panama-settings.svg
# @vicinae.description Set a reminder: a delay like 20m or 1h30m, or a clock time like 9:30.
# @vicinae.keywords ["remind", "reminder", "timer", "alarm", "in"]
# @vicinae.argument1 { "type": "text", "placeholder": "20m / 9:30" }
# @vicinae.argument2 { "type": "text", "placeholder": "what about" }
exec "$HOME/.config/quickshell/scripts/panama-remind" add "$1" "$2"
+9
View File
@@ -0,0 +1,9 @@
#!/usr/bin/env bash
# @vicinae.schemaVersion 1
# @vicinae.title SSH Hosts
# @vicinae.mode silent
# @vicinae.icon ../../icons/hicolor/scalable/apps/panama-settings.svg
# @vicinae.description Open a session to a host from ~/.ssh/config.
# @vicinae.keywords ["ssh", "host", "remote", "server"]
exec "$HOME/.config/quickshell/scripts/panama-pick" ssh
+9
View File
@@ -0,0 +1,9 @@
#!/usr/bin/env bash
# @vicinae.schemaVersion 1
# @vicinae.title Suspend
# @vicinae.mode silent
# @vicinae.icon ../../icons/hicolor/scalable/apps/panama-settings.svg
# @vicinae.description Put the machine to sleep.
# @vicinae.keywords ["suspend", "sleep", "standby"]
exec systemctl suspend
+9
View File
@@ -0,0 +1,9 @@
#!/usr/bin/env bash
# @vicinae.schemaVersion 1
# @vicinae.title Switch Window
# @vicinae.mode silent
# @vicinae.icon ../../icons/hicolor/scalable/apps/panama-settings.svg
# @vicinae.description Jump to an open window by title.
# @vicinae.keywords ["window", "switch", "focus", "alt tab"]
exec "$HOME/.config/quickshell/scripts/panama-pick" window