diff --git a/README.md b/README.md index 0895d59..ba0e045 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,11 @@ sudo nixos-rebuild switch --flake .# darwin-rebuild switch --flake .#lyrathorpe-mac ``` +## Keybindings + +All Sway / tmux / foot / zsh keyboard shortcuts are documented in +[`lyrathorpe/home/KEYBINDINGS.md`](./lyrathorpe/home/KEYBINDINGS.md). + ## Login / greeter Graphical (Sway) hosts log in through a Wayland greeter — `greetd` running diff --git a/lyrathorpe/home/KEYBINDINGS.md b/lyrathorpe/home/KEYBINDINGS.md new file mode 100644 index 0000000..dc9a4cf --- /dev/null +++ b/lyrathorpe/home/KEYBINDINGS.md @@ -0,0 +1,172 @@ +# Keybindings reference + +Every keyboard shortcut configured across this desktop, and where it is defined. +Everything here is managed declaratively through Nix — edit the listed file and +rebuild, never the generated dotfiles. + +| Area | Defined in | +| --- | --- | +| Sway (compositor) | [`sway.nix`](./sway.nix) `config.keybindings` + `config.modes`, plus the home-manager Sway module's built-in defaults | +| tmux | [`shell.nix`](./shell.nix) `programs.tmux` | +| zsh line editor | [`shell.nix`](./shell.nix) `programs.zsh.historySubstringSearch` | +| foot (terminal) | foot package defaults — only colours are themed (in `sway.nix`) | + +**Conventions** + +- **Super** is the `Mod4` / logo (Windows/Command) key; **Alt** is `Mod1`. +- Letter keys are **keysyms** (the character produced), not physical positions. + The keyboard is **Dvorak** (`us`/`dvorak`), so e.g. "Super+s" is whatever key + types `s` in Dvorak. +- Shortcuts apply to every Sway host (MBP, T400, Mac Pro); brightness keys are + laptop-only, as noted. + +--- + +## Sway + +### Applications & session + +| Shortcut | Action | +| --- | --- | +| `Super`+`Return` | Open a terminal (foot) | +| `Super`+`Space` | App launcher (sway-launcher-desktop in a floating foot) | +| `Super`+`d` | App launcher (same as above; module default) | +| `Super`+`e` | File manager (nemo) | +| `Super`+`c` | Clipboard history picker (clipman → fuzzel) | +| `Super`+`l` | Lock screen (swaylock) | +| `Super`+`Shift`+`q` | Close the focused window | +| `Super`+`Shift`+`c` | Reload the Sway config | +| `Super`+`Shift`+`e` | Exit Sway (asks for confirmation) | + +### Focus + +| Shortcut | Action | +| --- | --- | +| `Super`+`←`/`↓`/`↑`/`→` | Move focus by direction | +| `Super`+`h`/`j`/`k` | Move focus left / down / up (vim-style) | +| `Super`+`a` | Focus the parent container | +| `Super`+`Alt`+`Space` | Toggle focus between tiling and floating | + +> Note: vim focus-right would be `Super`+`l`, but that is bound to **lock** here; +> use `Super`+`→`. + +### Moving windows + +| Shortcut | Action | +| --- | --- | +| `Super`+`Shift`+`←`/`↓`/`↑`/`→` | Move the window by direction | +| `Super`+`Shift`+`h`/`j`/`k`/`l` | Move the window left / down / up / right | +| `Super`+`Shift`+`Space` | Toggle the window floating | + +Mouse (with `Super` held): left-drag moves a window, right-drag resizes it. + +### Layout + +| Shortcut | Action | +| --- | --- | +| `Super`+`b` | Split horizontally | +| `Super`+`v` | Split vertically | +| `Super`+`s` | Stacking layout | +| `Super`+`w` | Tabbed layout | +| `Super`+`f` | Toggle fullscreen | +| `Super`+`y` | **Layout submenu**: `s` stacking · `w` tabbed · `e` toggle split · `Return`/`Esc` exit | + +> The layout submenu's `e` (toggle split) is the home for that action since +> `Super`+`e` now opens the file manager. + +### Workspaces + +| Shortcut | Action | +| --- | --- | +| `Super`+`1`…`0` | Switch to workspace 1…10 | +| `Super`+`Shift`+`1`…`0` | Move the window to workspace 1…10 | +| `Super`+`z` | Previous workspace | +| `Super`+`x` | Next workspace | + +### Scratchpad + +| Shortcut | Action | +| --- | --- | +| `Super`+`Shift`+`-` | Move the window to the scratchpad | +| `Super`+`-` | Show / cycle the scratchpad | + +### Modes (submenus) + +| Shortcut | Action | +| --- | --- | +| `Super`+`r` | **Resize mode**: arrow keys resize; `Return`/`Esc` exit | +| `Super`+`y` | **Layout mode** (see Layout above) | +| `Super`+`Shift`+`x` | **Power menu**: `l` lock · `e` log out · `s` sleep · `r` reboot · `Shift`+`s` shutdown · `Return`/`Esc` exit | + +### Screenshots + +| Shortcut | Action | +| --- | --- | +| `Print` | Select a region → swappy (annotate/save) | +| `Shift`+`Print` | Focused window → swappy | + +### Audio & media + +| Shortcut | Action | +| --- | --- | +| `XF86AudioRaiseVolume` / `XF86AudioLowerVolume` | Volume ±5% (wpctl) | +| `XF86AudioMute` | Toggle output mute | +| `XF86AudioMicMute` | Toggle microphone mute | +| `XF86AudioPlay` | Play/pause (playerctl) | +| `XF86AudioNext` / `XF86AudioPrev` | Next / previous track | + +### Brightness — laptops only + +| Shortcut | Action | +| --- | --- | +| `XF86MonBrightnessUp` / `XF86MonBrightnessDown` | Backlight ±5% (brightnessctl) | + +Present only on portable hosts (T400, MBP); desktops have no internal backlight. + +--- + +## tmux + +Prefix is **`Ctrl`+`b`** (default). Copy mode uses **vi** keys. + +| Shortcut | Action | +| --- | --- | +| `Ctrl`+`b` then `v` | Split into left/right panes | +| `Ctrl`+`b` then `s` | Split into top/bottom panes | +| `Alt`+`←`/`→`/`↑`/`↓` | Switch pane by direction (no prefix needed) | +| `Ctrl`+`b` then `[` | Enter copy mode (then vi motions; `Space`/`Enter` to select/copy) | +| `Ctrl`+`b` then `z` | Zoom / unzoom the focused pane | +| `Ctrl`+`b` then `c` | New window | +| `Ctrl`+`b` then `n` / `p` | Next / previous window | +| `Ctrl`+`b` then `d` | Detach | +| Mouse | Enabled — click to focus, drag borders, scroll, select | + +> The stock split keys `%` and `"` are unbound; use `v` / `s` above. `Ctrl`+`b` +> then `s` is therefore a split, not the session tree. + +--- + +## foot (terminal) + +Only colours are themed; these are foot's default key bindings. + +| Shortcut | Action | +| --- | --- | +| `Ctrl`+`Shift`+`c` / `Ctrl`+`Shift`+`v` | Copy / paste (clipboard) | +| `Shift`+`Insert` | Paste primary selection | +| `Ctrl`+`Shift`+`r` | Search scrollback | +| `Ctrl`+`+` / `Ctrl`+`-` / `Ctrl`+`0` | Font larger / smaller / reset | +| `Ctrl`+`Shift`+`u` | URL mode (jump to/open links) | +| `Ctrl`+`Shift`+`n` | Spawn a new terminal | +| `Shift`+`PageUp` / `Shift`+`PageDown` | Scroll back / forward | + +--- + +## zsh + +| Shortcut | Action | +| --- | --- | +| `↑` / `↓` | History **substring** search — type a fragment first, then the arrows cycle matching past commands | + +Bound for both CSI and SS3 cursor sequences, so it works in foot, iTerm2 and +the Linux TTY alike.