NoSignal-OS/os updates/updates-panel
28allday 19fd794b6b NoSignal — fully-offline Arch → Hyprland desktop installer
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>
2026-06-21 11:03:10 +01:00
..
install-updates-panel.sh NoSignal — fully-offline Arch → Hyprland desktop installer 2026-06-21 11:03:10 +01:00
nosignal-update-check NoSignal — fully-offline Arch → Hyprland desktop installer 2026-06-21 11:03:10 +01:00
nosignal-update-check.service NoSignal — fully-offline Arch → Hyprland desktop installer 2026-06-21 11:03:10 +01:00
nosignal-update-check.timer NoSignal — fully-offline Arch → Hyprland desktop installer 2026-06-21 11:03:10 +01:00
patch-updates-page.sh NoSignal — fully-offline Arch → Hyprland desktop installer 2026-06-21 11:03:10 +01:00
README.md NoSignal — fully-offline Arch → Hyprland desktop installer 2026-06-21 11:03:10 +01:00
UpdatesPage.qml NoSignal — fully-offline Arch → Hyprland desktop installer 2026-06-21 11:03:10 +01:00

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-update in a floating terminal (TUI.float rule), 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 instantly
  • nosignal-update-check.timer (systemd user) — refresh every 6h (+5min after boot); the JSON is also usable for icon badges later
  • Needs pacman-contrib (for checkupdates)

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 System PlaceholderComp in PageCompRegistry.qml for the real page (backs up to .pre-nosignal once; idempotent; first match only, so the Plugins stub is untouched)
  • Pacman hook (/etc/pacman.d/hooks/nosignal-updates-panel.hook) — shell upgrades revert PageCompRegistry.qml, so the hook re-runs the patch after every caelestia-shell install/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-contrib to 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.