NoSignal-OS/os updates/NoSignal-keybindings.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

299 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 110 |
| `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** 110 |
| `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 110 (Omarchy key) |
| `Super+Alt+1``9`,`0` | Move window to workspace 110 (alias, old key) |
| `Ctrl+Super+Alt+1``9`,`0` | Move window to workspace **group** 110 |
| `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.*