docs: add KEYBINDINGS.md generated from Hyprland bindings

bin/utils/nomarchy-docs-keybindings parses every bindd= / bindeld=
line in the core + feature binding files into a six-section Markdown
table (Utilities, Tiling, Tiling v2, Clipboard, Media keys, Apps).
233 bindings rendered. code:NN keycodes and XF86* media keys are
prettified.

README's keybinding table is slimmed to five highlights and now
links the generated doc; the roadmap's Now-column row moves to
Shipped.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Bernardo Magri
2026-04-25 21:47:15 +01:00
parent 133ef9ddfc
commit c9ff6f26f3
4 changed files with 389 additions and 4 deletions

View File

@@ -97,12 +97,12 @@ env-update # Reloads your Home Manager environment (Runs: home-manager switch -
## 🚀 Commands & Keybindings ## 🚀 Commands & Keybindings
The full list lives in [`docs/KEYBINDINGS.md`](docs/KEYBINDINGS.md) (auto-generated from the Hyprland configs). A few highlights:
| Keybinding | Action | | Keybinding | Action |
| :--- | :--- | | :--- | :--- |
| `Super + Space` | **App Launcher** (Walker) | | `Super + Space` | **App Launcher** (Walker) |
| `Super + Shift + Space` | **Nomarchy Menu** (Walker) | | `Super + Shift + Space` | **Nomarchy Menu** (Walker) |
| `Super + Ctrl + Space` | **Background Selector** (Walker) |
| `Super + Shift + Ctrl + Space` | **Theme Selector** (Walker) |
| `Super + Alt + Space` | **Toggle Top Bar** (Waybar) | | `Super + Alt + Space` | **Toggle Top Bar** (Waybar) |
| `Super + Return` | Open Terminal | | `Super + Return` | Open Terminal |
| `Super + Q` | Close Window | | `Super + Q` | Close Window |

View File

@@ -0,0 +1,110 @@
#!/usr/bin/env bash
set -euo pipefail
# nomarchy-docs-keybindings
#
# Regenerates docs/KEYBINDINGS.md from the Hyprland binding files. Run from the
# repo root or anywhere — paths are resolved relative to this script.
#
# nomarchy-docs-keybindings # write to stdout
# nomarchy-docs-keybindings --out docs/KEYBINDINGS.md
#
# Source files in render order. Each entry is "<repo-relative path>|<title>".
repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
sources=(
"core/home/config/nomarchy/default/hypr/bindings/utilities.conf|Utilities"
"core/home/config/nomarchy/default/hypr/bindings/tiling.conf|Tiling"
"core/home/config/nomarchy/default/hypr/bindings/tiling-v2.conf|Tiling (v2)"
"core/home/config/nomarchy/default/hypr/bindings/clipboard.conf|Clipboard"
"core/home/config/nomarchy/default/hypr/bindings/media.conf|Media keys"
"features/desktop/hyprland/config/bindings.conf|Apps & web shortcuts"
)
prettify_key() {
case "$1" in
code:10) echo "1" ;; code:11) echo "2" ;; code:12) echo "3" ;;
code:13) echo "4" ;; code:14) echo "5" ;; code:15) echo "6" ;;
code:16) echo "7" ;; code:17) echo "8" ;; code:18) echo "9" ;;
code:19) echo "0" ;;
XF86AudioRaiseVolume) echo "Volume Up" ;;
XF86AudioLowerVolume) echo "Volume Down" ;;
XF86AudioMute) echo "Mute" ;;
XF86AudioMicMute) echo "Mic Mute" ;;
XF86AudioPlay) echo "Play/Pause" ;;
XF86AudioStop) echo "Stop" ;;
XF86AudioNext) echo "Next Track" ;;
XF86AudioPrev) echo "Previous Track" ;;
XF86MonBrightnessUp) echo "Brightness Up" ;;
XF86MonBrightnessDown) echo "Brightness Down" ;;
XF86KbdBrightnessUp) echo "Kbd Brightness Up" ;;
XF86KbdBrightnessDown) echo "Kbd Brightness Down" ;;
XF86KbdLightOnOff) echo "Kbd Backlight" ;;
*) echo "$1" ;;
esac
}
trim() { sed -E 's/^[[:space:]]+//; s/[[:space:]]+$//'; }
render_section() {
local file="$1" title="$2"
[[ ! -f "$repo_root/$file" ]] && return
local rows
rows=$(grep -E '^[[:space:]]*bind[a-z]*[[:space:]]*=' "$repo_root/$file" || true)
[[ -z "$rows" ]] && return
local body=""
while IFS= read -r line; do
# Strip the "bindXXX =" prefix.
local rhs="${line#*=}"
local mods key desc
IFS=',' read -r mods key desc _ <<<"$rhs"
mods=$(printf '%s' "${mods:-}" | trim)
key=$(printf '%s' "${key:-}" | trim)
desc=$(printf '%s' "${desc:-}" | trim)
[[ -z "$desc" ]] && continue # skip non-descriptive bindings
[[ -z "$mods" ]] && mods="—"
key=$(prettify_key "$key")
body+=$(printf '| %s | %s | %s |\n' "$mods" "$key" "$desc")
body+=$'\n'
done <<<"$rows"
[[ -z "$body" ]] && return
printf '\n## %s\n\n' "$title"
printf '_Source: `%s`_\n\n' "$file"
printf '| Modifiers | Key | Action |\n'
printf '| --- | --- | --- |\n'
printf '%s' "$body"
}
main() {
cat <<'HEADER'
# Nomarchy Keybindings
Auto-generated from the Hyprland binding files. **Do not edit by hand.**
Re-run the generator after changing any `bindings/*.conf`:
```bash
./bin/utils/nomarchy-docs-keybindings --out docs/KEYBINDINGS.md
```
`SUPER` is the Meta / Win key. `code:NN` keys (X11 digit keycodes) are
shown as the digit they correspond to. Media keys (`XF86Audio*`,
`XF86MonBrightness*`, …) are prettified.
HEADER
for entry in "${sources[@]}"; do
render_section "${entry%|*}" "${entry#*|}"
done
}
out=""
if [[ "${1:-}" == "--out" ]]; then
out="${2:?--out needs a path}"; shift 2
fi
if [[ -n "$out" ]]; then
main >"$out"
else
main
fi

