Fix installer hyprpm headers and editor env - #5
Open
avdrav1 wants to merge 59 commits into
Open
Conversation
- Replace Miasma waybar theme with Quickshell Rise - Install via official installer with V1 version and Claude backend - Add autostart hook for post-boot startup - Remove waybar stow from dotfiles (no longer needed) Co-Authored-By: Oz <oz-agent@warp.dev>
Co-Authored-By: Oz <oz-agent@warp.dev>
- Remove install-kiro-ide.sh and install-kiro-cli.sh from install-all.sh - Remove install-mpd.sh, install-rmpc.sh, install-music-tools.sh from install-all.sh - Remove mpd/rmpc stow profiles from install-dotfiles.sh - Bump Node.js from latest:20 to latest:22 in install-nodejs.sh Co-Authored-By: Oz <oz-agent@warp.dev>
…upport - Store patched mainstream-quickshell-git PKGBUILD in quickshell/ with cpptrace removed and -DCRASH_HANDLER=OFF (cpptrace not in AUR) - install-theme.sh: add/remove a fallback Arch mirror around pacman calls to handle packages missing from stable-mirror.omarchy.org - install-theme.sh: install all Qt6 deps required by the Rise bar - install-theme.sh: build quickshell from local PKGBUILD instead of installing stock quickshell 0.2.1 (which lacks IdleInhibitor) Co-Authored-By: Oz <oz-agent@warp.dev>
Move monitor scale/resolution into the git-tracked overrides file so it persists across machines and rebuilds (monitors.conf is untracked and omarchy-managed). Override is sourced last, so it wins. Co-Authored-By: Oz <oz-agent@warp.dev>
Switch install-claude-desktop.sh to the Cowork-capable claude-desktop-bin AUR package (replacing the archived aaddrick build, preserving ~/.config/Claude) and add install-claude-cowork-service.sh to install the native Cowork backend and enable the claude-cowork systemd user service. Wire both into install-all.sh and document them in WARP.md. Co-Authored-By: Oz <oz-agent@warp.dev>
- install-claude-desktop.sh and install-claude-cowork-service.sh now run 'yay -S --needed' unconditionally (install if missing, update if behind, no-op if current) instead of early-exiting when already installed. - Harden archived-aaddrick removal: match the literal installed package via 'pacman -Qq | grep -qx' so it can't remove claude-desktop-bin's provides=claude-desktop alias. - install-all.sh cd's to its own directory so relative installer paths resolve when invoked by absolute path. - WARP.md: note the two claude scripts install-or-update to the latest. Co-Authored-By: Oz <oz-agent@warp.dev>
hyprland-overrides.conf now sources ~/.config/hypr/monitors.local.conf and reuses $MONSCALE for lid/keybind rules, so the per-machine scale lives in one untracked local file. Add monitors.local.conf.example template and have install-hyprland-overrides.sh seed the local file on fresh builds. Co-Authored-By: Oz <oz-agent@warp.dev>
Replace the untracked local-file approach with git-tracked per-host files in hosts/. install-hyprland-overrides.sh now symlinks ~/.config/hypr/monitors.local.conf -> hosts/<hostname>.conf (seeding from hosts/default.conf on new machines). Adds hosts/dellxps13.conf (scale 1.5) and hosts/default.conf; removes monitors.local.conf.example. Co-Authored-By: Oz <oz-agent@warp.dev>
Co-Authored-By: Oz <oz-agent@warp.dev>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This reverts commit ce1f6cb.
Restore work that was lost when main was reset back to 71ce027; the commits survived only via a stash ref (tip 7d26524) and are re-applied here as files: - installers: install-editor.sh, install-aerc-mail.sh, install-snappy-switcher.sh, install-syncthing.sh, install-vivaldi.sh - host configs: hosts/av-framework.conf, hosts/hp-elite-book.conf - wiring: install-all.sh (calls the 5 scripts), install-dotfiles.sh (stow aerc-mail + snappy-switcher), hyprland-overrides.conf (snappy-switcher keybinds + cursor no_warps) - syncthing/repo infra: .gitignore, .stignore, .stfolder marker - stop tracking .claude/settings.local.json (now gitignored; kept on disk) Co-Authored-By: Oz <oz-agent@warp.dev>
The Quickshell Rise bar's Bluetooth widget shells out to `bluetoothctl` (from bluez-utils) to determine power state and connected-device count. Without it the widget always renders the disabled icon even though Bluetooth works. Add bluez-utils to the bar's dependency install. Co-Authored-By: Oz <oz-agent@warp.dev>
The cleanup step removed ~/.config/snappy-switcher/config.ini before stowing. Once that dir is folded into a single stow symlink, the path resolves through the symlink and deletes the tracked config.ini from the dotfiles repo working tree, which disables the Dos-Moos theme. Drop it from the rm list and instead clear only a real (non-symlink) config dir before stowing. Co-Authored-By: Oz <oz-agent@warp.dev>
snappy-switcher reads config.ini only at daemon startup, so a running instance keeps the default theme until restarted. After applying the Dos-Moos theme, restart the daemon (guarded on an active Hyprland session and the binary being present, kept non-fatal) so the switcher picks up its themed config automatically. Co-Authored-By: Oz <oz-agent@warp.dev>
- install-vscode.sh: visual-studio-code-bin (AUR); config stowed from dotfiles vscode package into ~/.config/Code/User/. - install-obsidian.sh: obsidian (extra repo). No dotfiles profile — settings are per-vault in each vault's .obsidian/ folder. - install-slack.sh: slack-desktop (AUR). No dotfiles profile — Electron profile in ~/.config/Slack holds per-machine secrets. Wire all three into install-all.sh (apps block). install-dotfiles.sh now stows the vscode package (mkdir ~/.config/Code/User first so only the two files symlink, not the whole Code dir). WARP.md reference entries added. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Omarchy 4 ("quattro") moved Hyprland config from hyprlang .conf to Lua.
The upgrade force-installs stock hyprland.lua and leaves .conf files on
disk but unread, so the `source = .../hyprland-overrides.conf` line this
repo appends was silently doing nothing on the upgraded machine.
Add a parallel Lua tree under hypr/lua/ and teach the installer to detect
which parser a machine uses, so a fleet can be mid-migration. The legacy
.conf tree is untouched and still installs on 3.x machines; both must be
kept in sync until every machine has moved.
Three Lua-parser behaviours drove the design, all of which fail silently:
* Monitor scale cannot be set from this repo's modules at all.
omarchy-hyprland-monitor-watch polls every 2s and reapplies the internal
display's scale, sed-parsing it out of ~/.config/hypr/monitors.lua and
falling back to a hardcoded 2 when that isn't a bare number -- which the
stock `= "auto"` triggers, and which is why this machine sat at 2x.
install-hyprland-overrides.sh now generates that file from the host file
instead, so changing scale requires an installer re-run, not just a
hyprctl reload.
* require() caches, and Hyprland's bootstrap.lua clears package.loaded only
for its own prefixes, so a required entry point would load once and never
re-run on reload. hyprland.lua reaches init.lua via dofile and init.lua
clears the supplement. cache itself.
* Plugins are reachable only through their Lua namespace. The scrolloverview
binds now go through hl.plugin.scrolloverview.* -- hyprctl dispatch
evaluates Lua, so the scrolloverview:* dispatcher names are unreachable.
The module no-ops when the plugin isn't built.
Per the user's call, the custom lid-switch and monitor-toggle binds are
dropped in favour of Omarchy's built-in clamshell handling and
SUPER+CTRL+Delete; they used `hyprctl keyword`, which the Lua parser
rejects outright.
Verified on hp-elite-book: no config errors, scale stable at 1.0 across ten
daemon polls, one bind per rebound key (including Omarchy's doubled
ALT+TAB), and the scale workflow round-trips 1 -> 1.5 -> 1.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
fcitx5's "Quick Phrase" addon defaults to a Super+grave trigger, which collides with the SUPER+` workspace-overview bind. fcitx5 grabs the key at the input-method layer, so Hyprland never sees a conflict -- the overview opened AND a Quick Phrase prompt popped on every press, with nothing in this repo or hyprctl binds to explain it. The config itself lands in the dotfiles repo (new fcitx5 stow package); wire it up here: add the file to install-dotfiles.sh's removal list and stow it. The mkdir -p ahead of the stow is load-bearing -- on a machine where fcitx5 has never run, ~/.config/fcitx5 does not exist and stow folds the whole dir into a single symlink, dumping fcitx5's runtime state (profile, cached_layouts) into the dotfiles repo. Same trap already documented for the vscode package. Also note the collision at both SUPER+grave bind sites (Lua and legacy hyprlang trees), since that is where you would look when debugging it and the cause lives in another repo. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The host files claimed scale 1, but that was an untouched copy of the
default and would be unreadable on the 13.5" 2880x1920 panel. The live
scale was actually 2: ~/.config/hypr/monitors.lua was still stock Omarchy
("auto"), which omarchy-hyprland-monitor-watch can't parse, so it fell
back to its hardcoded 2.
1.5 divides evenly (-> 1920x1280 effective), avoiding fractional-scaling
blur. Updated both the Lua and legacy hyprlang host files.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
install-theme.sh runs under `set -euo pipefail` and did the Rise bar first, so a bar failure skipped theming entirely. On Omarchy 4 it failed every time: the guard checked for a package named exactly `quickshell`, but omarchy 4 installs `quickshell-git` (a dependency of omarchy-dev). Nothing was removed, then `makepkg -si --noconfirm` built fine and `pacman -U` hit the PKGBUILD's conflicts=(quickshell quickshell-git) -- --noconfirm declines the replace prompt, so it aborted before the theme was ever installed. - Move the theme install (and the snappy-switcher restart that depends on it) to the top. It has no dependency on the bar. - Skip the Rise bar when omarchy-shell exists. Omarchy 4 ships its own quickshell-based shell, and our pinned mainstream-quickshell-git is an older commit than what omarchy-bar runs on, so installing it there means either a hard conflict or a downgrade under omarchy's own shell. - Check both quickshell and quickshell-git in the removal guard, so the Omarchy 3 path can't hit the same name-matching bug. install-all.sh has no `set -e`, so the failure was invisible -- the run kept going and still printed the manual-steps summary, reading as success. Route every installer through a `run` helper that records failures and reports them at the end, exiting non-zero. Per-installer failures stay non-fatal. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
install-claude-desktop.sh: claude-desktop-bin was removed from the AUR. Switch to Anthropic's official claude-desktop build (ships Chat, Cowork, and Claude Code) and rework the migration loop to strip the superseded claude-desktop-bin instead of the new package's own name. install-tailscale.sh: `tailscale status | head -5` under `set -o pipefail` exits 141 (SIGPIPE) once the tailnet has >5 entries, making install-all.sh report a false failure. Swallow it with `|| true`. Retire install-claude-cowork-service.sh: its AUR package is deprecated and Cowork now ships in the official desktop app. Remove the script, its install-all.sh line, and WARP.md references. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
install-theme.sh skipped Rise entirely whenever omarchy-shell was present, so Omarchy 4 machines got the Dos-Moos theme but kept the stock bar. The skip existed because the script built a pinned mainstream-quickshell-git from quickshell/PKGBUILD, which declares conflicts=(quickshell quickshell-git) -- installing it on quattro meant a pacman conflict or downgrading the package omarchy-bar itself runs on. That build is no longer needed. Upstream's dependency check only requires `qs` on PATH, and it now detects quattro directly (qsr_has_quattro), hiding the stock bar under --autostart instead of fighting it. Verified on omarchy 4: Rise starts and reaches ready=true against the stock quickshell-git, with no package changes at all. So drop the guard, the PKGBUILD build, the pacman -Rdd force-removal, the Qt6 build-dep list and the fallback-mirror workaround it needed. What remains is one pacman -S for upstream's actual prerequisites plus the installer call. The fonts move here deliberately: upstream installs them via sudo pacman from inside a set -e script, so a machine missing them aborts mid-install on a sudo prompt. --autostart also replaces the hand-rolled post-boot hook download. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Every installer that ran sudo/yay/systemctl unconditionally failed the install-all.sh summary on an already-provisioned machine: `yay -S` pre-authenticates via sudo before it works out there's nothing to do, so guardless scripts always tried to elevate and died in a non-interactive run. Guard each privileged step on the work actually being needed (the existing command -v convention), so a re-run is a sudo-free no-op: - ghostty/tmux/stow: guard yay behind `command -v` - tailscale: enable --now only when not already enabled+active - theme: install only the missing bar packages - scroll-overview: install only missing toolchain pkgs; copy the pacman hook only when it differs - claude-desktop: retry the AUR fetch to ride out transient resets Also authenticate sudo once up front in install-all.sh and keep it warm for the whole run, failing fast with an actionable message when there's no tty instead of piling spurious failures into the summary. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
install-shibumi.sh matched Rise with `pkill -f 'quickshell/bar/shell.qml'`, but that path is Rise's *config path* -- it appears only in Quickshell's instance registry, never in the process cmdline, which reads `qs -n -d -c bar`. The pattern never matched, and the trailing `|| true` swallowed the miss, so the old Rise bar kept running and drawing over Shibumi while the script reported success. Worse, step 3 then deleted its config dir, leaving a bar with no config behind it. Query Quickshell's registry instead and kill by pid, selecting instances whose config path is under ~/.config/quickshell/bar/ so the stock omarchy-shell instance (/usr/share/omarchy/shell/shell.qml) is structurally excluded. Falls back to plain kill, and no-ops when qs isn't installed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
install-hyprland-scroll-overview.sh only ran `hyprpm update` in the branch for an already-added plugin. On a machine where hyprpm has never run -- and on any machine whose Hyprland was upgraded since it last did -- it went straight to `hyprpm add`, which exits immediately with ✖ Headers outdated, please run hyprpm update. hyprpm refuses every operation until the headers under /var/cache/hyprpm/$USER/headersRoot match the running Hyprland, and it bails there: before it consults upstream's commit pins, and before it clones the plugin at all. The PLUGIN_FALLBACK_REV retry hit the identical wall, so under `set -e` the script failed leaving an empty /var/cache/hyprpm/$USER with no state.toml to explain why, and `hyprpm list` empty. That made the existing "no commit pin" comment misleading as a diagnosis: the pin gap is real (upstream stops at v0.55.4, Arch ships 0.56.2) but is never reached. The plugin itself compiles clean against 0.56.2 headers, so the fallback path does work once headers exist. Hoist `hyprpm update` ahead of the add and run it unconditionally -- it is the only thing that installs those headers (clone Hyprland at the running commit, configure, `sudo make installheaders`), and it doubles as the refresh path for an already-added plugin, so the branch below no longer needs its own call. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q3e9CKwrcZwGAm56jxqxJF
install-editor.sh guarded on ~/.config/uwsm/default and `exit 0`d when it was absent. Omarchy 4 no longer creates that file -- it is still sourced when present, but the supported override point is now ~/.config/uwsm/env.d/*, as /usr/share/omarchy/default/uwsm/env.d/10-omarchy says itself. So on every current install the script skipped its entire job and returned success: install-all.sh recorded no failure, EDITOR stayed at Omarchy's default and VISUAL was never set at all. The early exit also made the last step unreachable, and that step is the one that matters on Omarchy 4. The session default is `EDITOR="omarchy-launch-editor --inline"`, and that launcher reads ~/.local/state/omarchy/defaults/editor (falling back to nvim), so writing that file redirects $EDITOR, the SUPER+SHIFT+N keybind and `omarchy default editor` at once. `fresh` is already on the launcher's inline whitelist, so it opens in the calling terminal rather than a new window. - Write the Omarchy state file first and unconditionally. - Branch on the layout the machine actually has rather than assuming the legacy one: edit ~/.config/uwsm/default where it exists, otherwise generate ~/.config/uwsm/env.d/50-supplement-editor. uwsm's process_config_dirs_reversed walks the XDG hierarchy in increasing priority and sources <dir>/uwsm/env.d/*, so a ~/.config drop-in loads last and beats 10-omarchy. - Generate that drop-in in full so re-runs overwrite it instead of having to parse back what a previous run wrote. - Drop the stale claim that Omarchy's default editor is zeditor/Zed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q3e9CKwrcZwGAm56jxqxJF
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.