Skip to content

Fix terminal shortcuts and simplify dotfiles adoption - #4

Merged
froppa merged 5 commits into
masterfrom
agent/fix-dotfiles-adoption
Aug 8, 2026
Merged

Fix terminal shortcuts and simplify dotfiles adoption#4
froppa merged 5 commits into
masterfrom
agent/fix-dotfiles-adoption

Conversation

@froppa

@froppa froppa commented Aug 8, 2026

Copy link
Copy Markdown
Owner

What changed

  • seed Ghostty at its current config.ghostty path so fresh macOS installs load it
  • pass extended keys and focus events through tmux for Claude Code
  • make Command-K send a direct clear-screen key through tmux
  • preserve existing root Git configuration while keeping repository defaults updateable in an included managed file on new machines
  • prompt for missing Git name/email on a brand-new machine
  • remove and ignore Raycast exports so private local data is not carried between machines
  • document the reliable manual Raycast setup

Why

The repository used Ghostty's legacy filename, tmux did not pass modified keys or focus events, and the initial create-only Git approach prevented later default updates. Bootstrap also replaced existing Git configuration, while the Raycast export exposed personal clipboard content without reliably restoring settings.

Impact

Fresh machines load Ghostty automatically and receive an updateable managed Git defaults include. Existing root Git configurations remain untouched. Shift-Enter and focus changes reach Claude Code through tmux without the paste-producing fallback, and Raycast adoption no longer relies on a privacy-sensitive export.

Validation

  • ./test.sh
  • Ghostty 1.3.1 +validate-config
  • isolated tmux server reports extended keys, Ghostty extkeys, and focus-events on
  • Chezmoi maps the managed Git defaults include and Ghostty config to their intended targets
  • git diff --check

@froppa
froppa force-pushed the agent/fix-dotfiles-adoption branch from bf2c513 to 31ee8da Compare August 8, 2026 19:38
@froppa
froppa marked this pull request as ready for review August 8, 2026 20:09

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 31ee8da27f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread test.sh Outdated
Comment thread test.sh
@froppa
froppa marked this pull request as draft August 8, 2026 20:14
@froppa
froppa marked this pull request as ready for review August 8, 2026 20:38
@froppa
froppa merged commit 9ad3313 into master Aug 8, 2026
2 checks passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: cb36d960ce

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +6 to +7
[include]
path = {{ joinPath .chezmoi.homeDir ".config/git/dotfiles.gitconfig" | quote }}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Migrate previously managed Git roots to the new include

On machines that applied the parent revision, ~/.gitconfig already exists with the old defaults and includes only ~/.gitconfig.local; the create_ template therefore leaves it untouched, so it never includes the new managed file. Consequently, the updated confgit alias edits a file that Git does not read and those existing installations still receive no future default updates. The fresh evidence relative to the earlier comment is that the new split places its include only in this create-only root; migrate roots matching the previously managed configuration or document/apply an explicit upgrade step.

Useful? React with 👍 / 👎.

Comment on lines +48 to +49
# Send the standard clear-screen key through tmux to the active application.
keybind = super+k=text:\x0c

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Bind Shift-Enter for the Zsh extended-key sequence

When Shift-Enter is used at an ordinary Zsh prompt rather than inside Claude Code, the new tmux extended-key setup forwards a modified-key escape sequence, but home/dot_zshrc has no binding for that sequence. Because this block removes Ghostty's prior Ctrl-V plus LF fallback, the shortcut documented as inserting a newline in shell prompts instead becomes an unbound ZLE sequence; add an appropriate ZLE binding while retaining native handling for Claude Code.

Useful? React with 👍 / 👎.

froppa added a commit that referenced this pull request Sep 5, 2026
Four managed files had drifted from their targets, in both directions, and
each was decided on evidence rather than by picking a side.

Ghostty: the source keeps the portable `direct:tmux` that test.sh enforces,
and gains `config-file = ?config.local` as its last line — an optional
machine-local include, Ghostty 1.3.1 verified to be silent when absent and
to win when present. A Dock-launched Ghostty has launchd's PATH and cannot
find Homebrew's tmux, so this machine names /opt/homebrew/bin/tmux in its
own config.local; no Homebrew prefix reaches the source. The unmanaged
~/.config/ghostty/config, a leftover from before the rename in #4 that
Ghostty was still reading at lower priority, is archived out of the way.

Target wins: Zed's settings.json is what Zed itself wrote on Sep 4 when
preferences changed in the app; the file is 0600 there, so the source
becomes private_settings.json.

Source wins: .zshrc had the Google Cloud SDK's two installer lines appended,
which are machine-local and now live in ~/.exports.local and
~/.zsh_completions.local — the override files .zshrc already sources for
exactly this, both after compinit. .aws/cli/alias had its python heredoc
terminators indented (` PY`), which never terminates a <<'PY' heredoc, so
the macOS fallback path of the insights and metrics aliases was broken.

**/.DS_Store is ignored everywhere. oh-my-zsh is an external, so every
.DS_Store Finder dropped inside it read as a file to delete on apply.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant