# 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.*