275
docs/KEYBINDINGS.md Normal file
View File

@@ -0,0 +1,275 @@
# Nomarchy Keybindings
Auto-generated from the Hyprland binding files. **Do not edit by hand.**
Re-run the generator after changing any `bindings/*.conf`:
```bash
./bin/utils/nomarchy-docs-keybindings --out docs/KEYBINDINGS.md
```
`SUPER` is the Meta / Win key. `code:NN` keys (X11 digit keycodes) are
shown as the digit they correspond to. Media keys (`XF86Audio*`,
`XF86MonBrightness*`, …) are prettified.
## Utilities
_Source: `core/home/config/nomarchy/default/hypr/bindings/utilities.conf`_
| Modifiers | Key | Action |
| --- | --- | --- |
| SUPER | SPACE | Launch apps |
| SUPER CTRL | E | Emoji picker |
| SUPER CTRL | C | Capture menu |
| SUPER CTRL | O | Toggle menu |
| SUPER ALT | SPACE | Toggle top bar |
| SUPER | ESCAPE | System menu |
| — | XF86PowerOff | Power menu |
| SUPER | K | Show key bindings |
| — | XF86Calculator | Calculator |
| SUPER SHIFT | SPACE | Nomarchy menu |
| SUPER CTRL | SPACE | Theme background menu |
| SUPER SHIFT CTRL | SPACE | Theme menu |
| SUPER | BACKSPACE | Toggle window transparency |
| SUPER SHIFT | BACKSPACE | Toggle window gaps |
| SUPER CTRL | BACKSPACE | Toggle single-window square aspect |
| SUPER | COMMA | Dismiss last notification |
| SUPER SHIFT | COMMA | Dismiss all notifications |
| SUPER CTRL | COMMA | Toggle silencing notifications |
| SUPER ALT | COMMA | Invoke last notification |
| SUPER SHIFT ALT | COMMA | Restore last notification |
| SUPER CTRL | I | Toggle locking on idle |
| SUPER CTRL | N | Toggle nightlight |
| CTRL | F1 | Apple Display brightness down |
| CTRL | F2 | Apple Display brightness up |
| SHIFT CTRL | F2 | Apple Display full brightness |
| — | PRINT | Screenshot |
| ALT | PRINT | Screenrecording |
| SUPER | PRINT | Color picker |
| SUPER CTRL | S | Share |
| SUPER CTRL ALT | T | Show time |
| SUPER CTRL ALT | B | Show battery remaining |
| SUPER CTRL | A | Audio controls |
| SUPER CTRL | B | Bluetooth controls |
| SUPER CTRL | W | Wifi controls |
| SUPER CTRL | T | Activity |
| SUPER CTRL | X | Toggle dictation |
| SUPER CTRL | Z | Zoom in |
| SUPER CTRL ALT | Z | Reset zoom |
| SUPER CTRL | L | Lock system |
## Tiling
_Source: `core/home/config/nomarchy/default/hypr/bindings/tiling.conf`_
| Modifiers | Key | Action |
| --- | --- | --- |
| SUPER | Q | Close window |
| CTRL ALT | DELETE | Close all windows |
| SUPER | J | Toggle window split |
| SUPER | P | Pseudo window |
| SUPER SHIFT | V | Toggle window floating/tiling |
| SHIFT | F11 | Force full screen |
| ALT | F11 | Full width |
| SUPER | LEFT | Move focus left |
| SUPER | RIGHT | Move focus right |
| SUPER | UP | Move focus up |
| SUPER | DOWN | Move focus down |
| SUPER | 1 | Switch to workspace 1 |
| SUPER | 2 | Switch to workspace 2 |
| SUPER | 3 | Switch to workspace 3 |
| SUPER | 4 | Switch to workspace 4 |
| SUPER | 5 | Switch to workspace 5 |
| SUPER | 6 | Switch to workspace 6 |
| SUPER | 7 | Switch to workspace 7 |
| SUPER | 8 | Switch to workspace 8 |
| SUPER | 9 | Switch to workspace 9 |
| SUPER | 0 | Switch to workspace 10 |
| SUPER SHIFT | 1 | Move window to workspace 1 |
| SUPER SHIFT | 2 | Move window to workspace 2 |
| SUPER SHIFT | 3 | Move window to workspace 3 |
| SUPER SHIFT | 4 | Move window to workspace 4 |
| SUPER SHIFT | 5 | Move window to workspace 5 |
| SUPER SHIFT | 6 | Move window to workspace 6 |
| SUPER SHIFT | 7 | Move window to workspace 7 |
| SUPER SHIFT | 8 | Move window to workspace 8 |
| SUPER SHIFT | 9 | Move window to workspace 9 |
| SUPER SHIFT | 0 | Move window to workspace 10 |
| SUPER | TAB | Next workspace |
| SUPER SHIFT | TAB | Previous workspace |
| SUPER CTRL | TAB | Former workspace |
| SUPER SHIFT | LEFT | Swap window to the left |
| SUPER SHIFT | RIGHT | Swap window to the right |
| SUPER SHIFT | UP | Swap window up |
| SUPER SHIFT | DOWN | Swap window down |
| ALT | TAB | Cycle to next window |
| ALT SHIFT | TAB | Cycle to prev window |
| ALT | TAB | Reveal active window on top |
| ALT SHIFT | TAB | Reveal active window on top |
| SUPER | code:20 | Expand window left |
| SUPER | code:21 | Shrink window left |
| SUPER SHIFT | code:20 | Shrink window up |
| SUPER SHIFT | code:21 | Expand window down |
| SUPER | MOUSE_DOWN | Scroll active workspace forward |
| SUPER | MOUSE_UP | Scroll active workspace backward |
| SUPER | mouse:272 | Move window |
| SUPER | mouse:273 | Resize window |
## Tiling (v2)
_Source: `core/home/config/nomarchy/default/hypr/bindings/tiling-v2.conf`_
| Modifiers | Key | Action |
| --- | --- | --- |
| SUPER | W | Close window |
| CTRL ALT | DELETE | Close all windows |
| SUPER | J | Toggle window split |
| SUPER | P | Pseudo window |
| SUPER | T | Toggle window floating/tiling |
| SUPER | F | Full screen |
| SUPER CTRL | F | Tiled full screen |
| SUPER ALT | F | Full width |
| SUPER | O | Pop window out (float & pin) |
| SUPER | L | Toggle workspace layout |
| SUPER | LEFT | Move window focus left |
| SUPER | RIGHT | Move window focus right |
| SUPER | UP | Move window focus up |
| SUPER | DOWN | Move window focus down |
| SUPER | 1 | Switch to workspace 1 |
| SUPER | 2 | Switch to workspace 2 |
| SUPER | 3 | Switch to workspace 3 |
| SUPER | 4 | Switch to workspace 4 |
| SUPER | 5 | Switch to workspace 5 |
| SUPER | 6 | Switch to workspace 6 |
| SUPER | 7 | Switch to workspace 7 |
| SUPER | 8 | Switch to workspace 8 |
| SUPER | 9 | Switch to workspace 9 |
| SUPER | 0 | Switch to workspace 10 |
| SUPER SHIFT | 1 | Move window to workspace 1 |
| SUPER SHIFT | 2 | Move window to workspace 2 |
| SUPER SHIFT | 3 | Move window to workspace 3 |
| SUPER SHIFT | 4 | Move window to workspace 4 |
| SUPER SHIFT | 5 | Move window to workspace 5 |
| SUPER SHIFT | 6 | Move window to workspace 6 |
| SUPER SHIFT | 7 | Move window to workspace 7 |
| SUPER SHIFT | 8 | Move window to workspace 8 |
| SUPER SHIFT | 9 | Move window to workspace 9 |
| SUPER SHIFT | 0 | Move window to workspace 10 |
| SUPER SHIFT ALT | 1 | Move window silently to workspace 1 |
| SUPER SHIFT ALT | 2 | Move window silently to workspace 2 |
| SUPER SHIFT ALT | 3 | Move window silently to workspace 3 |
| SUPER SHIFT ALT | 4 | Move window silently to workspace 4 |
| SUPER SHIFT ALT | 5 | Move window silently to workspace 5 |
| SUPER SHIFT ALT | 6 | Move window silently to workspace 6 |
| SUPER SHIFT ALT | 7 | Move window silently to workspace 7 |
| SUPER SHIFT ALT | 8 | Move window silently to workspace 8 |
| SUPER SHIFT ALT | 9 | Move window silently to workspace 9 |
| SUPER SHIFT ALT | 0 | Move window silently to workspace 10 |
| SUPER | S | Toggle scratchpad |
| SUPER ALT | S | Move window to scratchpad |
| SUPER | TAB | Next workspace |
| SUPER SHIFT | TAB | Previous workspace |
| SUPER CTRL | TAB | Former workspace |
| SUPER SHIFT ALT | LEFT | Move workspace to left monitor |
| SUPER SHIFT ALT | RIGHT | Move workspace to right monitor |
| SUPER SHIFT ALT | UP | Move workspace to up monitor |
| SUPER SHIFT ALT | DOWN | Move workspace to down monitor |
| SUPER SHIFT | LEFT | Swap window to the left |
| SUPER SHIFT | RIGHT | Swap window to the right |
| SUPER SHIFT | UP | Swap window up |
| SUPER SHIFT | DOWN | Swap window down |
| ALT | TAB | Cycle to next window |
| ALT SHIFT | TAB | Cycle to prev window |
| ALT | TAB | Reveal active window on top |
| ALT SHIFT | TAB | Reveal active window on top |
| SUPER | code:20 | Expand window left |
| SUPER | code:21 | Shrink window left |
| SUPER SHIFT | code:20 | Shrink window up |
| SUPER SHIFT | code:21 | Expand window down |
| SUPER | mouse_down | Scroll active workspace forward |
| SUPER | mouse_up | Scroll active workspace backward |
| SUPER | mouse:272 | Move window |
| SUPER | mouse:273 | Resize window |
| SUPER | G | Toggle window grouping |
| SUPER ALT | G | Move active window out of group |
| SUPER ALT | LEFT | Move window to group on left |
| SUPER ALT | RIGHT | Move window to group on right |
| SUPER ALT | UP | Move window to group on top |
| SUPER ALT | DOWN | Move window to group on bottom |
| SUPER ALT | TAB | Next window in group |
| SUPER ALT SHIFT | TAB | Previous window in group |
| SUPER CTRL | LEFT | Move grouped window focus left |
| SUPER CTRL | RIGHT | Move grouped window focus right |
| SUPER ALT | mouse_down | Next window in group |
| SUPER ALT | mouse_up | Previous window in group |
| SUPER ALT | 1 | Switch to group window 1 |
| SUPER ALT | 2 | Switch to group window 2 |
| SUPER ALT | 3 | Switch to group window 3 |
| SUPER ALT | 4 | Switch to group window 4 |
| SUPER ALT | 5 | Switch to group window 5 |
| SUPER | Slash | Cycle monitor scaling |
## Clipboard
_Source: `core/home/config/nomarchy/default/hypr/bindings/clipboard.conf`_
| Modifiers | Key | Action |
| --- | --- | --- |
| SUPER | C | Universal copy |
| SUPER | V | Universal paste |
| SUPER | X | Universal cut |
| SUPER CTRL | V | Clipboard manager |
## Media keys
_Source: `core/home/config/nomarchy/default/hypr/bindings/media.conf`_
| Modifiers | Key | Action |
| --- | --- | --- |
| — | Volume Up | Volume up |
| — | Volume Down | Volume down |
| — | Mute | Mute |
| — | Mic Mute | Mute microphone |
| — | Brightness Up | Brightness up |
| — | Brightness Down | Brightness down |
| — | Kbd Brightness Up | Keyboard brightness up |
| — | Kbd Brightness Down | Keyboard brightness down |
| — | Kbd Backlight | Keyboard backlight cycle |
| ALT | Volume Up | Volume up precise |
| ALT | Volume Down | Volume down precise |
| ALT | Brightness Up | Brightness up precise |
| ALT | Brightness Down | Brightness down precise |
| — | Next Track | Next track |
| — | XF86AudioPause | Pause |
| — | Play/Pause | Play |
| — | Previous Track | Previous track |
| SUPER | Mute | Switch audio output |
## Apps & web shortcuts
_Source: `features/desktop/hyprland/config/bindings.conf`_
| Modifiers | Key | Action |
| --- | --- | --- |
| SUPER | RETURN | Terminal |
| SUPER ALT | RETURN | Tmux |
| SUPER SHIFT | RETURN | Browser |
| SUPER SHIFT | F | File manager |
| SUPER ALT SHIFT | F | File manager (cwd) |
| SUPER SHIFT | B | Browser |
| SUPER SHIFT ALT | B | Browser (private) |
| SUPER SHIFT | M | Music |
| SUPER SHIFT | N | Editor |
| SUPER SHIFT | D | Docker |
| SUPER SHIFT | G | Signal |
| SUPER SHIFT | O | Obsidian |
| SUPER SHIFT | SLASH | Passwords |
| SUPER SHIFT | A | ChatGPT |
| SUPER SHIFT ALT | A | Grok |
| SUPER SHIFT | C | Calendar |
| SUPER SHIFT | E | Email |
| SUPER SHIFT | Y | YouTube |
| SUPER SHIFT ALT | G | WhatsApp |
| SUPER SHIFT CTRL | G | Google Messages |
| SUPER SHIFT | P | Google Photos |
| SUPER SHIFT | X | X |
| SUPER SHIFT ALT | X | X Post |

