Switch to running quickshell as a systemd service that is auto-restarted if it crashes

This commit is contained in:
David Heinemeier Hansson
2026-05-18 13:58:07 +02:00
parent 8424718d1b
commit b0f5d941ba
38 changed files with 735 additions and 244 deletions
+2 -2
View File
@@ -32,9 +32,9 @@ hl.bind("SUPER + SHIFT + ALT + X", hl.dsp.exec_cmd([[omarchy-launch-webapp "http
-- Overwrite existing bindings with hl.unbind() first if needed.
-- hl.unbind("SUPER + SPACE")
-- hl.bind("SUPER + SPACE", hl.dsp.exec_cmd("omarchy-shell-ipc menu toggle root"), { description = "Omarchy menu" })
-- hl.bind("SUPER + SPACE", hl.dsp.exec_cmd("omarchy-shell menu toggle root"), { description = "Omarchy menu" })
-- Logitech MX Keys examples:
-- hl.bind("SUPER + SHIFT + S", hl.dsp.exec_cmd("omarchy-capture-screenshot"))
-- hl.bind("SUPER + H", hl.dsp.exec_cmd("voxtype record toggle"))
-- hl.bind("SUPER + PERIOD", hl.dsp.exec_cmd("omarchy-shell-ipc shell toggle omarchy.emoji-picker \"{}\""))
-- hl.bind("SUPER + PERIOD", hl.dsp.exec_cmd("omarchy-shell shell toggle omarchy.emoji-picker \"{}\""))
+1 -1
View File
@@ -11,7 +11,7 @@
// action Shell command to run. If omitted, the row is a submenu.
// target Existing submenu id to open. Use for links/aliases.
// provider Runtime provider function/command returning JSON rows.
// aliases alternate `omarchy-shell-ipc menu summon <name>` routes; also searchable.
// aliases alternate `omarchy-shell menu summon <name>` routes; also searchable.
// keywords Extra search terms beyond id/label/aliases.
// description Optional subtitle and extra search text.
// when Shell condition; hide row when it fails.
+17
View File
@@ -0,0 +1,17 @@
[Unit]
Description=Omarchy Shell
PartOf=graphical-session.target
After=graphical-session.target
StartLimitIntervalSec=30
StartLimitBurst=5
[Service]
Type=exec
Environment=OMARCHY_PATH=%h/.local/share/omarchy
ExecStart=/usr/bin/quickshell -p %h/.local/share/omarchy/default/quickshell/omarchy-shell
Restart=always
RestartSec=2
Slice=session-graphical.slice
[Install]
WantedBy=graphical-session.target