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 |
|
||||
| --- | --- |
|
||||
| 3 | `desc:Apple Computer Inc StudioDisplay 0x984262A7` (EDID match, survives connector changes) |
|
||||
| 4 | `eDP-1` |
|
||||
| 5 | `eDP-1` |
|
||||
| 1 (default), 2, 3, 4 | `desc:Apple Computer Inc StudioDisplay 0x984262A7` (EDID match, survives connector changes) |
|
||||
| 5 (default), 6, 7, 8 | `eDP-1` |
|
||||
|
||||
`default` marks the workspace each monitor shows when it connects.
|
||||
|
||||
### 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 + K` | Previous workspace (`e-1`) | Herdr keybindings |
|
||||
| `ALT + Q` / `W` / `E` / `R` / `T` | Switch to workspace 1 / 2 / 3 / 4 / 5 | — |
|
||||
| `ALT + SHIFT + Q` / `W` / `E` / `R` / `T` | Move window to workspace 1 / 2 / 3 / 4 / 5 | — |
|
||||
| `ALT + Q` / `W` / `E` / `R` | Switch to workspace 1 / 2 / 3 / 4 (Studio Display) | — |
|
||||
| `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 + A` | `omarchy-toggle-scratch scratchpad` (Tern) | — |
|
||||
| `SUPER + O` | Focus next monitor | pop window out |
|
||||
| `SUPER + SHIFT + O` | Move window to next monitor | Obsidian |
|
||||
| `SUPER + CTRL + SHIFT + J` | Move window to next monitor | — |
|
||||
| `SUPER + CTRL + SHIFT + K` | Move window to previous monitor | — |
|
||||
| `SUPER + O`, `SUPER + SHIFT + O` | Unbound | pop window out, Obsidian |
|
||||
| `ALT + SHIFT + J` | Move window to next monitor | — |
|
||||
| `ALT + SHIFT + K` | Move window to previous monitor | — |
|
||||
| `SUPER + SHIFT + CTRL + ALT + W` | Workspace `name:w` | — |
|
||||
| `SUPER + SHIFT + CTRL + ALT + H` | Workspace `name:h` | — |
|
||||
| `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/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 |
|
||||
| `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 |
|
||||
|
||||
@@ -21,6 +21,7 @@ GPU terminal emulator and the primary terminal on every role.
|
||||
- symlink_current-theme.conf
|
||||
- tab_bar.py
|
||||
- pass_keys.py
|
||||
- day_session.py
|
||||
- navigate_kitty.py
|
||||
- select_tab.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`) |
|
||||
| `ctrl+shift+c` / `ctrl+shift+v` | Copy / paste clipboard |
|
||||
| `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 |
|
||||
| `super+left` / `super+right` | Resize window narrower / wider |
|
||||
| `super+up` / `super+down` | Resize window taller / shorter (by 3) |
|
||||
|
||||
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
|
||||
|
||||
### 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`. |
|
||||
| `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`. |
|
||||
| `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)).
|
||||
Reference in new issue
Block a user