Single-script builder (nosignal.sh) that turns a stock Arch Linux ISO into a fully-offline installer for a themed Hyprland + caelestia (Quickshell) desktop: matching SDDM greeter, Btrfs/Limine bootable snapshots, chwd-style GPU detection, and a curated "os updates" layer (keybind cheatsheet, settings panels, system polish, on-box management skill). See README.md. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2.8 KiB
Executable file
NoSignal — settings app "Updates" page
The Caelestia shell (caelestia-shell 2.0.2) settings app has an Updates
page under System that's an upstream "under construction" placeholder. NoSignal
fills it in as the GUI face of nosignal-update.
What the page shows / does
- Pending updates: official repos (
checkupdates), AUR (yay -Qua), Flatpak, and NoSignal layer migrations not yet applied - History: last full system upgrade (from pacman.log), last check time
- Check for updates now — refreshes the counts
- Update now — runs
nosignal-updatein a floating terminal (TUI.floatrule), so sudo and pacman prompts stay visible and honest
Architecture (two layers, deliberately)
Backend (robust, zero fragility):
nosignal-update-check→~/.local/bin— writes~/.local/state/nosignal/update-status.json; the page reads this cache so it opens instantlynosignal-update-check.timer(systemd user) — refresh every 6h (+5min after boot); the JSON is also usable for icon badges later- Needs
pacman-contrib(forcheckupdates)
UI (a patch on a moving upstream — see caveat):
UpdatesPage.qml— written in the shell's own idiom (PageBase, InfoRow, NavRow, Process/StdioCollector); copied into/etc/xdg/quickshell/caelestia/modules/nexus/pages/(untracked file — pacman upgrades leave it alone)patch-updates-page.sh— swaps the first SystemPlaceholderCompinPageCompRegistry.qmlfor the real page (backs up to.pre-nosignalonce; idempotent; first match only, so the Plugins stub is untouched)- Pacman hook (
/etc/pacman.d/hooks/nosignal-updates-panel.hook) — shell upgrades revertPageCompRegistry.qml, so the hook re-runs the patch after everycaelestia-shellinstall/upgrade
Caveat for the builder
The QML patch tracks upstream caelestia-shell (2.0.2 at time of writing).
If upstream reshapes PageCompRegistry.qml, the perl regex won't match — the
patch script then warns and leaves the file untouched (settings app keeps
working, page just stays a placeholder). Upstream also has a commented-out
"Display" page and a "Plugins" stub, suggesting they may ship their own pages
eventually; if their Updates page lands, drop this patch and keep the backend.
Install
sh ~/Downloads/updates-panel/install-updates-panel.sh # needs sudo for the patch + hook
Then restart the shell (Ctrl+Super+Alt+R) and open Settings → Updates.
Also wired into nosignal-update as migration 1781236800-updates-panel.sh.
Packaging
- Add
pacman-contribto the package list. - Bake:
nosignal-update-check(+ enable the user timer), the patched/copied QML (or run the patch in the image build), and the pacman hook with the user's home path. - Patch regex targets caelestia-shell 2.0.2.