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>
299 lines
14 KiB
Markdown
299 lines
14 KiB
Markdown
# NoSignal — Keybinding Map
|
||
|
||
> **System:** Arch Linux (rolling), hostname `nosignal`, Wayland compositor **Hyprland**.
|
||
> **Base:** [Caelestia](https://github.com/caelestia-dots) dotfiles + shell (QuickShell).
|
||
> **NoSignal layer:** styling flattened, stock apps rebound, overview added, and
|
||
> **the key layout follows Omarchy's defaults** (see
|
||
> `omarchy-keys/README.md` for the full mapping and deviations).
|
||
>
|
||
> **Modifier legend:** `Super` = Windows/Meta key · `Ctrl` · `Alt` · `Shift`.
|
||
> `XF86*` = laptop media/function keys. `mouse_up/down` = scroll wheel.
|
||
>
|
||
> Bindings are **variable-driven**. The tables below show the *resolved* keys
|
||
> (variables from `variables.conf` + overrides applied). See "Source map" at the
|
||
> end for where each value comes from and how to change it.
|
||
|
||
---
|
||
|
||
## 0. Built-in help (NoSignal addition)
|
||
|
||
| Keys | Action |
|
||
|------|--------|
|
||
| `Super+K` | Open the searchable on-screen keybinding cheatsheet (Omarchy key) |
|
||
| `Super+/` | Same (alias) |
|
||
| `Super+F1` | Same (alias) |
|
||
|
||
The cheatsheet is a fuzzel dmenu list — start typing to filter by key or by
|
||
category tag (`[Window]`, `[Apps]`, `[Audio]`, …). Selecting a line copies that
|
||
shortcut to the clipboard (if `wl-copy` is present); it never executes anything.
|
||
|
||
**This very document is the single source of truth.** The on-screen help is
|
||
*generated* from the tables below — `nosignal-keybinds` regenerates the list from
|
||
this `.md` on every launch, so the cheatsheet can never drift from the doc.
|
||
Edit the keymap here and the help updates itself.
|
||
|
||
## 1. Shell & session
|
||
|
||
| Keys | Action |
|
||
|------|--------|
|
||
| `Super+Space` | Open app launcher (Omarchy key) |
|
||
| `Super` (tap & release) | Open app launcher (tapping another key/mouse cancels it) |
|
||
| `Super+Escape` | Session menu (logout / shutdown / reboot) |
|
||
| `Ctrl+Alt+Delete` | Session menu (alias, old key) |
|
||
| `Super+D` | Toggle dashboard — calendar + widgets (was hover-only) |
|
||
| `Super+Alt+Space` | Open Settings (Caelestia nexus) |
|
||
| `Super+N` | Toggle sidebar |
|
||
| `Super+Ctrl+K` | Show all shell panels |
|
||
| `Super+Ctrl+L` | Lock screen (Omarchy key) |
|
||
| `Super+Alt+L` | Restart shell daemon + re-lock (recover a broken lock) |
|
||
| `Super+Shift+Comma` | Clear all notifications (Omarchy key) |
|
||
| `Ctrl+Alt+C` | Clear all notifications (alias, old key) |
|
||
| `Ctrl+Super+Shift+R` | Kill the Caelestia shell (`qs -c caelestia kill`) |
|
||
| `Ctrl+Super+Alt+R` | Restart the Caelestia shell |
|
||
| `Super+Alt+F12` | Fire a test notification (dev/debug) |
|
||
|
||
## 2. Overview (NoSignal addition)
|
||
|
||
| Keys | Action |
|
||
|------|--------|
|
||
| `Super+Grave` | Toggle the overview sidecar (moved off Super+Tab for Omarchy) |
|
||
|
||
## 3. Workspaces
|
||
|
||
| Keys | Action |
|
||
|------|--------|
|
||
| `Super+1`…`9`,`0` | Go to workspace 1–10 |
|
||
| `Super+Tab` | Next workspace (Omarchy key) |
|
||
| `Super+Shift+Tab` | Previous workspace (Omarchy key) |
|
||
| `Super+Ctrl+Tab` | Back to former workspace (Omarchy key) |
|
||
| `Ctrl+Super+1`…`9`,`0` | Go to workspace **group** 1–10 |
|
||
| `Ctrl+Super+Left` / `Right` | Previous / next workspace |
|
||
| `Super+Page_Up` / `Page_Down` | Previous / next workspace |
|
||
| `Super` + scroll up/down | Next / previous workspace |
|
||
| `Ctrl+Super` + scroll up/down | Jump workspace group ±10 |
|
||
| `Super+S` | Toggle special (scratchpad) workspace |
|
||
|
||
## 4. Moving windows between workspaces
|
||
|
||
| Keys | Action |
|
||
|------|--------|
|
||
| `Super+Shift+1`…`9`,`0` | Move window to workspace 1–10 (Omarchy key) |
|
||
| `Super+Alt+1`…`9`,`0` | Move window to workspace 1–10 (alias, old key) |
|
||
| `Ctrl+Super+Alt+1`…`9`,`0` | Move window to workspace **group** 1–10 |
|
||
| `Super+Alt+Page_Up` / `Page_Down` | Move window to workspace ±1 |
|
||
| `Super+Alt` + scroll up/down | Move window to workspace ±1 |
|
||
| `Ctrl+Super+Shift+Right` / `Left` | Move window to workspace +1 / −1 |
|
||
| `Ctrl+Super+Shift+Up` | Move window to special workspace |
|
||
| `Ctrl+Super+Shift+Down` | Move window to first empty workspace |
|
||
| `Super+Alt+S` | Move window to special workspace |
|
||
|
||
## 5. Window focus, move & resize
|
||
|
||
| Keys | Action |
|
||
|------|--------|
|
||
| `Super+←/→/↑/↓` | Move focus left/right/up/down |
|
||
| `Alt+Tab` / `Shift+Alt+Tab` | Cycle focus next / previous window (Omarchy key) |
|
||
| `Super+Shift+←/→/↑/↓` | Move window in that direction |
|
||
| `Super+Minus` / `Super+Equal` | Resize narrower / wider (−/+10% width) |
|
||
| `Super+Shift+Minus` / `Equal` | Resize shorter / taller (−/+10% height) |
|
||
| `Super+Alt+←/→/↑/↓` | Resize active window |
|
||
| `Super` + left-drag | Move window (mouse) |
|
||
| `Super+Z` + drag | Move window (mouse) |
|
||
| `Super` + right-drag | Resize window (mouse) |
|
||
| `Super+X` + drag | Resize window (mouse) |
|
||
| `Ctrl+Super+\` | Center window |
|
||
| `Ctrl+Super+Alt+\` | Resize to 55%×70% and center |
|
||
| `Super+Alt+\` | Picture-in-picture (PiP) mode |
|
||
| `Super+T` | Toggle floating (Omarchy key) |
|
||
| `Super+J` | Toggle window split (Omarchy key) |
|
||
| `Super+P` | Pseudo window (Omarchy key) |
|
||
| `Super+O` | Pin window — show on all workspaces (Omarchy "pop out") |
|
||
| `Super+F` | Fullscreen |
|
||
| `Super+Alt+F` | Fullscreen **with borders** |
|
||
| `Super+W` | Close window (Omarchy key) |
|
||
|
||
## 6. Window groups (tabbed stacks)
|
||
|
||
| Keys | Action |
|
||
|------|--------|
|
||
| `Super+G` | Toggle group on active window (Omarchy key) |
|
||
| `Super+Alt+G` | Move window out of group (Omarchy key) |
|
||
| `Super+Alt+Tab` | Cycle to next window in group (Omarchy key) |
|
||
| `Super+Alt+Shift+Tab` | Cycle to previous window in group (Omarchy key) |
|
||
| `Ctrl+Alt+Tab` | Change active group member (forward) |
|
||
| `Ctrl+Shift+Alt+Tab` | Change active group member (backward) |
|
||
|
||
## 7. Apps
|
||
|
||
| Keys | Action | App (NoSignal default) |
|
||
|------|--------|----------------------|
|
||
| `Super+Return` | Terminal | **kitty** |
|
||
| `Super+Shift+Return` | Browser | **chromium** |
|
||
| `Super+Shift+B` | Browser (alias) | **chromium** |
|
||
| `Super+Shift+N` | Text editor | **gnome-text-editor** |
|
||
| `Super+Shift+F` | File manager | **nautilus** |
|
||
| `Super+Alt+E` | File manager (alt) | nemo |
|
||
| `Super+Shift+G` | GitHub Desktop | github-desktop |
|
||
| `Super+I` | Install software (app store) | **Shelly** |
|
||
| `Ctrl+Alt+Escape` | Process/task viewer | qps |
|
||
| `Super+Ctrl+A` | Audio control (Omarchy key) | pavucontrol |
|
||
| `Ctrl+Alt+V` | Audio control (alias) | pavucontrol |
|
||
| `Super+Ctrl+H` | Monitor layout editor & profiles | **hyprmoncfg** (TUI) |
|
||
|
||
> All app binds use Omarchy's keys. Caelestia's stock app picks
|
||
> (foot / zen-browser / codium / thunar) are **not installed**; NoSignal points
|
||
> these binds at shipped apps via `hypr-vars.conf`.
|
||
|
||
## 8. Special-workspace toggles
|
||
|
||
| Keys | Action |
|
||
|------|--------|
|
||
| `Super+Ctrl+T` | System monitor — "Activity" (Omarchy key) |
|
||
| `Ctrl+Shift+Escape` | System monitor (alias) |
|
||
| `Super+Shift+M` | Music (Omarchy key) |
|
||
| `Super+M` | Music player — CLIAmp, floating (default for audio files) |
|
||
| `Super+Shift+D` | Communication (moved from Super+D — that's the dashboard now) |
|
||
| `Super+R` | To-do |
|
||
|
||
## 9. Screenshots & screen recording
|
||
|
||
| Keys | Action |
|
||
|------|--------|
|
||
| `Print` | Region capture (crosshair) → clipboard + ~/Pictures/Screenshots |
|
||
| `Shift+Print` | Full screen → clipboard + ~/Pictures/Screenshots |
|
||
| `Super+Shift+S` | Region capture, frozen screen (swappy → ~/Pictures/Screenshots) — becomes **Gaming Mode** after opting in (see §14) |
|
||
| `Super+Shift+Alt+S` | Region capture, live (swappy → ~/Pictures/Screenshots) |
|
||
| `Super+Print` | Color picker — hyprpicker (Omarchy key) |
|
||
| `Super+Shift+C` | Color picker (alias) |
|
||
| `Ctrl+Alt+R` | Record screen (no audio) |
|
||
| `Super+Alt+R` | Record screen **with sound** |
|
||
| `Super+Shift+Alt+R` | Record a region |
|
||
|
||
## 10. Audio & brightness
|
||
|
||
| Keys | Action |
|
||
|------|--------|
|
||
| `XF86AudioRaiseVolume` / `LowerVolume` | Volume ±10% (unmutes first) |
|
||
| `XF86AudioMute` | Mute / unmute output |
|
||
| `XF86AudioMicMute` | Mute / unmute microphone |
|
||
| `XF86MonBrightnessUp` / `Down` | Screen brightness up / down |
|
||
|
||
## 11. Media playback
|
||
|
||
| Keys | Action |
|
||
|------|--------|
|
||
| `Ctrl+Super+Space` or `XF86AudioPlay`/`Pause` | Play / pause |
|
||
| `Ctrl+Super+Equal` or `XF86AudioNext` | Next track |
|
||
| `Ctrl+Super+Minus` or `XF86AudioPrev` | Previous track |
|
||
| `XF86AudioStop` | Stop |
|
||
|
||
## 12. Clipboard & emoji
|
||
|
||
| Keys | Action |
|
||
|------|--------|
|
||
| `Super+C` | **Copy** — universal (terminals → Ctrl+Shift+C, GUI → Ctrl+C) |
|
||
| `Super+V` | **Paste** — universal (terminals → Ctrl+Shift+V, GUI → Ctrl+V) |
|
||
| `Super+Ctrl+V` | Clipboard history (Omarchy key) |
|
||
| `Super+Alt+V` | Clipboard history — delete-entry mode |
|
||
| `Super+Ctrl+E` | Emoji picker (Omarchy key) |
|
||
| `Super+Period` | Emoji picker (alias) |
|
||
| `Ctrl+Shift+Alt+V` | Alternate paste — types last clip (needs ydotool, NOT installed: dead bind) |
|
||
|
||
## 13. Power
|
||
|
||
| Keys | Action |
|
||
|------|--------|
|
||
| `Super+Shift+L` | Suspend-then-hibernate |
|
||
|
||
## 14. Gaming Mode (opt-in)
|
||
|
||
Not active on a fresh install. Opt in on the installed system with
|
||
`sh ~/deckshift/deckshift.sh`, then
|
||
`sh ~/.local/share/nosignal/deckshift-login/install-deckshift-login.sh`.
|
||
|
||
`Super+Shift+S` is bound in the **base** and self-guards: it launches Gaming Mode
|
||
only if DeckShift is installed and **does nothing** otherwise. (It replaces
|
||
caelestia's Super+Shift+S screenshot-freeze for everyone — region shots stay on
|
||
Print / Shift+Print / Super+Shift+Alt+S.)
|
||
|
||
| Keys | Action |
|
||
|------|--------|
|
||
| `Super+Shift+S` | Switch to Gaming Mode (full DeckShift gamescope/Steam session via SDDM restart) **if DeckShift is installed**; does nothing otherwise |
|
||
| `Super+Shift+R` | Exit Gaming Mode back to the desktop — works **inside the gaming session only** (or Steam > Power > Exit to Desktop) |
|
||
|
||
Cold boots always show the SDDM password greeter; only the desktop↔gaming
|
||
switch itself skips the password (one-shot autologin).
|
||
|
||
---
|
||
|
||
## Source map (for the install-system handoff)
|
||
|
||
All paths below; `~/.config/hypr` → symlink → `~/.local/share/caelestia/hypr`.
|
||
|
||
| File | Role |
|
||
|------|------|
|
||
| `~/.config/hypr/hyprland.conf` | Top-level; sources everything in order |
|
||
| `~/.config/hypr/hyprland/keybinds.conf` | **The bind definitions** (uses `$kb*` variables) |
|
||
| `~/.config/hypr/variables.conf` | **Default key + app values** (`$kbCloseWindow = Super, Q`, etc.) |
|
||
| `~/.config/caelestia/hypr-vars.conf` | **NoSignal overrides** — app rebinds + flattened styling + **Omarchy `$kb*` remaps** |
|
||
| `~/.config/caelestia/hypr-user.conf` | **NoSignal overrides** — overview (Super+Grave), help binds, **Omarchy unbinds/extra binds**, `kb_layout = gb`, window rules |
|
||
| `~/.local/bin/nosignal-keybinds-gen` | **Generator** — parses this `.md` → display-ready cheatsheet lines (single source of truth) |
|
||
| `~/.local/bin/nosignal-keybinds` | **NoSignal help launcher** — regenerates from this doc each run, shows the fuzzel dmenu |
|
||
| `~/.local/share/nosignal/keybinds.list` | Generated cache (auto-rebuilt; used as fallback if the doc is missing) |
|
||
|
||
**How the override layering works** (load order matters — later wins):
|
||
`variables.conf` sets stock defaults → `hyprland.conf` sources `hypr-vars.conf`
|
||
*before* `keybinds.conf` (so `$kb*` remaps take effect) and `hypr-user.conf`
|
||
*after everything* (so its `unbind`/`bind` lines win).
|
||
|
||
**NoSignal deltas vs. stock Caelestia:**
|
||
- **Key layout remapped to Omarchy defaults** — full mapping table
|
||
and deliberate deviations in `omarchy-keys/README.md`.
|
||
- Apps: terminal `foot→kitty`, browser `zen-browser→chromium`,
|
||
editor `codium→gnome-text-editor`, file manager `thunar→nautilus`.
|
||
- Added bind: `Super+Grave` → overview sidecar (`exec-once = qs -c overview -d`).
|
||
- Added bind: `Super+K` (+ `Super+/`, `Super+F1`) → searchable keybinding
|
||
cheatsheet, **generated from this document** so the two never drift.
|
||
- Added bind: `Super+I` → Shelly software store (repos + AUR + Flathub); yay
|
||
and flatpak/Flathub added underneath (see `software-install/`).
|
||
- Added binds: `Super+C` / `Super+V` universal copy/paste (clipboard
|
||
history → `Super+Ctrl+V`); `Print` region screenshot;
|
||
`Super+D` dashboard (communication → `Super+Shift+D`).
|
||
- Keyboard layout forced to `gb` (UK).
|
||
- Glassmorphism off: blur/shadows disabled, opacity 1.0, smaller rounding/gaps.
|
||
- Keys left unbound by the Omarchy remap: `Super+Q`, `Super+E`,
|
||
`Super+U`, `Super+Comma`, `Super+L`, `Super+Alt+Space`.
|
||
|
||
### Rebuild: this whole component ships in Downloads
|
||
|
||
Because the live system gets wiped and only Downloads is kept, the entire
|
||
feature is packaged there and reinstalled with one command per component:
|
||
|
||
| File in Downloads | Installs to |
|
||
|-------------------|-------------|
|
||
| `nosignal-keybinds-gen` | `~/.local/bin/` (the markdown→list generator) |
|
||
| `nosignal-keybinds` | `~/.local/bin/` (the cheatsheet launcher) |
|
||
| `NoSignal-keybindings.md` (this file) | `~/.local/share/nosignal/` (canonical source of truth) |
|
||
| `hyprland-keybinds-help.conf` | appended to `~/.config/caelestia/hypr-user.conf` (Super+/ + F1 binds) |
|
||
| `install-keybinds-help.sh` | the installer — run it after rebuild |
|
||
| `omarchy-keys/` | the Omarchy remap (vars + user conf + installer) |
|
||
|
||
```sh
|
||
sh ~/Downloads/install-keybinds-help.sh
|
||
sh ~/Downloads/omarchy-keys/install-omarchy-keys.sh
|
||
```
|
||
|
||
Installers are idempotent (safe to re-run) and reload Hyprland if it's
|
||
running. **No PATH dependency:** binds use the absolute path
|
||
`~/.local/bin/nosignal-keybinds`, and that script locates its generator next to
|
||
itself — so it works even if `~/.local/bin` isn't on the session `PATH`.
|
||
No keymap data lives in the scripts; editing this doc is all that's needed to
|
||
change the on-screen help. Deps: `awk`, `fuzzel`, optional `wl-copy`.
|
||
|
||
**To change a binding:** edit `keybinds.conf` for new actions, or redefine the
|
||
matching `$kb*` variable. Put NoSignal-specific changes in `hypr-user.conf` /
|
||
`hypr-vars.conf` so they survive a Caelestia update (the `hypr` symlink target
|
||
gets overwritten on upgrade; the two override files do not).
|
||
|
||
---
|
||
*Keybindings follow Omarchy defaults; the Super+K cheatsheet is generated from this file.*
|