mirror of
https://github.com/prdlk/dotfiles.git
synced 2026-11-02 11:32:42 +00:00
herdr: move config to prdlk/herdr external; document OSC 8 links
This commit is contained in:
1 parent
21f19e4187
commit
372ef31ee6
17 files changed
+17
-1425
No files matched your search
@@ -0,0 +1,6 @@
|
|||||||
|
[".config/herdr"]
|
||||||
|
type = "git-repo"
|
||||||
|
url = "https://github.com/prdlk/herdr.git"
|
||||||
|
refreshPeriod = "168h"
|
||||||
|
[".config/herdr".pull]
|
||||||
|
args = ["--ff-only"]
|
||||||
@@ -39,6 +39,7 @@ Fresh clone: `git submodule update --init`.
|
|||||||
| `~/.config/tmux-palette` | prdlk/tmux-palette | `.chezmoiexternals/tmux-palette.toml` |
|
| `~/.config/tmux-palette` | prdlk/tmux-palette | `.chezmoiexternals/tmux-palette.toml` |
|
||||||
| `~/.config/television` | prdlk/television | `.chezmoiexternals/television.toml` |
|
| `~/.config/television` | prdlk/television | `.chezmoiexternals/television.toml` |
|
||||||
| `~/.config/yazi` | prdlk/yazi | `.chezmoiexternals/yazi.toml` |
|
| `~/.config/yazi` | prdlk/yazi | `.chezmoiexternals/yazi.toml` |
|
||||||
|
| `~/.config/herdr` | prdlk/herdr | `.chezmoiexternals/herdr.toml` (`plugins/github/` gitignored, runtime plugin checkouts) |
|
||||||
| `~/.config/omarchy` | prdlk/omarchy | `.chezmoiexternals/omarchy.toml` (git themes/plugins live in its `extras.txt`, not this repo) |
|
| `~/.config/omarchy` | prdlk/omarchy | `.chezmoiexternals/omarchy.toml` (git themes/plugins live in its `extras.txt`, not this repo) |
|
||||||
| `~/.config/noctalia` | prdlk/noctalia | `.chezmoiexternals/noctalia.toml` (desktop/laptop roles only; `plugins/` gitignored, holds tokens) |
|
| `~/.config/noctalia` | prdlk/noctalia | `.chezmoiexternals/noctalia.toml` (desktop/laptop roles only; `plugins/` gitignored, holds tokens) |
|
||||||
| `~/.omp` | prdlk/omp | `.chezmoiexternals/omp.toml` |
|
| `~/.omp` | prdlk/omp | `.chezmoiexternals/omp.toml` |
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ Per-app config repos, one file each in `.chezmoiexternals/<app>.toml`. Each is a
|
|||||||
| `yazi.toml` | `~/.config/yazi` | [prdlk/yazi](https://github.com/prdlk/yazi) |
|
| `yazi.toml` | `~/.config/yazi` | [prdlk/yazi](https://github.com/prdlk/yazi) |
|
||||||
| `kitty.toml` | `~/.config/kitty` | [prdlk/kitty](https://github.com/prdlk/kitty) |
|
| `kitty.toml` | `~/.config/kitty` | [prdlk/kitty](https://github.com/prdlk/kitty) |
|
||||||
| `ghostty.toml` | `~/.config/ghostty` | [prdlk/ghostty](https://github.com/prdlk/ghostty) |
|
| `ghostty.toml` | `~/.config/ghostty` | [prdlk/ghostty](https://github.com/prdlk/ghostty) |
|
||||||
|
| `herdr.toml` | `~/.config/herdr` | [prdlk/herdr](https://github.com/prdlk/herdr) — `plugins/github/` (runtime plugin checkouts) is gitignored there |
|
||||||
| `omarchy.toml` | `~/.config/omarchy` | [prdlk/omarchy](https://github.com/prdlk/omarchy) — `shell.json`, hooks, menu extensions, themed templates; git-installed themes/plugins are gitignored there and restored by its `install-extras` script, `calendars.json` is never committed |
|
| `omarchy.toml` | `~/.config/omarchy` | [prdlk/omarchy](https://github.com/prdlk/omarchy) — `shell.json`, hooks, menu extensions, themed templates; git-installed themes/plugins are gitignored there and restored by its `install-extras` script, `calendars.json` is never committed |
|
||||||
| `noctalia.toml` | `~/.config/noctalia` | [prdlk/noctalia](https://github.com/prdlk/noctalia) — hand-written `config.toml` (shell, screenshot folder, theme, plugins, night light, notifications, OSD, wallpaper), `bar.toml` (bar layout, per-monitor overrides, widgets), and `palettes/` (custom palette JSON); merged under the GUI's unmanaged `~/.local/state/noctalia/settings.toml`, which wins on conflicts; `plugins/` holds runtime state with embedded tokens and is gitignored there. Linux desktop/laptop roles only ([role gate](#chezmoiignore)) |
|
| `noctalia.toml` | `~/.config/noctalia` | [prdlk/noctalia](https://github.com/prdlk/noctalia) — hand-written `config.toml` (shell, screenshot folder, theme, plugins, night light, notifications, OSD, wallpaper), `bar.toml` (bar layout, per-monitor overrides, widgets), and `palettes/` (custom palette JSON); merged under the GUI's unmanaged `~/.local/state/noctalia/settings.toml`, which wins on conflicts; `plugins/` holds runtime state with embedded tokens and is gitignored there. Linux desktop/laptop roles only ([role gate](#chezmoiignore)) |
|
||||||
|
|
||||||
|
|||||||
@@ -55,7 +55,6 @@ The repo is a [chezmoi](https://chezmoi.io) source directory. It lives at `~/.lo
|
|||||||
- gh/
|
- gh/
|
||||||
- gh-dash/
|
- gh-dash/
|
||||||
- ghostty/
|
- ghostty/
|
||||||
- herdr/
|
|
||||||
- herdr-nvim/
|
- herdr-nvim/
|
||||||
- hunk/
|
- hunk/
|
||||||
- hypr/
|
- hypr/
|
||||||
@@ -107,7 +106,7 @@ chezmoi encodes target names and attributes in source file names. These are the
|
|||||||
| `private_` | Target has group/world permissions cleared (`0600`/`0700`) | `dot_config/atuin/private_config.toml`, `dot_config/gh/private_config.yml`, `dot_config/hunk/private_state.json` |
|
| `private_` | Target has group/world permissions cleared (`0600`/`0700`) | `dot_config/atuin/private_config.toml`, `dot_config/gh/private_config.yml`, `dot_config/hunk/private_state.json` |
|
||||||
| `executable_` | Target gets the executable bit | 44 files: every script in `dot_local/bin/` (including `executable_tmux-niri-title`) and `dot_config/niri/scripts/` |
|
| `executable_` | Target gets the executable bit | 44 files: every script in `dot_local/bin/` (including `executable_tmux-niri-title`) and `dot_config/niri/scripts/` |
|
||||||
| `exact_` | Directory is exact: entries in the target that are not in the source are deleted | `dot_config/niri/exact_config.d/` (numbered `10-…kdl` through `95-…kdl` fragments) |
|
| `exact_` | Directory is exact: entries in the target that are not in the source are deleted | `dot_config/niri/exact_config.d/` (numbered `10-…kdl` through `95-…kdl` fragments) |
|
||||||
| `empty_` | File is kept even when empty | `dot_config/herdr/empty_dot_plugins.lock` |
|
| `empty_` | File is kept even when empty | None currently |
|
||||||
| `symlink_` | Target is a symlink; file content is the link destination | None currently |
|
| `symlink_` | Target is a symlink; file content is the link destination | None currently |
|
||||||
| `.tmpl` | Rendered with Go templates and chezmoi data | `dot_gitconfig.tmpl`, `dot_config/shell/aliases.sh.tmpl`, all scripts, the config and ignore files |
|
| `.tmpl` | Rendered with Go templates and chezmoi data | `dot_gitconfig.tmpl`, `dot_config/shell/aliases.sh.tmpl`, all scripts, the config and ignore files |
|
||||||
| `run_once_` / `run_onchange_` + `before_` / `after_` | Script, with run frequency and phase | See [Apply scripts](/chezmoi/scripts) |
|
| `run_once_` / `run_onchange_` + `before_` / `after_` | Script, with run frequency and phase | See [Apply scripts](/chezmoi/scripts) |
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ It is the default everywhere a desktop picks a terminal: `$TERMINAL` in the [Umb
|
|||||||
| `mouse-hide-while-typing` | `true` |
|
| `mouse-hide-while-typing` | `true` |
|
||||||
| `copy-on-select` | `false` |
|
| `copy-on-select` | `false` |
|
||||||
| `confirm-close-surface` | `false` |
|
| `confirm-close-surface` | `false` |
|
||||||
|
| `link-url` / `link-previews` | `true` / `true`. Under tmux (`mouse on`) tmux receives the click, so open links with `ctrl+shift+click`; tmux opens OSC 8 links on a plain `ctrl+click` |
|
||||||
| `app-notifications` | `no-clipboard-copy,no-config-reload` |
|
| `app-notifications` | `no-clipboard-copy,no-config-reload` |
|
||||||
| `quit-after-last-window-closed` | `false`, delay `5m` |
|
| `quit-after-last-window-closed` | `false`, delay `5m` |
|
||||||
| `command` | `shell:$HOME/.local/bin/ghostty-tmux` (see [Sessions](#sessions)) |
|
| `command` | `shell:$HOME/.local/bin/ghostty-tmux` (see [Sessions](#sessions)) |
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ herdr is a terminal multiplexer with workspaces, tabs and panes, a sidebar, a pr
|
|||||||
|
|
||||||
| | |
|
| | |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| Source | `dot_config/herdr/config.toml`, `dot_config/herdr/plugins.json`, `dot_config/herdr/plugins/config/`, `dot_config/herdr/empty_dot_plugins.lock`, `dot_config/herdr/kitty.conf`, `dot_config/herdr-nvim/config.toml` |
|
| Source | [prdlk/herdr](https://github.com/prdlk/herdr) via `.chezmoiexternals/herdr.toml` (`~/.config/herdr/`); `dot_config/herdr-nvim/config.toml` |
|
||||||
| Target | `~/.config/herdr/`, `~/.config/herdr-nvim/config.toml` |
|
| Target | `~/.config/herdr/`, `~/.config/herdr-nvim/config.toml` |
|
||||||
| Install | Not in `packages.yaml`; updated by topgrade (`herdr update`) |
|
| Install | Not in `packages.yaml`; updated by topgrade (`herdr update`) |
|
||||||
| Launch | kitty `super+a` (see [kitty](/terminal/kitty)) |
|
| Launch | kitty `super+a` (see [kitty](/terminal/kitty)) |
|
||||||
@@ -60,7 +60,7 @@ These are cyberdream colors.
|
|||||||
|
|
||||||
## Plugins
|
## Plugins
|
||||||
|
|
||||||
`plugins.json` is herdr's plugin registry. `.plugins.lock` is created empty. `plugins/config/official.browser/` and `plugins/config/vim-herdr-navigation/` hold placeholder `.keep` files for per-plugin config.
|
`plugins.json` is herdr's plugin registry. `.plugins.lock` is committed empty. `plugins/config/official.browser/` and `plugins/config/vim-herdr-navigation/` hold placeholder `.keep` files for per-plugin config. `plugins/github/`, where herdr installs plugin checkouts, is gitignored in the repo.
|
||||||
|
|
||||||
| Plugin | Description (from its manifest) |
|
| Plugin | Description (from its manifest) |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ kitty is the primary terminal. It runs in three modes: plain kitty (kitty owns s
|
|||||||
| [kitty](/terminal/kitty) | external repo via `.chezmoiexternals/kitty.toml` | Main config, host configs (tmux, herdr, goliath), kittens, custom tab bar |
|
| [kitty](/terminal/kitty) | external repo via `.chezmoiexternals/kitty.toml` | Main config, host configs (tmux, herdr, goliath), kittens, custom tab bar |
|
||||||
| [Ghostty](/terminal/ghostty) | external repo via `.chezmoiexternals/ghostty.toml` | tmux-only terminal: ctrl+shift chords → tmux, themes |
|
| [Ghostty](/terminal/ghostty) | external repo via `.chezmoiexternals/ghostty.toml` | tmux-only terminal: ctrl+shift chords → tmux, themes |
|
||||||
| [tmux](/terminal/tmux) | external repo via `.chezmoiexternals/tmux.toml` | Prefix, bindings, kitty-style tabs with Nerd Font icons, resurrect/continuum persistence, Niri titles |
|
| [tmux](/terminal/tmux) | external repo via `.chezmoiexternals/tmux.toml` | Prefix, bindings, kitty-style tabs with Nerd Font icons, resurrect/continuum persistence, Niri titles |
|
||||||
| [herdr](/terminal/herdr) | `dot_config/herdr/`, `dot_config/herdr-nvim/` | Agent-aware multiplexer: keys, theme, plugins, Claude hook |
|
| [herdr](/terminal/herdr) | external repo via `.chezmoiexternals/herdr.toml`, plus `dot_config/herdr-nvim/` | Agent-aware multiplexer: keys, theme, plugins, Claude hook |
|
||||||
|
|
||||||
## Shared conventions
|
## Shared conventions
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ Every config ends with:
|
|||||||
include ~/.local/state/omarchy/current/theme/kitty.conf
|
include ~/.local/state/omarchy/current/theme/kitty.conf
|
||||||
```
|
```
|
||||||
|
|
||||||
Colors come from the active Omarchy theme; it is included last so it wins. `current-theme.conf` is a symlink committed in the repo, pointing at `themes/cyberdream.conf`. Only the legacy `dot_config/herdr/kitty.conf` includes `current-theme.conf`; the main config does not. `themes/` holds `cyberdream`, `koda-dark`, and `koda-light` color files.
|
Colors come from the active Omarchy theme; it is included last so it wins. `current-theme.conf` is a symlink committed in the repo, pointing at `themes/cyberdream.conf`. Only the legacy `~/.config/herdr/kitty.conf` ([prdlk/herdr](https://github.com/prdlk/herdr)) includes `current-theme.conf`; the main config does not. `themes/` holds `cyberdream`, `koda-dark`, and `koda-light` color files.
|
||||||
|
|
||||||
## kitty.conf
|
## kitty.conf
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ The prefix is `ctrl+b` (the byte Ghostty's `ctrl+shift` chords send). `ctrl+spac
|
|||||||
|
|
||||||
| Option | Value |
|
| Option | Value |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| `default-terminal` | `tmux-256color`; `RGB` override for every terminal; `clipboard` feature; `extkeys` for xterm-kitty |
|
| `default-terminal` | `tmux-256color`; `RGB` override for every terminal; `clipboard` and `hyperlinks` (OSC 8) features; `extkeys` for xterm-kitty. Features apply after `tmux kill-server` |
|
||||||
| `extended-keys` | `on`, format `csi-u` |
|
| `extended-keys` | `on`, format `csi-u` |
|
||||||
| `base-index` / `pane-base-index` | `1` / `1`; `renumber-windows on` |
|
| `base-index` / `pane-base-index` | `1` / `1`; `renumber-windows on` |
|
||||||
| `status-position` | `top`, `status-interval 5` |
|
| `status-position` | `top`, `status-interval 5` |
|
||||||
@@ -49,6 +49,7 @@ These settings are what [yazi](/tools/yazi) needs inside tmux. `allow-passthroug
|
|||||||
| `prefix h` / `prefix v` | Split below / right, pane cwd |
|
| `prefix h` / `prefix v` | Split below / right, pane cwd |
|
||||||
| `prefix x` | Kill pane |
|
| `prefix x` | Kill pane |
|
||||||
| `S-Enter` (no prefix) | Sends `ESC[13;2u` to the pane unchanged. With `extended-keys on`, tmux would otherwise turn Shift+Enter into plain Enter for apps that never requested extended keys, and coding agents (omp, Claude Code) would submit instead of inserting a newline |
|
| `S-Enter` (no prefix) | Sends `ESC[13;2u` to the pane unchanged. With `extended-keys on`, tmux would otherwise turn Shift+Enter into plain Enter for apps that never requested extended keys, and coding agents (omp, Claude Code) would submit instead of inserting a newline |
|
||||||
|
| `C-MouseDown1Pane` (ctrl+click) | Opens the OSC 8 hyperlink under the mouse (`#{mouse_hyperlink}`) with `xdg-open` (`open` on macOS); without one, the click goes to the pane. Plain-text URLs: `ctrl+shift+click`, handled by Ghostty |
|
||||||
| `M-Enter` / `M-S-Enter` / `M-Escape` (no prefix) | Split below / split right / kill pane |
|
| `M-Enter` / `M-S-Enter` / `M-Escape` (no prefix) | Split below / split right / kill pane |
|
||||||
| `C-h` / `C-j` / `C-k` / `C-l` (no prefix) | Vim-aware pane focus. In an nvim/vim/fzf pane (`@pane-is-vim`, set by smart-splits, or the pane's command), the key goes to nvim. nvim's `config.pane_nav` moves between its own splits and, at its outer edge, runs `tmux select-pane -t $TMUX_PANE`. Elsewhere tmux moves directly. Also bound in copy mode |
|
| `C-h` / `C-j` / `C-k` / `C-l` (no prefix) | Vim-aware pane focus. In an nvim/vim/fzf pane (`@pane-is-vim`, set by smart-splits, or the pane's command), the key goes to nvim. nvim's `config.pane_nav` moves between its own splits and, at its outer edge, runs `tmux select-pane -t $TMUX_PANE`. Elsewhere tmux moves directly. Also bound in copy mode |
|
||||||
| `prefix C-l` | Send `C-l` (clear screen) |
|
| `prefix C-l` | Send `C-l` (clear screen) |
|
||||||
|
|||||||
+1
-1
Submodule dot_config/fish updated: e62dd44fb2...87d8aa0e9c.
@@ -1,154 +0,0 @@
|
|||||||
onboarding = false
|
|
||||||
|
|
||||||
[ui]
|
|
||||||
# Borderless, like the compositor: panes are told apart by the gap between them
|
|
||||||
# and by the terminal background, not by a drawn frame. Hyprland already puts a
|
|
||||||
# gradient border around the window; a second frame inside it is noise.
|
|
||||||
pane_borders = false
|
|
||||||
pane_outer_borders = false
|
|
||||||
prompt_new_tab_name = false
|
|
||||||
accent = "#5ea1ff"
|
|
||||||
|
|
||||||
status_indicators = "symbols"
|
|
||||||
[theme]
|
|
||||||
name = "terminal"
|
|
||||||
auto_switch = false
|
|
||||||
|
|
||||||
[theme.custom]
|
|
||||||
# Panes keep the terminal's own background, so kitty's translucency, and the
|
|
||||||
# Hyprland blur under it, survive inside herdr.
|
|
||||||
panel_bg = "reset"
|
|
||||||
|
|
||||||
# Surfaces: bg for the spaces rail, bg_alt for the row under the cursor,
|
|
||||||
# bg_highlight for selection — the same three-step ramp as the rest of the theme.
|
|
||||||
sidebar_bg = "#16181a"
|
|
||||||
active_row_bg = "#1e2124"
|
|
||||||
selection_bg = "#3c4048"
|
|
||||||
|
|
||||||
# `accent` fills the active tab and `surface_dim` writes its label, so the pair
|
|
||||||
# is set to the same plate kitty's tab bar uses: the accent mixed 20% into the
|
|
||||||
# background, with the accent itself for the title. A raw #5ea1ff fill would put
|
|
||||||
# a neon block above the panes and swallow the label.
|
|
||||||
accent = "#243348"
|
|
||||||
surface_dim = "#5ea1ff"
|
|
||||||
|
|
||||||
# Agent-state marks.
|
|
||||||
green = "#5eff6c"
|
|
||||||
yellow = "#f1ff5e"
|
|
||||||
red = "#ff6e5e"
|
|
||||||
peach = "#ffbd5e"
|
|
||||||
mauve = "#bd5eff"
|
|
||||||
|
|
||||||
[ui.toast]
|
|
||||||
delivery = "system"
|
|
||||||
|
|
||||||
[keys]
|
|
||||||
# tmux-style bindings (prefix is the leader, default ctrl+b)
|
|
||||||
split_vertical = "prefix+%"
|
|
||||||
split_horizontal = 'prefix+"'
|
|
||||||
detach = "prefix+d"
|
|
||||||
|
|
||||||
# leader+s opens the workspace ("spaces") picker (settings moves off prefix+s to make room)
|
|
||||||
workspace_picker = "prefix+s"
|
|
||||||
settings = "prefix+shift+s"
|
|
||||||
|
|
||||||
# vim-style j/k move the selection up/down inside the spaces picker
|
|
||||||
# (frees pane up/down in navigate mode; use arrows or ctrl+b j/k for pane focus)
|
|
||||||
navigate_workspace_up = "k"
|
|
||||||
navigate_workspace_down = "j"
|
|
||||||
navigate_pane_up = ""
|
|
||||||
navigate_pane_down = ""
|
|
||||||
|
|
||||||
# leader+. / leader+, step to the next / previous agent in the panel
|
|
||||||
next_agent = "prefix+."
|
|
||||||
previous_agent = "prefix+,"
|
|
||||||
|
|
||||||
# leader+j / leader+k cycle next / previous workspace (driven by ghostty
|
|
||||||
# ctrl+shift+j/k). Frees prefix+j/k from pane focus, which moves to arrows;
|
|
||||||
# directional pane movement is also on ctrl+hjkl via vim-herdr-navigation.
|
|
||||||
next_workspace = "prefix+j"
|
|
||||||
previous_workspace = "prefix+k"
|
|
||||||
focus_pane_up = "prefix+up"
|
|
||||||
focus_pane_down = "prefix+down"
|
|
||||||
focus_pane_left = "prefix+left"
|
|
||||||
focus_pane_right = "prefix+right"
|
|
||||||
|
|
||||||
# leader+a focuses the agent panel for keyboard browsing
|
|
||||||
# (j/k to move, enter to jump, esc to leave) — needs the rebuilt binary
|
|
||||||
|
|
||||||
[experimental]
|
|
||||||
pane_history = false
|
|
||||||
kitty_graphics = true
|
|
||||||
|
|
||||||
switch_ascii_input_source_in_prefix = true
|
|
||||||
[[keys.command]]
|
|
||||||
key = "ctrl+h"
|
|
||||||
type = "plugin_action"
|
|
||||||
command = "vim-herdr-navigation.left"
|
|
||||||
description = "navigate left (vim/herdr)"
|
|
||||||
|
|
||||||
[[keys.command]]
|
|
||||||
key = "ctrl+j"
|
|
||||||
type = "plugin_action"
|
|
||||||
command = "vim-herdr-navigation.down"
|
|
||||||
description = "navigate down (vim/herdr)"
|
|
||||||
|
|
||||||
[[keys.command]]
|
|
||||||
key = "ctrl+k"
|
|
||||||
type = "plugin_action"
|
|
||||||
command = "vim-herdr-navigation.up"
|
|
||||||
description = "navigate up (vim/herdr)"
|
|
||||||
|
|
||||||
[[keys.command]]
|
|
||||||
key = "ctrl+l"
|
|
||||||
type = "plugin_action"
|
|
||||||
command = "vim-herdr-navigation.right"
|
|
||||||
description = "navigate right (vim/herdr)"
|
|
||||||
|
|
||||||
[[keys.command]]
|
|
||||||
key = "prefix+e"
|
|
||||||
type = "plugin_action"
|
|
||||||
command = "chmarax.herdr-nvim.toggle"
|
|
||||||
description = "nvim sidebar (left of current panes; see ~/.config/herdr-nvim/config.toml)"
|
|
||||||
|
|
||||||
[[keys.command]]
|
|
||||||
key = "prefix+o"
|
|
||||||
type = "plugin_action"
|
|
||||||
command = "chmarax.herdr-nvim.pick-file"
|
|
||||||
description = "open file from agent output"
|
|
||||||
|
|
||||||
[[keys.command]]
|
|
||||||
key = "prefix+t"
|
|
||||||
type = "plugin_action"
|
|
||||||
command = "switchboard.menu"
|
|
||||||
description = "Switchboard menu"
|
|
||||||
|
|
||||||
[[keys.command]]
|
|
||||||
key = "prefix+shift+p"
|
|
||||||
type = "plugin_action"
|
|
||||||
command = "switchboard.commands"
|
|
||||||
description = "Switchboard commands"
|
|
||||||
|
|
||||||
[[keys.command]]
|
|
||||||
key = "prefix+shift+l"
|
|
||||||
type = "plugin_action"
|
|
||||||
command = "switchboard.git"
|
|
||||||
description = "Switchboard git"
|
|
||||||
|
|
||||||
[[keys.command]]
|
|
||||||
key = "prefix+shift+k"
|
|
||||||
type = "plugin_action"
|
|
||||||
command = "switchboard.projects"
|
|
||||||
description = "Switchboard projects"
|
|
||||||
|
|
||||||
[[keys.command]]
|
|
||||||
key = "prefix+y"
|
|
||||||
type = "shell"
|
|
||||||
command = '"${HERDR_BIN_PATH}" plugin pane open --plugin official.browser --entrypoint browser --placement split --direction right --focus'
|
|
||||||
description = "open browser in right split"
|
|
||||||
|
|
||||||
[[keys.command]]
|
|
||||||
key = "prefix+shift+o"
|
|
||||||
type = "shell"
|
|
||||||
command = '"${HERDR_BIN_PATH}" plugin pane open --plugin official.browser --entrypoint browser --placement overlay --focus'
|
|
||||||
description = "open browser overlay"
|
|
||||||
@@ -1,124 +0,0 @@
|
|||||||
onboarding = false
|
|
||||||
|
|
||||||
[ui.toast]
|
|
||||||
delivery = "system"
|
|
||||||
|
|
||||||
[ui]
|
|
||||||
|
|
||||||
show_agent_labels_on_pane_borders = true
|
|
||||||
agent_panel_sort = "priority"
|
|
||||||
|
|
||||||
[keys]
|
|
||||||
# tmux-style bindings (prefix is the leader, default ctrl+b)
|
|
||||||
split_vertical = "prefix+%"
|
|
||||||
split_horizontal = 'prefix+"'
|
|
||||||
detach = "prefix+d"
|
|
||||||
|
|
||||||
# leader+s opens the workspace ("spaces") picker (settings moves off prefix+s to make room)
|
|
||||||
workspace_picker = "prefix+s"
|
|
||||||
settings = "prefix+shift+s"
|
|
||||||
|
|
||||||
# vim-style j/k move the selection up/down inside the spaces picker
|
|
||||||
# (frees pane up/down in navigate mode; use arrows or ctrl+b j/k for pane focus)
|
|
||||||
navigate_workspace_up = "k"
|
|
||||||
navigate_workspace_down = "j"
|
|
||||||
navigate_pane_up = ""
|
|
||||||
navigate_pane_down = ""
|
|
||||||
|
|
||||||
# leader+. / leader+, step to the next / previous agent in the panel
|
|
||||||
next_agent = "prefix+."
|
|
||||||
previous_agent = "prefix+,"
|
|
||||||
|
|
||||||
# leader+j / leader+k cycle next / previous workspace (driven by ghostty
|
|
||||||
# ctrl+shift+j/k). Frees prefix+j/k from pane focus, which moves to arrows;
|
|
||||||
# directional pane movement is also on ctrl+hjkl via vim-herdr-navigation.
|
|
||||||
next_workspace = "prefix+j"
|
|
||||||
previous_workspace = "prefix+k"
|
|
||||||
focus_pane_up = "prefix+up"
|
|
||||||
focus_pane_down = "prefix+down"
|
|
||||||
focus_pane_left = "prefix+left"
|
|
||||||
focus_pane_right = "prefix+right"
|
|
||||||
|
|
||||||
# leader+a focuses the agent panel for keyboard browsing
|
|
||||||
# (j/k to move, enter to jump, esc to leave) — needs the rebuilt binary
|
|
||||||
|
|
||||||
[experimental]
|
|
||||||
pane_history = false
|
|
||||||
kitty_graphics = true
|
|
||||||
|
|
||||||
switch_ascii_input_source_in_prefix = true
|
|
||||||
[theme]
|
|
||||||
name = "terminal"
|
|
||||||
auto_switch = false
|
|
||||||
|
|
||||||
[[keys.command]]
|
|
||||||
key = "ctrl+h"
|
|
||||||
type = "plugin_action"
|
|
||||||
command = "vim-herdr-navigation.left"
|
|
||||||
description = "navigate left (vim/herdr)"
|
|
||||||
|
|
||||||
[[keys.command]]
|
|
||||||
key = "ctrl+j"
|
|
||||||
type = "plugin_action"
|
|
||||||
command = "vim-herdr-navigation.down"
|
|
||||||
description = "navigate down (vim/herdr)"
|
|
||||||
|
|
||||||
[[keys.command]]
|
|
||||||
key = "ctrl+k"
|
|
||||||
type = "plugin_action"
|
|
||||||
command = "vim-herdr-navigation.up"
|
|
||||||
description = "navigate up (vim/herdr)"
|
|
||||||
|
|
||||||
[[keys.command]]
|
|
||||||
key = "ctrl+l"
|
|
||||||
type = "plugin_action"
|
|
||||||
command = "vim-herdr-navigation.right"
|
|
||||||
description = "navigate right (vim/herdr)"
|
|
||||||
|
|
||||||
[[keys.command]]
|
|
||||||
key = "prefix+e"
|
|
||||||
type = "plugin_action"
|
|
||||||
command = "chmarax.herdr-nvim.toggle"
|
|
||||||
description = "nvim sidebar"
|
|
||||||
|
|
||||||
[[keys.command]]
|
|
||||||
key = "prefix+o"
|
|
||||||
type = "plugin_action"
|
|
||||||
command = "chmarax.herdr-nvim.pick-file"
|
|
||||||
description = "open file from agent output"
|
|
||||||
|
|
||||||
[[keys.command]]
|
|
||||||
key = "prefix+t"
|
|
||||||
type = "plugin_action"
|
|
||||||
command = "switchboard.menu"
|
|
||||||
description = "Switchboard menu"
|
|
||||||
|
|
||||||
[[keys.command]]
|
|
||||||
key = "prefix+shift+p"
|
|
||||||
type = "plugin_action"
|
|
||||||
command = "switchboard.commands"
|
|
||||||
description = "Switchboard commands"
|
|
||||||
|
|
||||||
[[keys.command]]
|
|
||||||
key = "prefix+shift+l"
|
|
||||||
type = "plugin_action"
|
|
||||||
command = "switchboard.git"
|
|
||||||
description = "Switchboard git"
|
|
||||||
|
|
||||||
[[keys.command]]
|
|
||||||
key = "prefix+shift+k"
|
|
||||||
type = "plugin_action"
|
|
||||||
command = "switchboard.projects"
|
|
||||||
description = "Switchboard projects"
|
|
||||||
|
|
||||||
[[keys.command]]
|
|
||||||
key = "prefix+y"
|
|
||||||
type = "shell"
|
|
||||||
command = '"${HERDR_BIN_PATH}" plugin pane open --plugin official.browser --entrypoint browser --placement split --direction right --focus'
|
|
||||||
description = "open browser in right split"
|
|
||||||
|
|
||||||
[[keys.command]]
|
|
||||||
key = "prefix+shift+o"
|
|
||||||
type = "shell"
|
|
||||||
command = '"${HERDR_BIN_PATH}" plugin pane open --plugin official.browser --entrypoint browser --placement overlay --focus'
|
|
||||||
description = "open browser overlay"
|
|
||||||
Whitespace-only changes.
@@ -1,134 +0,0 @@
|
|||||||
# Font Configuration
|
|
||||||
font_size 11
|
|
||||||
font_family VictorMono Nerd Font
|
|
||||||
bold_italic_font auto
|
|
||||||
shell_integration enabled
|
|
||||||
# Control
|
|
||||||
allow_remote_control yes
|
|
||||||
listen_on unix:@mykitty
|
|
||||||
# Shell — every kitty OS window attaches to the shared tmux session
|
|
||||||
shell tmux new-session -A -s main
|
|
||||||
# Window Configuration
|
|
||||||
window_padding_width 12
|
|
||||||
background_opacity 0.9
|
|
||||||
hide_window_decorations yes
|
|
||||||
# Layouts now handled by tmux; keep fat available for any non-tmux use
|
|
||||||
enabled_layouts fat:bias=75;full_size=1;mirrored=false
|
|
||||||
# Cursor Configuration
|
|
||||||
cursor_blink_interval 1
|
|
||||||
# Scrollback (tmux owns scrollback in-session; this covers anything outside it)
|
|
||||||
scrollback_lines 3000
|
|
||||||
# Terminal features
|
|
||||||
copy_on_select auto
|
|
||||||
strip_trailing_spaces smart
|
|
||||||
# ── Key bindings → forwarded to tmux (prefix C-b = \x02) ────────────────
|
|
||||||
# send_text triggers the exact bind-keys in tmux.conf, in-session.
|
|
||||||
# Panes (kitty "windows" → tmux panes)
|
|
||||||
map super+w send_text all \x02x
|
|
||||||
map super+t send_text all \x02%
|
|
||||||
map super+n send_text all \x02"
|
|
||||||
# Clipboard (kitty-native)
|
|
||||||
map super+c copy_to_clipboard
|
|
||||||
map super+v paste_from_clipboard
|
|
||||||
map ctrl+v paste_from_clipboard
|
|
||||||
# Tabs (kitty "tabs" → tmux windows; your bind-key t/H/L)
|
|
||||||
map alt+h send_text all \x02H
|
|
||||||
map alt+l send_text all \x02L
|
|
||||||
map super+enter send_text all \x02t
|
|
||||||
# Pane navigation: pass ctrl+hjkl through to tmux/nvim
|
|
||||||
# (pass_keys.py kitten removed — vim-tmux-navigator replaces it)
|
|
||||||
# Pane resizing (prefix + ctrl+arrow = tmux default resize)
|
|
||||||
map super+left send_text all \x02\x1b[1;5D
|
|
||||||
map super+right send_text all \x02\x1b[1;5C
|
|
||||||
map super+up send_text all \x02\x1b[1;5A
|
|
||||||
map super+down send_text all \x02\x1b[1;5B
|
|
||||||
|
|
||||||
# Direct window jumps (tmux prefix+N)
|
|
||||||
map alt+q send_text all \x021
|
|
||||||
map alt+w send_text all \x022
|
|
||||||
map alt+e send_text all \x023
|
|
||||||
map alt+r send_text all \x024
|
|
||||||
map alt+t send_text all \x025
|
|
||||||
map alt+y send_text all \x026
|
|
||||||
map alt+u send_text all \x027
|
|
||||||
map alt+i send_text all \x028
|
|
||||||
map alt+o send_text all \x029
|
|
||||||
# Session controls
|
|
||||||
map super+d send_text all \x02d
|
|
||||||
map super+s send_text all \x02s
|
|
||||||
map super+z send_text all \x02z
|
|
||||||
# ── Tab bar: hidden — tmux-dotbar owns the status UI ────────────────────
|
|
||||||
tab_bar_style hidden
|
|
||||||
# BEGIN_KITTY_THEME
|
|
||||||
# cyberdream (current-theme.conf → themes/cyberdream.conf)
|
|
||||||
include current-theme.conf
|
|
||||||
# END_KITTY_THEME
|
|
||||||
#
|
|
||||||
active_opacity 0.9
|
|
||||||
|
|
||||||
|
|
||||||
# ── Plugins ──────────────────────────────────────────────────────────────
|
|
||||||
set -g @plugin 'tmux-plugins/tpm'
|
|
||||||
set -g @plugin 'tmux-plugins/tmux-sensible'
|
|
||||||
set -g @plugin 'vaaleyard/tmux-dotbar'
|
|
||||||
set -g @plugin 'joshmedeski/tmux-nerd-font-window-name'
|
|
||||||
set -g @plugin 'omerxx/tmux-sessionx'
|
|
||||||
# ── Kitty compatibility ──────────────────────────────────────────────────
|
|
||||||
set -g default-terminal "tmux-256color"
|
|
||||||
set -ga terminal-overrides ",xterm-kitty:Tc"
|
|
||||||
set -as terminal-features ",xterm-kitty:RGB:usstyle:hyperlinks:clipboard:extkeys"
|
|
||||||
set -s extended-keys on # kitty keyboard protocol → nvim
|
|
||||||
# Kitty graphics protocol passthrough (yazi / image preview)
|
|
||||||
set -g allow-passthrough on
|
|
||||||
set -ga update-environment TERM
|
|
||||||
set -ga update-environment TERM_PROGRAM
|
|
||||||
# ── Clipboard (Wayland / Niri) ───────────────────────────────────────────
|
|
||||||
set -g set-clipboard on # OSC 52 — covers ssh'd sessions
|
|
||||||
set -g mouse on
|
|
||||||
setw -g mode-keys vi
|
|
||||||
bind -T copy-mode-vi v send -X begin-selection
|
|
||||||
bind -T copy-mode-vi y send -X copy-pipe-and-cancel "wl-copy"
|
|
||||||
bind -T copy-mode-vi Y send -X copy-pipe-and-cancel "wl-copy" \; send -X cancel
|
|
||||||
bind -T copy-mode-vi MouseDragEnd1Pane send -X copy-pipe-and-cancel "wl-copy"
|
|
||||||
# ── Titles → Niri active window ──────────────────────────────────────────
|
|
||||||
set -g set-titles on
|
|
||||||
set -g set-titles-string "#S › #{pane_current_command} · #{b:pane_current_path}"
|
|
||||||
setw -g automatic-rename on
|
|
||||||
set -g automatic-rename-format "#{window_icon} #{b:pane_current_path}"
|
|
||||||
# ── QoL ──────────────────────────────────────────────────────────────────
|
|
||||||
set -g history-limit 50000
|
|
||||||
set -g base-index 1
|
|
||||||
setw -g pane-base-index 1
|
|
||||||
set -g renumber-windows on
|
|
||||||
# ── Keybinds ─────────────────────────────────────────────────────────────
|
|
||||||
bind-key t new-window -c "#{pane_current_path}"
|
|
||||||
bind-key [ previous-window
|
|
||||||
bind-key ] next-window
|
|
||||||
bind-key H previous-window
|
|
||||||
bind-key L next-window
|
|
||||||
# Splits inherit cwd (kitty super+t / super+n land here)
|
|
||||||
# vsplit: new pane right at 35% width · hsplit: new pane below at 25% height
|
|
||||||
bind % split-window -h -l 30% -c "#{pane_current_path}"
|
|
||||||
bind '"' split-window -v -l 25% -c "#{pane_current_path}"
|
|
||||||
# Copy-mode entry (default prefix+[ is rebound above)
|
|
||||||
bind Escape copy-mode
|
|
||||||
# ── Pane navigation: ctrl+hjkl, no prefix ────────────────────────────────
|
|
||||||
# Vim-aware: if the pane runs (n)vim, forward the key so vim handles its
|
|
||||||
# own window movement (pair with vim-tmux-navigator in AstroNvim).
|
|
||||||
is_vim="ps -o state= -o comm= -t '#{pane_tty}' | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|l?n?vim?x?|fzf)(diff)?$'"
|
|
||||||
bind -n C-h if-shell "$is_vim" 'send-keys C-h' 'select-pane -L'
|
|
||||||
bind -n C-j if-shell "$is_vim" 'send-keys C-j' 'select-pane -D'
|
|
||||||
bind -n C-k if-shell "$is_vim" 'send-keys C-k' 'select-pane -U'
|
|
||||||
bind -n C-l if-shell "$is_vim" 'send-keys C-l' 'select-pane -R'
|
|
||||||
# Same nav from inside copy-mode
|
|
||||||
bind -T copy-mode-vi C-h select-pane -L
|
|
||||||
bind -T copy-mode-vi C-j select-pane -D
|
|
||||||
bind -T copy-mode-vi C-k select-pane -U
|
|
||||||
bind -T copy-mode-vi C-l select-pane -R
|
|
||||||
# Clear-screen escape hatch (C-l is consumed above)
|
|
||||||
bind C-l send-keys C-l
|
|
||||||
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
|
|
||||||
run '~/.tmux/plugins/tpm/tpm'
|
|
||||||
|
|
||||||
|
|
||||||
Lets synchronize the Mod+H and Mod+L from niri to work with the tmux window bindings for optimized key productivity
|
|
||||||
File diff suppressed because it is too large.
Load diff
Whitespace-only changes.
Whitespace-only changes.
Reference in new issue
Block a user