herdr: move config to prdlk/herdr external; document OSC 8 links

This commit is contained in:
Prad Nukala committed 2026-10-18 09:29:03 -04:00
1 parent 21f19e4187
commit 372ef31ee6
17 files changed
+17 -1425

No files matched your search

-154
View File
@@ -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"
-124
View File
@@ -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.
-134
View File
@@ -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.