# herdr configuration
# Place this file at ~/.config/herdr/config.toml
# Apply changes with: herdr server reload-config

# Show first-run notification setup on startup.
# Missing also shows onboarding; set false after you've chosen.
onboarding = false

[theme]
# Built-in themes: catppuccin, terminal, tokyo-night, dracula, nord,
#                  gruvbox, one-dark, solarized, kanagawa, rose-pine,
#                  vesper
name = "vesper"

# Follow host terminal light/dark appearance and switch Herdr UI themes.
# Existing manual behavior is unchanged unless this is true.
# auto_switch = false
# dark_name = "catppuccin"
# light_name = "catppuccin-latte"

# Override individual color tokens on top of the base theme.
# Accepts: hex (#rrggbb), named colors, rgb(r,g,b), or panel_bg = "reset"
# [theme.custom]
# panel_bg = "reset"
# accent = "#f5c2e7"
# red = "#ff6188"
# green = "#a6e3a1"

auto_switch = false
[terminal]
# Executable used for new interactive panes.
# Empty means $SHELL, then /bin/sh.
default_shell = "/bin/zsh"

[update]
# Update channel used by background version checks and `herdr update`.
# Use "stable" for normal releases or "preview" for opt-in preview builds.
channel = "stable"


[keys]
prefix = "ctrl+a"

# Prefix-mode actions
help = "prefix+?"
settings = "prefix+shift+s" # default prefix+s is used for split_horizontal below
# detach = "prefix+q"
# reload_config = "prefix+shift+r"
# open_notification_target = "prefix+o"
# workspace_picker = "prefix+w"
# goto = "prefix+g"
# new_workspace = "prefix+shift+n"
# new_worktree = "prefix+shift+g"
# open_worktree = ""    # optional, unset by default
# remove_worktree = ""  # optional, unset by default; opens confirmation
# rename_workspace = "prefix+shift+w"
# close_workspace = "prefix+shift+d"

previous_workspace = "prefix+ctrl+k"
next_workspace = "prefix+ctrl+j"

# previous_agent = ""     # optional, unset by default
# next_agent = ""         # optional, unset by default
# focus_agent = ""        # optional indexed binding, e.g. "prefix+alt+1..9"
# remote_image_paste = "ctrl+v" # only active in herdr --remote; empty disables raw-key image paste

new_tab = "prefix+c"
rename_tab = ["prefix+comma", "prefix+shift+t"]
previous_tab = ["prefix+p", "prefix+ctrl+h"]
next_tab = ["prefix+n", "prefix+ctrl+l"]
switch_tab = "prefix+1..9"
switch_workspace = "prefix+alt+1..9"
close_tab = "prefix+shift+x"
rename_pane = ["prefix+shift+p", "prefix+<"] # prefix+shift+comma
# edit_scrollback = "prefix+e"
focus_pane_left = "prefix+h"
focus_pane_down = "prefix+j"
focus_pane_up = "prefix+k"
focus_pane_right = "prefix+l"
# cycle_pane_next = "prefix+tab"
# cycle_pane_previous = "prefix+shift+tab"
# last_pane = ""          # optional, unset by default; bind e.g. "prefix+tab" for global back-and-forth
split_vertical = ["prefix+v", "prefix+|"]
split_horizontal = ["prefix+s", "prefix+minus"]
# close_pane = "prefix+x"
# zoom = "prefix+z"       # legacy alias: fullscreen
resize_mode = "prefix+r"
toggle_sidebar = "prefix+b"

copy_mode = ["prefix+[", "prefix+esc"]

# [worktrees]
# directory = "~/.herdr/worktrees"

[ui]

# Ask for a tab name before creating a new tab.
prompt_new_tab_name = true

# Draw borders around split panes.
pane_borders = true

# Keep split panes visually separated instead of sharing divider borders.
pane_gaps = true

# Show detected/reported agent labels in split pane borders when no manual pane name is set.
show_agent_labels_on_pane_borders = true

# Agent panel ordering: "spaces" (grouped by space) or "priority" (attention queue).
# "workspaces" is accepted as an alias for "spaces".
agent_panel_sort = "priority"

# Accent color for highlights, borders, and navigation UI.
# Accepts: hex (#89b4fa), named colors (cyan, blue, magenta), or rgb(r,g,b)
accent = "cyan"

[ui.toast]
delivery = "herdr"

[ui.toast.herdr]
position = "bottom-right"

[ui.toast.clipboard]
enabled = true
position = "bottom-center"


[experimental]
# Save recent pane screen history across full server restarts.
pane_history = false

[advanced]
scrollback_limit_bytes = 33554432 # 32 MiB ~ 50k lines (tmux history-limit)

## Differences to tmux
# - prefix+n changed meaning: in tmux it was swap-pane -U; in herdr it's next tab. Pane swapping is prefix+shift+h/j/k/l - which was pane resize in your tmux. Resizing is now a mode: prefix+r.
# - No equivalents: window reordering (</>), paste buffers (b/p/P), vi mode-keys, base-index, escape-time, focus-events, aggressive-resize. Config reload is herdr server reload-config instead of prefix+r. The status-bar cpu/mem/clock plugins are replaced by herdr's sidebar; tmux-fzf's pickers map to prefix+w (workspace picker) and prefix+g (goto).
