Conversation
Installs herdr through the mise shim, ships the matching config as an Omarchy default, and adds the usual refresh/restart pair. The keybindings map tmux sessions to workspaces, windows to tabs, and keep both the prefix and direct bindings from config/tmux/tmux.conf. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
hdl, hds, hdlm, and hsl drive herdr through its socket API instead of tmux. hsl tiles into a real grid since herdr has no select-layout tiled. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
herdr is a terminal workspace manager built for AI coding agents. This installs it and ships a config that lands as close to
config/tmux/tmux.confas herdr allows, so the muscle memory carries over.Keybindings
tmux sessions map to herdr workspaces, windows to tabs, panes to panes. herdr accepts arrays of bindings per action, so every tmux key that had both a prefix form and a direct
-nform keeps both —close_pane = ["prefix+x", "alt+esc"],switch_tab = ["prefix+1..9", "alt+1..9"], and so on.Two keys had to move because tmux won the collision:
rename_panetoprefix+shift+o(herdr's defaultprefix+shift+pis our previous-session) and resize mode toprefix+ctrl+arrows(herdr's defaultprefix+ris our rename-window). Directional resize onC-M-S-arrowsruns through custom commands, since herdr only offers a resize mode;--amount 0.03is a ratio delta that works out to roughlyresize-pane -L 5.Verified empirically rather than guessed:
split_verticalis the side-by-side split, soprefix handprefix vkeep the meanings they have in our tmux config.Tabs
herdr draws the active tab as
panel_bg-colored text on anaccent-colored fill. Under theterminalthemepanel_bgis a dark grey, which is unreadable on the accent. Settingpanel_bg = "black"gives black-on-blue — the same pair as ourstatus-left "#[fg=black,bg=blue,bold]". The tab bar background becomes ANSI black rather than fully transparent as a result;panel_bgdrives both and there is no separate token.What doesn't carry over
C-bis gone.M-S-Left/Rightswap-window. No herdr action and notab moveCLI.history-limit. herdr caps scrollback by bytes instead.The alert hooks are moot now that bdcdfeb removed that system.
Dev layouts
hdl,hds,hdlm,hslmirror the tmux ones, keyed off theHERDR_PANE_ID/HERDR_TAB_ID/HERDR_WORKSPACE_IDthat herdr exports into every pane. Every split passes--no-focus, so focus stays on the editor pane — which also sidesteps the bug intdl, where the closingselect-pane -t "$opencode_pane"targets a variable that function never sets.hsltiles into a real grid because herdr has noselect-layout tiled.Testing
hdl 'echo AI1' 'echo AI2'in a scratch session produced the same geometry astdl: editor 94 cols, AI column 40 cols split into two stacked panes, terminal strip 6 rows across the bottom, tab renamed to the directory.hsl 4produced a clean 2x2 grid.herdr config checkpasses; every binding string is validated by herdr itself (it rejects unknown actions and unparseable keys)../test/clipasses../test/shellfails only onomarchy-iso checkout is available for installer coverage, which needs a sibling checkout this machine doesn't have.Existing installs pick both up through the migration, which seeds the config only when the user doesn't already have one;
omarchy refresh herdrstays the explicit way to take the shipped defaults.🤖 Generated with Claude Code