BarWidget.qml owns the bar button and popup. Its two dimension fields share
one component. Service.qml owns settings, binding discovery, and compositor
requests once per plugin, including when the bar appears on several monitors.
lib/client.lua owns the runtime window rules, event subscriptions, launch
guard, and geometry for org.omarchy.cliamp.quake. It sizes the window against
its own monitor, including rotation, scaling, and reserved space. Ordinary
CLIamp windows use a different app ID.
lib/bindings.lua evaluates the configured Lua bindings with a recording
adapter because Hyprland exposes opaque dispatcher IDs. It recognizes CLIamp
launch commands and preserves their binding options. The source configuration
is not rewritten. scripts/launch_cliamp.sh uses Omarchy's TUI launcher and
passes the optional thunder recording when present.
Window changes dispatch immediately. Typed values remain drafts until Enter
or focus loss. Settings are saved through Omarchy's updateEntryInline API;
the 250 ms save timer does not delay geometry. Empty widget snapshots during
reload must not reset saved dimensions.
Cleanup remains embedded in the service so it can run after the checkout has been removed. It distinguishes reloads from disable/removal, restores native bindings, and closes only the managed window, including a pending launch. No external service, setup file, or window rule is installed on disk.
Validated runtime: Omarchy 4.0.2, Quickshell 0.3.1, Qt 6.11.2, and Hyprland
0.56.2. Use Qt 6 tools from /usr/lib/qt6/bin, not the Qt 5 tools on PATH.
omarchy plugin validate .
shellcheck scripts/*.sh tests/*.sh *.sh
luac -p lib/*.lua tests/*.lua
for test in tests/test_*.sh; do
bash "$test" || exit
donetests/test_qml.sh supplies the host imports and runs Qt Quick and Quickshell
checks. It needs a Wayland session and OMARCHY_PATH=/usr/share/omarchy.
Commands and host interfaces are mocked; it does not change desktop settings.
Dynamic host properties and Quickshell's exit-status metadata produce known
lint warnings. Imports alone do not establish runtime correctness.
Live checks cover typed and stepped dimensions, alignment, repeated toggles, workspace changes, rotated/scaled monitors, popup dismissal, reloads, and disable/removal. Preserve the user's configuration and keep interactive tests on the dedicated test host.