Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 34 additions & 32 deletions home/dot_config/ghostty/config
Original file line number Diff line number Diff line change
Expand Up @@ -116,38 +116,40 @@ shell-integration-features = cursor,title,ssh-env,path

# Same chords as Herdr's [keys], so muscle memory carries over.
# While Herdr runs, the `herdr` key table below hands them to it.

keybind = ctrl+alt+super+i=new_split:right
keybind = ctrl+alt+super+slash=new_split:down
keybind = ctrl+alt+super+z=toggle_split_zoom
keybind = ctrl+alt+super+x=close_surface
keybind = ctrl+alt+super+equal=equalize_splits

keybind = ctrl+alt+super+arrow_left=goto_split:left
keybind = ctrl+alt+super+arrow_down=goto_split:down
keybind = ctrl+alt+super+arrow_up=goto_split:up
keybind = ctrl+alt+super+arrow_right=goto_split:right

keybind = ctrl+alt+super+shift+arrow_left=resize_split:left,10
keybind = ctrl+alt+super+shift+arrow_down=resize_split:down,10
keybind = ctrl+alt+super+shift+arrow_up=resize_split:up,10
keybind = ctrl+alt+super+shift+arrow_right=resize_split:right,10

keybind = ctrl+alt+super+c=new_tab
keybind = ctrl+alt+super+p=previous_tab
keybind = ctrl+alt+super+n=next_tab
keybind = ctrl+alt+super+comma=prompt_tab_title
keybind = ctrl+alt+super+shift+comma=move_tab:-1
keybind = ctrl+alt+super+shift+period=move_tab:1
keybind = ctrl+alt+super+digit_1=goto_tab:1
keybind = ctrl+alt+super+digit_2=goto_tab:2
keybind = ctrl+alt+super+digit_3=goto_tab:3
keybind = ctrl+alt+super+digit_4=goto_tab:4
keybind = ctrl+alt+super+digit_5=goto_tab:5
keybind = ctrl+alt+super+digit_6=goto_tab:6
keybind = ctrl+alt+super+digit_7=goto_tab:7
keybind = ctrl+alt+super+digit_8=goto_tab:8
keybind = ctrl+alt+super+digit_9=goto_tab:9
# performable: keeps them off the menu bar; a menu shortcut fires before
# any key table, so the table could never hand it to Herdr.

keybind = performable:ctrl+alt+super+i=new_split:right
keybind = performable:ctrl+alt+super+slash=new_split:down
keybind = performable:ctrl+alt+super+z=toggle_split_zoom
keybind = performable:ctrl+alt+super+x=close_surface
keybind = performable:ctrl+alt+super+equal=equalize_splits

keybind = performable:ctrl+alt+super+arrow_left=goto_split:left
keybind = performable:ctrl+alt+super+arrow_down=goto_split:down
keybind = performable:ctrl+alt+super+arrow_up=goto_split:up
keybind = performable:ctrl+alt+super+arrow_right=goto_split:right

keybind = performable:ctrl+alt+super+shift+arrow_left=resize_split:left,10
keybind = performable:ctrl+alt+super+shift+arrow_down=resize_split:down,10
keybind = performable:ctrl+alt+super+shift+arrow_up=resize_split:up,10
keybind = performable:ctrl+alt+super+shift+arrow_right=resize_split:right,10

keybind = performable:ctrl+alt+super+c=new_tab
keybind = performable:ctrl+alt+super+p=previous_tab
keybind = performable:ctrl+alt+super+n=next_tab
keybind = performable:ctrl+alt+super+comma=prompt_tab_title
keybind = performable:ctrl+alt+super+shift+comma=move_tab:-1
keybind = performable:ctrl+alt+super+shift+period=move_tab:1
keybind = performable:ctrl+alt+super+digit_1=goto_tab:1
keybind = performable:ctrl+alt+super+digit_2=goto_tab:2
keybind = performable:ctrl+alt+super+digit_3=goto_tab:3
keybind = performable:ctrl+alt+super+digit_4=goto_tab:4
keybind = performable:ctrl+alt+super+digit_5=goto_tab:5
keybind = performable:ctrl+alt+super+digit_6=goto_tab:6
keybind = performable:ctrl+alt+super+digit_7=goto_tab:7
keybind = performable:ctrl+alt+super+digit_8=goto_tab:8
keybind = performable:ctrl+alt+super+digit_9=goto_tab:9

# Herdr-only chords: swallowed outside Herdr instead of reaching zsh
# as escape/control sequences.
Expand Down
5 changes: 3 additions & 2 deletions test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -112,9 +112,10 @@ grep -Fq 'herdr machine add evo-dev' home/.chezmoiscripts/run_after_60-add-herdr
grep -Fq '{{ if and (eq .chezmoi.os "darwin") .personal -}}' home/.chezmoiscripts/run_after_60-add-herdr-evo-dev.sh.tmpl || fail "only the personal Mac may attach evo-dev"
grep -Fq 'command = /bin/zsh' home/dot_config/ghostty/config || fail "Ghostty must launch zsh; herdr is started on demand"
grep -Fq 'config-file = ?config.local' home/dot_config/ghostty/config || fail "Ghostty must load the optional machine-local override last"
! grep -qE '^keybind = ctrl\+alt\+super\+[^=]+=text:' home/dot_config/ghostty/config || fail "Hyper chords must reach herdr, not be rewritten into tmux prefix bytes"
! grep -qE '^keybind = (performable:)?ctrl\+alt\+super\+[^=]+=text:' home/dot_config/ghostty/config || fail "Hyper chords must reach herdr, not be rewritten into tmux prefix bytes"
! grep -qE '^keybind = ctrl\+alt\+super\+[^=]+=[^i]' home/dot_config/ghostty/config || fail "Hyper actions must be performable: a menu shortcut fires before the herdr key table"
grep -q 'activate_key_table:herdr' home/dot_zshrc || fail "the herdr wrapper must hand Ghostty's Hyper chords to herdr"
[[ "$(grep -oE '^keybind = ctrl\+alt\+super\+[^=]+' home/dot_config/ghostty/config | sed 's/^keybind = //' | grep -v '+equal$')" == "$(grep -E '^keybind = herdr/.+=unbind$' home/dot_config/ghostty/config | sed 's/^keybind = herdr\///; s/=unbind$//')" ]] || fail "the herdr key table must unbind every Hyper chord Ghostty binds"
[[ "$(grep -oE '^keybind = (performable:)?ctrl\+alt\+super\+[^=]+' home/dot_config/ghostty/config | sed -E 's/^keybind = (performable:)?//' | grep -v '+equal$')" == "$(grep -E '^keybind = herdr/.+=unbind$' home/dot_config/ghostty/config | sed 's/^keybind = herdr\///; s/=unbind$//')" ]] || fail "the herdr key table must unbind every Hyper chord Ghostty binds"
[[ ! -e home/dot_config/ghostty/herdr.ghostty ]] || fail "herdr is the default; the herdr.ghostty overlay is gone"
grep -Fq "bind -n M-C-a if -F '#{@ssht}' 'send-keys M-C-a' 'switch-client -T prefix'" home/dot_config/tmux/tmux.conf || fail "Hyper chords must drive the remote tmux in an ssht pane"
grep -Fq 'tmux*:RGB:extkeys' home/dot_config/tmux/tmux.conf || fail "a remote tmux nested by ssht must get extended keys for Claude Code's Shift-Enter"
Expand Down
Loading