Omarchy 4 prep: Quickshell shell migration, menu selector compatibility, resume monitor, QML lint workflow#23
Omarchy 4 prep: Quickshell shell migration, menu selector compatibility, resume monitor, QML lint workflow#23timmo001 wants to merge 1 commit into
Conversation
|
@copilot add a github workflow (based on the others in terms of formatting) to validate quickshell files. something like qmllint or similar could work here. Put it in a dedicated workflow seperate from the dot build workflow, this will be dedicated to quickshell or qml (qt meta language) |
Added a dedicated |
9aca7ba to
9dd47f0
Compare
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
d2a7c41 to
b6f8823
Compare
Summary
Prepares and carries out the shell, bar, and Hyprland-config half of the Omarchy 4 migration: relocates the Home Assistant bar producer, adds reusable Quickshell bar-widget plugins, generates the per-host
shell.jsonon stow, removes Waybar from thedottooling, migrates the Hyprland config to Lua as a stowed package, and keeps menu selection, the resume monitor, and a QML lint workflow in place. The bar migration is VM-validated.Supersedes #12 (closed) and the earlier #11. Sits on the current
distro/arch-omarchy, which carries thedotMCP server andmcp-sync, the balanced-default power-profile tooling, host-scoped GPU env, and the shared lint CI; this branch adapts those recent hypr and power-profile changes to its Lua config and the Omarchy 4 menu selector, since the.conf->.luamigration and the Walker drop would otherwise have lost or broken them.Upstream baseline:
basecamp/omarchy#5856(theomarchy-shellbranch), extension commit1bb4394, default configconfig/omarchy/shell.json. If that PR advances, diff its new head against1bb4394before re-checking the items below.Complete
Quickshell bar migration (VM-validated)
ha-bar-modulerelocated from the Waybar repo for Quickshell (parent detection, noWAYBAR_*env)timmo.commandandtimmo.stream-commandreusable bar-widget plugins (per-class colours, hide classes, click actions, IPC refresh, grey loading placeholder)~/.config/omarchy/shell.jsonauto-generated ondot stow(dot/src/lib/omarchyShellConfig.ts), built-ins mapped through, custom widgets instantiated with their command/clicks/colourstimmo.*widgets rather than the built-in command moduleon-resumeIPC refresh; git watcher cache/lock reset preservedWaybar removal
dot(repo sync, doctor checks, git-diff cache) and remaining launch/cache leftovers cleaned up; thetimmo001/omarchy-waybarrepo is retained but no longer clonedShell-script and tooling compatibility
menu_select()helper intwitch-menu,workspace-menu,workspace-relayout, targeting Omarchy 4 only (Walker fallback dropped)on-resume-monitordbus sleep/wake monitor plusdot-on-resume-monitor.service, with adot doctorcheck for script and unit presence/enablementcheckRequiredUserUnitSetuphelper (no behaviour change)Hyprland config migrated to Lua
.confto Lua (hyprland.lua,bindings.lua,envs.lua,input.lua,looknfeel.lua,monitors.lua,autostart.lua), with per-host overrides underhosts/<host>/selected by the~/.config/hypr/hostsymlinkSUPER+/removed)dot stowlays the Hypr package down non-destructively (--no-folding, skipping the usual unstow/restow) so the livehyprland.luasymlink never vanishes mid-stow and Hyprland's autoreload does not drop into emergency mode;dot initpersistsOMARCHY_HOSTand enables the resume monitordot updatereloads the running shell only when the generatedshell.jsonchanges, forcingQT_QPA_PLATFORM=waylandon the restart (interactive shells setwayland;xcbviazsh)Omarchy 4 compatibility and carried base changes
power-profile-menumoved off the directomarchy-launch-walker --dmenupath toomarchy-menu-select, matching the other Omarchy 4 menu scripts; the base added it against Walker, so it would not have worked here as-iskbd-backlight-rearmnow re-arms on resume throughon-resume(host-guarded, a no-op off the laptop) instead of the laptophypridle.confthe Lua migration removed; covers suspend/resume (not the idle-lock screen-wake path, which would need a host hypridle override this branch deliberately dropped).conf->.luamigration: global Nvidia dropped fromenvs.lua, scoped to the desktop host, withLIBVA_DRIVER_NAME=iHDon the laptop (the old global Nvidia env was wrong on the Intel laptop)SUPER+CTRL+P->power-profile-menu) and the laptoppower-profile-daemonautostart carried intobindings.luaand the laptopautostart.luaworkspace-relayout's free-text layout-name prompt moved off the removed Walker (omarchy-launch-walker --inputonly) to the nativeomarchy-menu-input; the select-style menus already useomarchy-menu-select, so no script still depends on Walkersensor.meter_plus_433c_temperature) dropped in the Waybar -> Quickshell migration, added as a second plain temperature entry inomarchyShellConfig.tsalongside the main one (the Waybar--gate-entity/--gate-belowgating was not brought across)Future rebase process
origin, inspect the neworigin/distro/arch-omarchycommits first, and note base changes that overlap this PR before starting the rebaseorigin/distro/arch-omarchy, then read every conflict in context rather than taking one side mechanically.conf, Waybar, Walker, or hyprlock pathshyprlock.conf/hypridle.confremoval, but only after checking whether the base added new behaviour that needs a Lua or shell-config equivalentCI and docs
.github/workflows/quickshell-lint.ymlrunsqmllintover all*.qml(module-dependent categories disabled so genuine syntax errors still fail)What's left
The Hyprland Lua migration and the shell/bar work are in this PR. What remains before it is fully done:
On-device VM validation
hyprctl reloadsucceeds;hyprctl configerrorsis clean (or only understood upstream issues)hypridleafter_sleep_cmd; lock, idle, screensaver, and wake behave through the Omarchy shell servicesFollow-ups
shell.jsononce the Omarchy 4 shell idle service is active, then treathypridle.conf/hyprlock.confas Omarchy 3-only; confirm the laptophyprsunsetdoes not conflict with Omarchy 4 night lightcurrent-next-eventicons are baked intoha-bar-module; they should move into bar config (Quickshell widget config here, Waybarformaton the default branch)Open decisions
omarchy-quickshellrepo (this PR consolidates the formerdot-migration/plan)shell.jsonwith host-specific scripts, or separate generated per-host configsValidation
bash -npasses on all modified shell scripts, including the reworkedpower-profile-menuandon-resumebunx tsc --noEmit,bun run build, andbun run formatall passed before the latest rebaseqmllint(module-dependent categories disabled) passes on both QML widgets; an intentional syntax error was confirmed to faildot doctorcleandotchanges (MCP server/sync, notes tools, doctor checks,env.tskeys) merged into the Waybar-removal and shell wiring;env.ts,index.ts,spec.ts, andmenu.tsverified to keep both sides.commands.mdregenerated from the merged spec (now coversdot mcp/dot mcp-sync); a freshmise run check/bun run buildis still recommendedReference: Quickshell extension model
Rules that inform the QML and plugin decisions
~/.config/omarchy/shell.jsonis canonical once it exists; it does not deep-merge with the default config.omarchy.*namespace; custom IDs use a separate namespace such astimmo.*.~/.config/omarchy/bar/modules/<id>.qml, or an entry can provide an explicitsourcepath.~/.config/omarchy/plugins/<id>/manifest.jsonand can declarebar-widget,panel,overlay,menu, orservicekinds.omarchy-shell, so custom QML should stay small and auditable.signal = RTMIN+Nrefresh does not map directly - use polling or shell IPC.class/altmainly for active styling.