NoSignal-OS/os updates/ONBOX-AI-NOTES.md
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

7.2 KiB

NoSignal — notes for an AI agent working on this machine

You are on NoSignal: Arch Linux + Hyprland + the Caelestia shell (Quickshell)

  • SDDM (themed greeter). A "NoSignal layer" of config and tooling sits ON TOP of stock Caelestia. Read this before changing desktop/system config — your job is to help the user manage their machine safely.

Config layout — what is safe to edit

  • ~/.config/caelestia/the NoSignal override layer (edit here):
    • hypr-user.conf — user binds/rules/exec-once; sourced LAST, so it wins. This is the right place for new keybinds. unbind = works here.
    • hypr-vars.conf$variables ($terminal, $kb*, gaps, blur…); sourced BEFORE keybinds.conf consumes them.
    • shell.json, shell-tokens.json — Caelestia shell appearance/behaviour.
    • Deleting any of these files restores stock Caelestia behaviour.
  • ~/.config/hypr is a SYMLINK into ~/.local/share/caelestia (the dotfiles clone). Several other ~/.config entries (foot, fish, fastfetch, uwsm) are symlinks into it too. Never replace these symlinks with copies and never edit the clone's hyprland.conf directly — use hypr-user.conf.
  • ~/.config/hypr/scripts/wsaction.fish and configs.fish are bash ports kept under their original .fish names (the stock config calls those paths). Keep the names and the bash shebang.

Updates

  • ~/.local/share/nosignal/ — the on-system layer: component sources, the keybindings doc, and nosignal-update/ (the update command + its migrations).
  • nosignal-update = the system update command: snapper snapshot → yay -Syu → run any NEW migrations. Applied migrations are tracked in ~/.local/state/nosignal/applied — do not re-run or edit by hand.

Keybindings

  • Super+K (aliases Super+/, Super+F1) = searchable fuzzel cheatsheet.
  • Source of truth: ~/.local/share/nosignal/NoSignal-keybindings.md — the cheatsheet is GENERATED from it (nosignal-keybinds-gen). If you add a bind in hypr-user.conf, document it in that file too.
  • Layout follows Omarchy defaults: Super+Return terminal (kitty, bash), Super+W close, Super+Space launcher, Super+Tab next workspace, Super+Grave = workspace overview, Super+I Shelly store, Super+Ctrl+H monitor editor, Super+Shift+number move-to-workspace (bound by KEYCODE — GB layout).
  • Super+C / Super+V = universal copy/paste (class-aware sendshortcut; clipboard HISTORY is Super+Ctrl+V). Print = region screenshot → clipboard + ~/Pictures/Screenshots (Shift+Print full). Super+D = dashboard/calendar (communication workspace → Super+Shift+D). Super+M = CLIAmp, the default music player (floating TUI; audio files open in it via ~/.config/mimeapps.list). The shell's music/MPRIS panel is Super+Shift+M.

Shell / desktop architecture gotchas

  • The Caelestia shell runs from /etc/xdg/quickshell/caelestia. NoSignal patches THREE things there, each re-applied by its own pacman hook after every caelestia-shell upgrade: the Settings → System → Updates page (PageCompRegistry.qml + pages/UpdatesPage.qml), the Settings → Additions page (same registry + pages/AdditionsPage.qml + Plugins→Additions relabel in PageRegistry.qml; backend = nosignal-additions + additions.json in the layer tree), and the Wi-Fi wrong-password recovery in utils/NetworkConnection.qml. Do NOT create ~/.config/quickshell/caelestia — a user copy shadows /etc/xdg and silently drops the patches (and future ones). If the shell ever fails at login (background but no bar): reproduce with qs -c caelestia -n from a TTY (WAYLAND_DISPLAY=wayland-1) to get the QML error chain; suspect the page patches first.
  • The workspace overview is a separate Quickshell instance (~/.config/quickshell/overview, qs -c overview -d, IPC-toggled by Super+Grave). It is independent of the main shell.
  • The update-status timer (nosignal-update-check.timer, user), hyprmoncfgd (monitor hotplug profiles, user) and hyprmoncfgd-rescan.path (watches ~/.config/hyprmoncfg/profiles/ and bounces the daemon so plain profile saves apply live) are enabled systemd USER units. Status: systemctl --user status <unit>.

Monitors

  • Use hyprmoncfg (Super+Ctrl+H, TUI) — it writes ~/.config/hypr/monitors.conf (+ workspaces.conf), which hypr-user.conf sources. Keep those source = lines; hyprmoncfg refuses to write otherwise.
  • Both the TUI bind and the hyprmoncfgd daemon run with --hypr-config ~/.config/caelestia/hypr-user.conf --monitors-conf ~/.config/hypr/monitors.conf (hyprmoncfg doesn't follow nested source = includes). Keep the flags; the daemon's drop-in lives at ~/.config/systemd/user/hyprmoncfgd.service.d/override.conf.

Login / display manager / gaming

  • SDDM is the display manager. Config drop-ins in /etc/sddm.conf.d/: 10-nosignal.conf (X11 greeter, uwsm session notes) + 20-sddm-theme.conf (themed greeter). The desktop session MUST stay hyprland-uwsm.desktop (uwsm-managed) — plain hyprland.desktop loses caelestia's session env.
  • The greeter theme (/usr/share/sddm/themes/caelestia) mirrors the desktop scheme. After changing wallpaper, run sudo sddm-theme-sync to update the login screen (it does not auto-follow).
  • Gaming Mode is OPT-IN: run sh ~/deckshift/deckshift.sh, then sh ~/.local/share/nosignal/deckshift-login/install-deckshift-login.sh (re-run the fix after any deckshift.sh re-run). Then Super+Shift+S enters the full gamescope/Steam session; Super+Shift+R (inside it) returns. Cold boots always show the password greeter (one-shot autologin). [multilib] is enabled and omarchy-pkg-add & friends are shims in ~/.local/bin.

Packages / system

  • yay for AUR; Shelly (shelly-ui, Super+I) is the GUI store (repos + AUR + Flathub). Flathub remote is preconfigured. Settings → Additions installs curated optional software (DeckShift, Spotify, Once, Obsidian, OBS, Claude Code, Codex, opencode) from official sources only — extend via additions.json in the layer tree, no code changes.
  • The firewall is ufw, enabled with Omarchy-style defaults — it is easy to miss because nothing advertises it: sudo ufw status.
  • The fish package is REQUIRED by caelestia-meta — do not remove it, even though bash is the login/terminal shell.
  • Btrfs + snapper: every pacman transaction snapshots (snap-pac); snapshots are BOOTABLE from the Limine menu (limine-snapper-sync, UKI at /boot/EFI/Linux/nosignal_linux.efi). Worst case: reboot → pick a snapshot.
  • [omarchy] repo in pacman.conf provides prebuilt limine-snapper tools.
  • omarchy-send is installed (LAN file transfer; receive dir ~/Omarchy-Send, TUI in launcher, CLI: omarchy-send -to <alias> <files>). Its config contains a private key — never copy/share ~/.config/omarchy-send/.

Theme

  • Wallpapers: ~/Pictures/Wallpapers/nosignal/ (the OS art set; default foam-sea.png). The colour scheme is Caelestia's dynamic Material scheme, generated FROM the current wallpaper — change wallpaper via the Caelestia UI or caelestia wallpaper -f <file> and the palette follows. The SDDM greeter does NOT auto-follow: run sudo sddm-theme-sync after.