-
-
Save naveenadi/1d9674bbd3df28836854a7843938adf2 to your computer and use it in GitHub Desktop.
herdr config
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # herdr configuration | |
| # Place this file at ~/.config/herdr/config.toml | |
| # Show first-run notification setup on startup. | |
| # Missing also shows onboarding; set false after you've chosen. | |
| # onboarding = true | |
| [theme] | |
| # Built-in themes: catppuccin, terminal, tokyo-night, dracula, nord, | |
| # gruvbox, one-dark, solarized, kanagawa, rose-pine, | |
| # vesper | |
| name = "terminal" | |
| # 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" | |
| [terminal] | |
| # Executable used for new interactive panes. | |
| # Empty means $SHELL, then /bin/sh. | |
| # default_shell = "" | |
| # Startup mode for new interactive pane shells: "auto", "login", or "non_login". | |
| # "auto" uses login shells on macOS and keeps the current behavior elsewhere. | |
| # shell_mode = "auto" | |
| # CWD policy for new panes, tabs, and workspaces when no explicit --cwd is provided. | |
| # Use "follow" to inherit the source pane/workspace, "home" for $HOME, | |
| # "current" for Herdr's process directory, or a fixed path such as "~/Projects". | |
| new_cwd = "follow" | |
| [update] | |
| # Update channel used by background checks and `herdr update`. | |
| # Use "stable" for normal releases or "preview" for opt-in preview builds. | |
| channel = "stable" | |
| [keys] | |
| # Prefix key to enter prefix mode (default: "ctrl+b") | |
| # Examples: "ctrl+b", "f12", "esc", "-" | |
| # Action bindings use explicit syntax: "prefix+n" requires the prefix; | |
| # "ctrl+alt+n" is a direct terminal-mode shortcut. | |
| # Accepted key syntax: plain keys, ctrl/shift/alt/cmd/super modifiers, and special keys like enter/tab/esc/left/right/up/down. | |
| # Named punctuation such as minus, comma, ampersand, plus, and backtick is also accepted. | |
| # Most reliable direct bindings are ctrl+letter, function keys, and explicit modified chords. | |
| # alt+..., cmd/super, and punctuation-with-modifiers may depend on your terminal/tmux setup. | |
| prefix = "ctrl+space" | |
| # Prefix-mode actions | |
| # help = "prefix+?" | |
| # settings = "prefix+s" | |
| # 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 = "" # optional, unset by default | |
| # next_workspace = "" # optional, unset by default | |
| # previous_agent = "" # optional, unset by default | |
| # next_agent = "" # optional, unset by default | |
| # focus_agent = "" # optional indexed binding, e.g. "prefix+alt+1..9" | |
| new_tab = "prefix+shift+t" | |
| rename_tab = "" | |
| # previous_tab = "prefix+p" | |
| # next_tab = "prefix+n" | |
| # switch_tab = "prefix+1..9" | |
| # switch_workspace = "" # optional indexed binding, e.g. "prefix+shift+1..9" | |
| # close_tab = "prefix+shift+x" | |
| # rename_pane = "prefix+shift+p" | |
| # 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" | |
| # split_horizontal = "prefix+minus" | |
| # close_pane = "prefix+x" | |
| # zoom = "prefix+z" # legacy alias: fullscreen | |
| # resize_mode = "prefix+r" | |
| # toggle_sidebar = "prefix+b" | |
| # Navigate-mode movement. These local shortcuts win while navigate mode is open. | |
| # They are independent from focus_pane_*. Do not include prefix+, esc, enter, tab, or 1..9 here. | |
| # navigate_workspace_up = "up" | |
| # navigate_workspace_down = "down" | |
| # navigate_pane_left = "h" # left arrow always focuses the pane to the left | |
| # navigate_pane_down = "j" | |
| # navigate_pane_up = "k" | |
| # navigate_pane_right = "l" # right arrow always focuses the pane to the right | |
| # Custom commands use the same binding syntax. | |
| # type = "shell" runs detached in the background. | |
| # type = "pane" opens a temporary pane and closes it when the command exits. | |
| # [[keys.command]] | |
| # key = "prefix+alt+g" | |
| # type = "pane" | |
| # command = "lazygit" | |
| # Legacy indexed shortcut config is still parsed for compatibility. | |
| # Prefer switch_tab, switch_workspace, and focus_agent for new configs. | |
| # [keys.indexed] | |
| # tabs = "" # e.g. "ctrl" makes ctrl+1..9 switch tabs directly | |
| # workspaces = "" # e.g. "ctrl+shift" makes ctrl+shift+1..9 switch workspaces directly | |
| # agents = "" # e.g. "alt" makes alt+1..9 focus agent rows directly | |
| # [worktrees] | |
| # directory = "~/.herdr/worktrees" | |
| [ui] | |
| # Sidebar width (auto-scaled based on workspace names, this sets the default) | |
| # sidebar_width = 26 | |
| # Minimum sidebar width when expanded (columns) | |
| # sidebar_min_width = 18 | |
| # Maximum sidebar width when expanded (columns) | |
| # sidebar_max_width = 36 | |
| # Terminal width at or below which Herdr uses the mobile single-column layout. | |
| # Increase this for foldables, tablets, or wide phone terminals. | |
| # mobile_width_threshold = 64 | |
| # Capture mouse input for Herdr's mouse UI. | |
| # Set false to let the terminal handle normal clicks, such as Cmd-clicking URLs. | |
| # Pane apps like lazygit and btop can still receive mouse when they request it. | |
| # mouse_capture = true | |
| # Optional modifier that forwards right-click hold/drag gestures to pane apps instead of opening Herdr's pane menu. | |
| # Empty/off disables this. Shift is intentionally unsupported because terminals commonly reserve Shift+mouse. | |
| # right_click_passthrough_modifier = "" | |
| # Force a full redraw when the outer terminal regains focus. | |
| # Set false to reduce visible flashing when switching back to Herdr. | |
| # Trade-off: rare host terminal surface corruption may persist until the next full redraw. | |
| redraw_on_focus_gained = false | |
| # Pane scrollback lines to scroll per mouse wheel notch. | |
| # mouse_scroll_lines = 3 | |
| # Ask for confirmation before closing a workspace | |
| # confirm_close = true | |
| # Ask for a tab name before creating a new tab. | |
| # Set false to create tabs immediately with generated names. | |
| prompt_new_tab_name = false | |
| # Show detected/reported agent labels in split pane borders when no manual pane name is set. | |
| # show_agent_labels_on_pane_borders = false | |
| # Agent panel scope: "current" or "all". Toggling it in the sidebar saves this setting. | |
| # agent_panel_scope = "all" | |
| # Accent color for highlights, borders, and navigation UI. | |
| # Accepts: hex (#89b4fa), named colors (cyan, blue, magenta), or rgb(r,g,b) | |
| # accent = "cyan" | |
| # Background notification popup delivery | |
| agent_panel_scope = "all" | |
| [ui.toast] | |
| # off = disable pop-up notifications | |
| # herdr = show top-right in-app toasts | |
| # terminal = ask the outer terminal to show a desktop notification | |
| # system = ask the OS notification service directly | |
| # delivery = "off" | |
| # Play sounds when agents change state in background workspaces | |
| [ui.sound] | |
| # enabled = true | |
| # Optional custom mp3 sound files. Relative paths are resolved from this config file's directory. | |
| # path = "sounds/notification.mp3" # one mp3 file for all sound notifications | |
| # done_path = "sounds/done.mp3" # overrides only finished notifications | |
| # request_path = "sounds/request.mp3" # overrides only needs-attention notifications | |
| # Per-agent overrides: default | on | off | |
| # By default, droid is muted. | |
| # [ui.sound.agents] | |
| # droid = "off" | |
| [session] | |
| # Resume supported AI-agent panes into their native conversation sessions after | |
| # a Herdr server restart. Requires official integrations that report session refs. | |
| # resume_agents_on_restore = true | |
| [remote] | |
| # Whether herdr manages the ssh config used for the `herdr --remote` bridge. | |
| # When true (default), herdr runs the bridge ssh through a generated config that | |
| # includes your ~/.ssh/config first and adds ServerAliveInterval/ | |
| # ServerAliveCountMax as a fallback (so any keepalive you set yourself still | |
| # wins) to survive idle network/NAT timeouts. Set false to run plain ssh against | |
| # your ssh config unchanged — this does not force keepalive off, it only stops | |
| # herdr from adding its own. | |
| # manage_ssh_config = true | |
| [experimental] | |
| # Allow launching herdr from inside a herdr-managed pane. | |
| # allow_nested = false | |
| # Experimental local Kitty graphics rendering for attached clients. | |
| # Requires a Kitty graphics-compatible outer terminal. | |
| # kitty_graphics = false | |
| # Save recent pane screen history across full server restarts. | |
| pane_history = false | |
| # While prefix mode is active, temporarily switch the macOS host input | |
| # source to an ASCII-capable keyboard layout so prefix commands register | |
| # even when a CJK IME is active, then restore the previous input source | |
| # when prefix mode exits. macOS only; best-effort. Default: false. | |
| # switch_ascii_input_source_in_prefix = false | |
| # Expose the focused pane's cursor to the outer terminal so macOS input | |
| # methods keep tracking the candidate window when TUIs paint their own | |
| # cursor (Claude Code, pi, codex). Trade-off: extra cursor visible for | |
| # apps that hide it without painting a replacement (vim normal mode, etc.). | |
| # reveal_hidden_cursor_for_cjk_ime = false | |
| # Optional allow-list: only reveal for focused panes whose detected agent | |
| # matches one of these names. Empty means apply to any focused pane. | |
| # If the list contains no valid names, the reveal does not apply. | |
| # Accepted: pi, claude, codex, gemini, cursor, cline, opencode, copilot, | |
| # kimi, kiro, droid, amp, grok, hermes, kilo, qodercli, qoder. | |
| # cjk_ime_agents = [] | |
| # Cursor shape rendered when reveal_hidden_cursor_for_cjk_ime is true. | |
| # Values: block, steady_block (default), underline, steady_underline, bar, steady_bar. | |
| # cjk_ime_cursor_shape = "steady_block" | |
| [advanced] | |
| # Maximum scrollback buffer size in bytes retained per pane terminal. | |
| # Matches Ghostty's default scrollback-limit behavior. | |
| scrollback_limit_bytes = 10000000 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment