omarchy-shell
Recipe card from the charly-distros plugin (Images — the deployable catalog).
Candy: omarchy-shell
Section titled “Candy: omarchy-shell”Omarchy’s entire desktop shell is one Quickshell QML tree, shipped by the
omarchy package at /usr/share/omarchy/shell.
This is the single most common wrong assumption about Omarchy 4.x. The 3.x stack was waybar + mako + walker + swayosd + swaybg, and every one of those is gone from the 4.x base package set. There is no bar config to write, no notifier to install, and no launcher to wire up — there is one QML tree and a process that runs it.
Composition
Section titled “Composition”omarchy-shell: candy: candy: [omarchy-osd, omarchy-quickshell]| Member | Role |
|---|---|
omarchy-quickshell |
Quickshell itself plus the supervised omarchy-shell service |
omarchy-osd |
the tools the shell’s indicators shell out to |
Why the service does not use omarchy-launch-shell
Section titled “Why the service does not use omarchy-launch-shell”Upstream’s launcher runs systemd-cat -t omarchy-shell -- quickshell. A pod
has neither a systemd user manager nor a journald socket for systemd-cat to
write to. Supervisord already provides the same capture and restart
semantics, so the service execs quickshell directly:
exec: quickshell -n -p /usr/share/omarchy/shellpriority: 14wait_for: {paths: ["${XDG_RUNTIME_DIR}/wayland-2"], timeout: 60s}Priority 14 places it after the compositor (12) and before the streaming
transport (18). The socket is wayland-2, not wayland-0: this stack runs TWO
compositors, and gst-wayland-display (the streaming parent) takes wayland-1
while Hyprland binds the next name for its own clients. Nothing in the stack
ever creates wayland-0.
pod-dbus is load-bearing
Section titled “pod-dbus is load-bearing”Measured: without a session bus Quickshell still starts and still draws, but
logs Could not connect to DBus and disables its bluetooth and
NetworkManager modules — Network will not work. Could not find an available backend. Two bar widgets are then dead with no other symptom, so pod-dbus
is a require:, not a suggestion.
Verifying it in a bed
Section titled “Verifying it in a bed”The bar is a layer-shell surface, not a toplevel, so it does not
appear in hyprctl clients and a wl: hypr-clients probe will not see it.
Assert it with a screenshot (wl: screenshot with artifact_not_uniform) or
via the supervised service’s own stable-uptime check.
Two degradations are expected in a container and are not defects: polkit logs
failed to create subject: No session for pid (it wants a logind session),
and the shell reports Layershell screen does not correspond to a real screen on a headless output.