View File

@@ -23,7 +23,6 @@ Guardrails (apply when adding anything):
- **Richer disk metadata.** Carryover from the old TODO. Replace the bare `lsblk` line in `select_disk` with `lsblk -O -J` parsed via `jq`, surfacing vendor, model, serial, and size in the picker. - **Richer disk metadata.** Carryover from the old TODO. Replace the bare `lsblk` line in `select_disk` with `lsblk -O -J` parsed via `jq`, surfacing vendor, model, serial, and size in the picker.
- **Menu cleanup of orphaned references.** Walk `features/scripts/utils/nomarchy-menu` (379 lines, 23 submenus) and either wire each menu item to a real script or replace the `case` arm with a stubbed `notify-send` until the script is ported. See Pillar 3 below. - **Menu cleanup of orphaned references.** Walk `features/scripts/utils/nomarchy-menu` (379 lines, 23 submenus) and either wire each menu item to a real script or replace the `case` arm with a stubbed `notify-send` until the script is ported. See Pillar 3 below.
- **Form-factor → laptop preset auto-enable.** When the installer writes `nomarchy.system.formFactor = "laptop"`, also flip on a yet-to-be-built laptop preset (TLP, brightness keys, lid handling). The option exists; the preset module doesn't. - **Form-factor → laptop preset auto-enable.** When the installer writes `nomarchy.system.formFactor = "laptop"`, also flip on a yet-to-be-built laptop preset (TLP, brightness keys, lid handling). The option exists; the preset module doesn't.
- **`docs/KEYBINDINGS.md`.** Auto-generate from the `bindd =` lines in `core/home/config/nomarchy/default/hypr/bindings/*.conf` and `features/desktop/hyprland/config/bindings.conf` so the README's keybinding table stops drifting from the source of truth.
### Next (bigger lifts that build on Now) ### Next (bigger lifts that build on Now)
@@ -103,7 +102,7 @@ Each PR description should reference the row(s) in `docs/SCRIPTS.md` it closes,
## 6. Pillar: Onboarding & docs ## 6. Pillar: Onboarding & docs
- `nomarchy-welcome` first-run wizard (Next). - `nomarchy-welcome` first-run wizard (Next).
- `docs/KEYBINDINGS.md` auto-generator (Now). - `docs/KEYBINDINGS.md` auto-generator (Shipped).
- `docs/TROUBLESHOOTING.md` (Next). - `docs/TROUBLESHOOTING.md` (Next).
- `docs/index.md` (or just enrich `README.md`) so `OPTIONS.md`, `STRUCTURE.md`, `MIGRATION.md`, `ROADMAP.md`, `SCRIPTS.md`, and `creating-themes.md` are all one click from the front page. - `docs/index.md` (or just enrich `README.md`) so `OPTIONS.md`, `STRUCTURE.md`, `MIGRATION.md`, `ROADMAP.md`, `SCRIPTS.md`, and `creating-themes.md` are all one click from the front page.
- `nomarchy-manual` — orphaned reference today; either implement as a curated `xdg-open` to the docs index, or delete. - `nomarchy-manual` — orphaned reference today; either implement as a curated `xdg-open` to the docs index, or delete.
@@ -130,5 +129,6 @@ Each PR description should reference the row(s) in `docs/SCRIPTS.md` it closes,
(Move items here when they land — keep them brief, link the commit/PR.) (Move items here when they land — keep them brief, link the commit/PR.)
- _2026-04-25_ — `docs/KEYBINDINGS.md` auto-generator. New repo-tooling script `bin/utils/nomarchy-docs-keybindings` parses every `bindd =` / `bindeld =` line into a Markdown doc; README's keybinding table slimmed to highlights + link.
- _2026-04-25_ — Installer prompts for keyboard layout + locale, applies live; new `nomarchy.{system,}.formFactor` option; waybar drops battery widget on desktop; nm-applet visibility fix in default theme; live-ISO baseline keymap/locale (`a7e7fa9`). - _2026-04-25_ — Installer prompts for keyboard layout + locale, applies live; new `nomarchy.{system,}.formFactor` option; waybar drops battery widget on desktop; nm-applet visibility fix in default theme; live-ISO baseline keymap/locale (`a7e7fa9`).
- _2026-04-25_ — `docs/OPTIONS.md` reference; `docs/MIGRATION.md` linked from `README.md` (`3cb012b`, `6ef28f0`). - _2026-04-25_ — `docs/OPTIONS.md` reference; `docs/MIGRATION.md` linked from `README.md` (`3cb012b`, `6ef28f0`).