nosignal-shell/packaging/DEV.md
28allday 71288e2126 packaging: DEV.md — dev workflow + layout map for the fork
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-13 20:55:11 +01:00

1.8 KiB

nosignal-shell — dev notes

NoSignal's fork of caelestia-dots/shell. We build this (package nosignal-shell, provides/conflicts caelestia-shell) instead of the AUR caelestia-shell, so the interface/layout is ours and pinned — pacman -Syu/yay never overwrites it.

  • Branch: nosignal (cut off the v2.0.2 tag). main tracks upstream (git remote -vupstream = caelestia-dots/shell). Merge upstream into nosignal deliberately when wanted.
  • Install path: /etc/xdg/quickshell/caelestia/ (namespace stays caelestia so caelestia-cli + hypr binds + ~/.config/caelestia/ keep working).
  • Shipping work: commit to nosignal, then bump NOSIGNAL_SHELL_COMMIT in the NoSignal builder (~/Projects/nosignal/nosignal.sh) to the new tip + rebuild.

Live preview loop (edit on host → reload in a VM)

From the NoSignal builder repo: ./vm/run-dev.sh (boots the installed disk with this checkout shared over 9p). In the VM terminal (Super+Return):

curl -fsSL https://raw.githubusercontent.com/28allday/nosignal-shell/nosignal/packaging/dev-mount.sh -o /tmp/d.sh && sudo sh /tmp/d.sh
setsid sh /mnt/fork/packaging/dev-sync.sh >/dev/null 2>&1 &
pkill -9 quickshell; sleep 2; caelestia shell -d

Then edit .qml here on the host — the VM shell auto-reloads in ~2-6s. (dev-mount.sh links the shell at a local copy of the fork; dev-sync.sh polls the 9p mount into that local copy so quickshell's file-watcher fires — 9p itself doesn't propagate inotify.)

Layout map

modules/bar/ (bar) · modules/dashboard/ · modules/sidebar/ · modules/launcher/ · modules/session/ · modules/drawers/ (slide-in panels) · modules/lock/ · modules/nexus/pages/ (Settings) · modules/notifications/ · modules/osd/. Entry point: shell.qml. The compiled engine is plugin/ (C++).