all repos — dot @ 6c159347d75cc65536564d13d3ad2fe1c6d0a183

Shell, editor and terminal configuration, and the tools that go with them

ghostty: read ~/.config/ghostty-local last, where a machine has one

Ghostty had no way to differ per machine. It cannot take the shape the other
tools use -- a file beside the linked one -- because link.sh links this whole
directory, so ~/.config/ghostty is the checkout itself and a sibling file
would be an untracked file in the repo every machine shares.

An optional include at the end does the same job: later values replace earlier
ones, so a local file overrides anything here, the theme colours included, and
its keybinds add to these. Verified against the shipped config: font-size 12
becomes 18 with a local file, back to 12 without, and the config still
validates when there is none.
Igor Soarez igor@soarez.org
Mon, 21 Sep 2026 17:18:53 +0300
commit

6c159347d75cc65536564d13d3ad2fe1c6d0a183

parent

b3108c1548240674a000795d5340293d1adf4122

1 files changed, 10 insertions(+), 0 deletions(-)

jump to
M config/ghostty/config → config/ghostty/config

@@ -47,3 +47,13 @@ auto-update-channel = tip

# Text selection selection-background = #ff5a00 + +# Machine-local overrides, where a machine has any: ~/.config/ghostty-local, a +# file in no repo. Last, so its values win over everything above, the theme +# colours included, and its keybinds add to the ones set here. `?` makes it +# optional, so a machine without one is not an error. +# +# Not a file beside this one: link.sh links this whole directory, so +# ~/.config/ghostty is the repo itself and anything dropped in it would be an +# untracked file in the checkout every machine shares. +config-file = ?~/.config/ghostty-local