mirror of
https://github.com/prdlk/dotfiles.git
synced 2026-11-02 19:32:43 +00:00
docs(docs): update workspace defaults and add daily session documentation
This commit is contained in:
1 parent
c0f611e1bd
commit
d9cdf00bb6
3 files changed
+38
-10
No files matched your search
@@ -49,9 +49,10 @@ Omarchy's default bindings stay enabled. `omarchy_default_bindings` and `omarchy
|
|||||||
|
|
||||||
| Workspace | Monitor |
|
| Workspace | Monitor |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| 3 | `desc:Apple Computer Inc StudioDisplay 0x984262A7` (EDID match, survives connector changes) |
|
| 1 (default), 2, 3, 4 | `desc:Apple Computer Inc StudioDisplay 0x984262A7` (EDID match, survives connector changes) |
|
||||||
| 4 | `eDP-1` |
|
| 5 (default), 6, 7, 8 | `eDP-1` |
|
||||||
| 5 | `eDP-1` |
|
|
||||||
|
`default` marks the workspace each monitor shows when it connects.
|
||||||
|
|
||||||
### Window rules
|
### Window rules
|
||||||
|
|
||||||
@@ -175,14 +176,14 @@ Every binding defined in `bindings.lua`. Bindings not listed here are Omarchy de
|
|||||||
| --- | --- | --- |
|
| --- | --- | --- |
|
||||||
| `SUPER + CTRL + J` | Next workspace (`e+1`) | — |
|
| `SUPER + CTRL + J` | Next workspace (`e+1`) | — |
|
||||||
| `SUPER + CTRL + K` | Previous workspace (`e-1`) | Herdr keybindings |
|
| `SUPER + CTRL + K` | Previous workspace (`e-1`) | Herdr keybindings |
|
||||||
| `ALT + Q` / `W` / `E` / `R` / `T` | Switch to workspace 1 / 2 / 3 / 4 / 5 | — |
|
| `ALT + Q` / `W` / `E` / `R` | Switch to workspace 1 / 2 / 3 / 4 (Studio Display) | — |
|
||||||
| `ALT + SHIFT + Q` / `W` / `E` / `R` / `T` | Move window to workspace 1 / 2 / 3 / 4 / 5 | — |
|
| `ALT + Y` / `U` / `I` / `O` | Switch to workspace 5 / 6 / 7 / 8 (laptop panel) | — |
|
||||||
|
| `ALT + SHIFT + Q` / `W` / `E` / `R` / `Y` / `U` / `I` / `O` | Move window to workspace 1–8 | — |
|
||||||
| `SUPER + CTRL + S` | `omarchy-toggle-scratch scratchpad` | share menu |
|
| `SUPER + CTRL + S` | `omarchy-toggle-scratch scratchpad` | share menu |
|
||||||
| `SUPER + A` | `omarchy-toggle-scratch scratchpad` (Tern) | — |
|
| `SUPER + A` | `omarchy-toggle-scratch scratchpad` (Tern) | — |
|
||||||
| `SUPER + O` | Focus next monitor | pop window out |
|
| `SUPER + O`, `SUPER + SHIFT + O` | Unbound | pop window out, Obsidian |
|
||||||
| `SUPER + SHIFT + O` | Move window to next monitor | Obsidian |
|
| `ALT + SHIFT + J` | Move window to next monitor | — |
|
||||||
| `SUPER + CTRL + SHIFT + J` | Move window to next monitor | — |
|
| `ALT + SHIFT + K` | Move window to previous monitor | — |
|
||||||
| `SUPER + CTRL + SHIFT + K` | Move window to previous monitor | — |
|
|
||||||
| `SUPER + SHIFT + CTRL + ALT + W` | Workspace `name:w` | — |
|
| `SUPER + SHIFT + CTRL + ALT + W` | Workspace `name:w` | — |
|
||||||
| `SUPER + SHIFT + CTRL + ALT + H` | Workspace `name:h` | — |
|
| `SUPER + SHIFT + CTRL + ALT + H` | Workspace `name:h` | — |
|
||||||
| `SUPER + CTRL + ALT + X` | Workspace `name:x` | — |
|
| `SUPER + CTRL + ALT + X` | Workspace `name:x` | — |
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ The right side nests groups in vertical wrappers so the drawer and the two-line
|
|||||||
| --- | --- |
|
| --- | --- |
|
||||||
| `custom/separator` (also `separator2`, `separator3`, defined but unused) | Literal `\|`, no tooltip |
|
| `custom/separator` (also `separator2`, `separator3`, defined but unused) | Literal `\|`, no tooltip |
|
||||||
| `custom/omarchy` | Omarchy logo glyph (`omarchy` font). Click: `omarchy-menu`. Right-click: `xdg-terminal-exec`. Tooltip "Omarchy Menu — Super + Alt + Space" |
|
| `custom/omarchy` | Omarchy logo glyph (`omarchy` font). Click: `omarchy-menu`. Right-click: `xdg-terminal-exec`. Tooltip "Omarchy Menu — Super + Alt + Space" |
|
||||||
| `hyprland/workspaces` | `format "{icon}"`, click to activate, pointer cursor. Persistent workspaces 1, 2, 3, 4, 5, 7, 8, 9 |
|
| `hyprland/workspaces` | `format "{icon}"`, click to activate, pointer cursor. Persistent workspaces per output, matching the [Hyprland workspace rules](/desktop/hyprland#workspace-rules): 1–4 on `DP-4` (Studio Display), 5–8 on `eDP-1`. Keyed by connector name, so a re-dock onto another DP port needs the key updated |
|
||||||
| `tray` | Icon size 12, spacing 5, shows passive items |
|
| `tray` | Icon size 12, spacing 5, shows passive items |
|
||||||
| `custom/voxtype` | `omarchy-voxtype-status` (JSON). Icons for `idle` (none), `recording`, `transcribing`. Click: `omarchy-voxtype-model`. Right-click: `omarchy-voxtype-config` |
|
| `custom/voxtype` | `omarchy-voxtype-status` (JSON). Icons for `idle` (none), `recording`, `transcribing`. Click: `omarchy-voxtype-model`. Right-click: `omarchy-voxtype-config` |
|
||||||
| `custom/update` | `omarchy-update-available` every 6 h (`interval 21600`, `signal 7`). Click runs `omarchy-update` in a floating terminal |
|
| `custom/update` | `omarchy-update-available` every 6 h (`interval 21600`, `signal 7`). Click runs `omarchy-update` in a floating terminal |
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ GPU terminal emulator and the primary terminal on every role.
|
|||||||
- symlink_current-theme.conf
|
- symlink_current-theme.conf
|
||||||
- tab_bar.py
|
- tab_bar.py
|
||||||
- pass_keys.py
|
- pass_keys.py
|
||||||
|
- day_session.py
|
||||||
- navigate_kitty.py
|
- navigate_kitty.py
|
||||||
- select_tab.py
|
- select_tab.py
|
||||||
- switchtab.py
|
- switchtab.py
|
||||||
@@ -99,12 +100,37 @@ The socket also exports `KITTY_LISTEN_ON` into each pane. nvim reads it to know
|
|||||||
| `super+a` | Spawn a separate kitty (`--class=kitty-herdr`, `--config ~/.config/kitty/herdr.conf`) |
|
| `super+a` | Spawn a separate kitty (`--class=kitty-herdr`, `--config ~/.config/kitty/herdr.conf`) |
|
||||||
| `ctrl+shift+c` / `ctrl+shift+v` | Copy / paste clipboard |
|
| `ctrl+shift+c` / `ctrl+shift+v` | Copy / paste clipboard |
|
||||||
| `alt+q w e r t y u i o` | Go to tab 1–9 |
|
| `alt+q w e r t y u i o` | Go to tab 1–9 |
|
||||||
|
| `ctrl+shift+d` | `day_session.py` picker: reopen any archived day's session |
|
||||||
| `ctrl+h/j/k/l` | `pass_keys.py`: move to neighbor window left/bottom/top/right, or pass the key through |
|
| `ctrl+h/j/k/l` | `pass_keys.py`: move to neighbor window left/bottom/top/right, or pass the key through |
|
||||||
| `super+left` / `super+right` | Resize window narrower / wider |
|
| `super+left` / `super+right` | Resize window narrower / wider |
|
||||||
| `super+up` / `super+down` | Resize window taller / shorter (by 3) |
|
| `super+up` / `super+down` | Resize window taller / shorter (by 3) |
|
||||||
|
|
||||||
The tmux and herdr hosts are separate kitty processes because `launch` cannot take `--config`.
|
The tmux and herdr hosts are separate kitty processes because `launch` cannot take `--config`.
|
||||||
|
|
||||||
|
### Daily sessions
|
||||||
|
|
||||||
|
`day_session.py` keeps one kitty session file per day, grouped by week:
|
||||||
|
|
||||||
|
```text
|
||||||
|
~/.local/share/kitty-sessions/<monday YYYY-MM-DD>/<day YYYY-MM-DD>.kitty-session
|
||||||
|
~/.local/share/kitty-sessions/<monday YYYY-MM-DD>/<day YYYY-MM-DD>.scrollback/<window key>.ansi
|
||||||
|
```
|
||||||
|
|
||||||
|
| Directive | Role |
|
||||||
|
| --- | --- |
|
||||||
|
| `geninclude day_session.py` | Creates today's (empty) session file and emits `startup_session <path>` whenever no running kitty owns today's session. Ownership is an `flock` on `$XDG_RUNTIME_DIR/kitty-day-<day>.kitty-session.lock`, held until that kitty exits, so closing kitty and launching it again always reopens the day, even if other kitties (or yesterday's) are still running. A second concurrent instance starts plain instead of duplicating today's tabs. |
|
||||||
|
| `watcher day_session.py` | About 1 s after a window opens, closes, resizes or splits, changes focus or finishes a command (catches `cd`), and every 30 s for output from long-running programs, rewrites the session this instance started with. Title changes are ignored so spinners don't trigger saves. Skips the save once the session has no windows, so closing kitty keeps the last good state. |
|
||||||
|
| `map ctrl+shift+d kitten day_session.py` | Picker over every archived day, newest first; opens the choice with `goto_session`. Past days are snapshots: tabs opened from them are not saved back. |
|
||||||
|
| `tab_bar_filter session:~ or session:^$` | Tab bar shows only the active day's tabs plus tabs outside any session. |
|
||||||
|
|
||||||
|
What a restored window gets back:
|
||||||
|
|
||||||
|
- **Scrollback**: each window carries a `day_scrollback=<key>` user var (kept by kitty's `launch --var`); its history is dumped as ANSI to `<key>.ansi`, minus the idle prompt, and dumps of closed windows are pruned. On restore, the shell runs `cat <key>.ansi` through kitty's shell-integration startup command, so it needs shell integration (fish here). A dump is only written after the shell has drawn a prompt, so a restored window can't overwrite its history before replaying it.
|
||||||
|
- **Running program**: saved with `--use-foreground-process` and re-run after the `cat`, so the shell is still there when it exits (`nvim`, `sleep 700`, dev servers). Commands still at shell init when saved (mise/direnv hooks) are ignored. A command is never replayed if any of its words is `rm`, `rmdir`, `mv`, `dd`, `shred`, `truncate`, `mkfs*`, `wipefs`, `fdisk`, `parted`, `sudo`, `doas`, `su`, `run0`, `pkexec`, `kill`, `pkill`, `killall`, `reboot`, `shutdown` or `poweroff` (`NO_REPLAY`).
|
||||||
|
- Programs launched as the window's own command (`ctrl+shift+e` nvim, `ctrl+shift+g` lazygit) were already restored by kitty; they have no shell, so no scrollback.
|
||||||
|
|
||||||
|
Only windows that belong to the session are saved: `new_tab_with_cwd` and the `--cwd=current` launch aliases join it; `new_os_window` (`ctrl+shift+space`) does not.
|
||||||
|
|
||||||
## Host configs
|
## Host configs
|
||||||
|
|
||||||
### tmux.conf — kitty as a tmux host
|
### tmux.conf — kitty as a tmux host
|
||||||
@@ -191,5 +217,6 @@ Kitten `ssh` config: for `hostname goliath`, `share_connections yes`.
|
|||||||
| `select_tab.py` | Full-screen fuzzy tab picker using `kitty @ ls` data; shows cwds zsh-style. Keys: Up/Down/PgUp/PgDn scroll, Enter selects, typing filters, `ctrl+c`/Esc quits. Not mapped in `kitty.conf`. |
|
| `select_tab.py` | Full-screen fuzzy tab picker using `kitty @ ls` data; shows cwds zsh-style. Keys: Up/Down/PgUp/PgDn scroll, Enter selects, typing filters, `ctrl+c`/Esc quits. Not mapped in `kitty.conf`. |
|
||||||
| `switchtab.py` | Focuses the tab whose `vt` user var matches the argument, or launches one with that var and reorders tabs by `vt`. Not mapped. |
|
| `switchtab.py` | Focuses the tab whose `vt` user var matches the argument, or launches one with that var and reorders tabs by `vt`. Not mapped. |
|
||||||
| `window_titler.py` | Watcher that appends `[<vt> <pty>]` to window titles. Not referenced in `kitty.conf`. |
|
| `window_titler.py` | Watcher that appends `[<vt> <pty>]` to window titles. Not referenced in `kitty.conf`. |
|
||||||
|
| `day_session.py` | Daily sessions: `geninclude` script, global watcher and no-UI picker kitten in one file. See [Daily sessions](#daily-sessions). |
|
||||||
|
|
||||||
Related: the [tmux](/terminal/tmux) `is_vim` check and herdr's `vim-herdr-navigation` plugin complete the `ctrl+h/j/k/l` chain. Niri window rules match the `kitty`, `kitty-tmux` and `kitty-herdr` app-ids ([Niri](/desktop/niri)).
|
Related: the [tmux](/terminal/tmux) `is_vim` check and herdr's `vim-herdr-navigation` plugin complete the `ctrl+h/j/k/l` chain. Niri window rules match the `kitty`, `kitty-tmux` and `kitty-herdr` app-ids ([Niri](/desktop/niri)).
|
||||||
Reference in new issue
Block a user