Skip to content

Omarchy 4 prep: Quickshell shell migration, menu selector compatibility, resume monitor, QML lint workflow#23

Open
timmo001 wants to merge 51 commits into
distro/arch-omarchyfrom
omarchy-4-prep
Open

Omarchy 4 prep: Quickshell shell migration, menu selector compatibility, resume monitor, QML lint workflow#23
timmo001 wants to merge 51 commits into
distro/arch-omarchyfrom
omarchy-4-prep

Conversation

@timmo001

@timmo001 timmo001 commented Jun 10, 2026

Copy link
Copy Markdown
Owner

Summary

Prepares and carries out the shell-and-bar half of the Omarchy 4 Quickshell migration: relocates the Home Assistant bar producer, adds reusable Quickshell bar-widget plugins, generates the per-host shell.json on stow, removes Waybar from the dot tooling, 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. Rebased onto the current distro/arch-omarchy.

Migration plan and remaining work: dot-migration/omarchy-quickshell/README.md

Complete

Quickshell bar migration (VM-validated)

  • ha-bar-module relocated from the Waybar repo for Quickshell (parent detection, no WAYBAR_* env)
  • timmo.command and timmo.stream-command reusable bar-widget plugins (per-class colours, hide classes, click actions, IPC refresh, grey loading placeholder)
  • Per-host ~/.config/omarchy/shell.json auto-generated on dot stow (dot/src/lib/omarchyShellConfig.ts), built-ins mapped through, custom widgets instantiated with their command/clicks/colours
  • Custom modules routed through the timmo.* widgets rather than the built-in command module
  • Grey loading placeholder for the git modules plus on-resume IPC refresh; git watcher cache/lock reset preserved

Waybar removal

  • Waybar integration removed from dot (repo sync, doctor checks, git-diff cache) and remaining launch/cache leftovers cleaned up; the timmo001/omarchy-waybar repo is retained but no longer cloned

Shell-script and tooling compatibility

  • menu_select() helper in twitch-menu, workspace-menu, workspace-relayout, targeting Omarchy 4 only (Walker fallback dropped)
  • on-resume-monitor dbus sleep/wake monitor plus dot-on-resume-monitor.service, with a dot doctor check for script and unit presence/enablement
  • systemd doctor checks deduplicated behind a shared checkRequiredUserUnitSetup helper (no behaviour change)
  • tmux adopts Omarchy 4 keybindings, keeping the custom set-titles

CI and docs

  • .github/workflows/quickshell-lint.yml runs qmllint over all *.qml (module-dependent categories disabled so genuine syntax errors still fail)
  • Docs scrubbed of Waybar; migration plan trimmed to the remaining work

What's left

Tracked in the linked migration plan, not in this PR:

  • Hypr Lua migration and its VM validation (timmo001/omarchy-hypr)
  • Remaining VM validation (Hypr start/reload/configerrors, lock/idle/wake, network)
  • Promotion criteria and open decisions in the migration README (future omarchy-quickshell repo layout, upstream PR status, git-modules-as-QML-plugin, HA-streaming approach, shared vs per-host config)
  • Follow-up: the temperature/current-next-event icons are currently baked into ha-bar-module; they should move into bar config (Quickshell widget config here, Waybar format on the default branch)

Validation

  • bash -n passes on all modified shell scripts
  • bunx tsc --noEmit, bun run build, and bun run format all pass
  • qmllint (module-dependent categories disabled) passes on both QML widgets; an intentional syntax error was confirmed to fail
  • Bar VM-validated: plugins discovered, parsed values and colours render, hiding works, loading placeholder resolves, dot doctor clean

@timmo001

Copy link
Copy Markdown
Owner Author

@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)

Copilot AI commented Jun 10, 2026

Copy link
Copy Markdown

@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 wo...

Added a dedicated Lint Quickshell workflow (.github/workflows/quickshell-lint.yml) in fa0428e, formatted to match the existing workflows. It installs Qt 6's qmllint and runs it over all *.qml files. Since the Quickshell.* / qs.* modules aren't available in CI, the import/type/property/unqualified/signal categories are disabled so qmllint validates QML syntax and structure (real parse/syntax errors still fail the run). It triggers on *.qml changes (and the workflow file itself), separate from the dot build workflow.

Copilot AI changed the title Omarchy 4 prep: Quickshell shell migration, menu selector compatibility, resume monitor Omarchy 4 prep: Quickshell shell migration, menu selector compatibility, resume monitor, QML lint workflow Jun 10, 2026
@timmo001 timmo001 force-pushed the omarchy-4-prep branch 15 times, most recently from 9aca7ba to 9dd47f0 Compare June 14, 2026 22:27
@vercel

vercel Bot commented Jun 14, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
dotfiles Ready Ready Preview, Comment Jun 27, 2026 9:54am

timmo001 added 30 commits June 27, 2026 10:53
Fresh init only set OMARCHY_HOST transiently for its own process and
never enabled the resume recovery monitor, so a clean install left dot
doctor warning about an unset host and a disabled service.

- Write OMARCHY_HOST to /etc/environment during init (idempotent), so
  pam_env exposes the selected host to the graphical session, status
  scripts, and dot doctor without a transient env.
- Enable dot-on-resume-monitor.service alongside the doctor startup
  timer, generalising the enable logic into a shared enableUserUnit.
dot stow and dot install unstowed each package before restowing, which
briefly removed every hypr symlink (hyprland.lua included). Hyprland's
live-config autoreload caught the gap and dropped into emergency mode.

Skip the unstow-then-restow for the hypr package only (plain stow and
stow --adopt stay idempotent on correct links) and reload Hyprland
afterwards. Other packages keep the existing behaviour.

Sync the hypr-stow notes in AGENTS, README, and the dotfiles-stow skill.
Regenerate the dot command reference for the dropped Waybar and Secret
Service doctor checks, and update the prose: drop the waybar Omarchy repo
from the managed repo lists and init paths, switch the bar-agnostic git
examples to the Omarchy 4 Quickshell bar, and remove the status-bar
module-wiring claims that dot doctor no longer verifies.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants