diff --git a/dotbot.default.yaml b/dotbot.default.yaml index 84c8e57..2b7f8b9 100644 --- a/dotbot.default.yaml +++ b/dotbot.default.yaml @@ -7,6 +7,7 @@ - create: - ~/.config - ~/.config/bash + - ~/.config/herdr - ~/.config/tmux - ~/.claude @@ -24,6 +25,7 @@ # apps ~/.config/alacritty: home/config/alacritty ~/.config/btop: home/config/btop + ~/.config/herdr/config.toml: home/config/herdr/config.toml # tmux ~/.tmux.conf: home/tmux.conf diff --git a/home/config/alacritty/alacritty.toml b/home/config/alacritty/alacritty.toml index e40671f..370379a 100644 --- a/home/config/alacritty/alacritty.toml +++ b/home/config/alacritty/alacritty.toml @@ -6,6 +6,7 @@ import = [ [window] padding = { x = 16, y = 8 } dynamic_title = true +option_as_alt = "OnlyLeft" [scrolling] history = 10000 diff --git a/home/config/herdr/config.toml b/home/config/herdr/config.toml new file mode 100644 index 0000000..761060f --- /dev/null +++ b/home/config/herdr/config.toml @@ -0,0 +1,136 @@ +# 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 = "one-dark" + +# 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" + +[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 = "spaces" + +# 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). diff --git a/macos/Brewfile b/macos/Brewfile index 1e5b1db..0981c2f 100644 --- a/macos/Brewfile +++ b/macos/Brewfile @@ -17,6 +17,7 @@ brew 'git' brew 'git-delta' # https://github.com/dandavison/delta brew 'gnupg' brew 'gping' +brew 'herdr' brew 'htop' brew 'iperf3' brew 'jnv'