diff options
| author | Igor Soarez <igor@soarez.org> | 2026-09-21 17:41:45 +0300 |
|---|---|---|
| committer | Igor Soarez <igor@soarez.org> | 2026-09-21 17:41:45 +0300 |
| commit | 7f0049952bba4ef0e22bf25dc85da6cdfe38f104 (patch) | |
| tree | 9b7ce385ba0605f06ddbe2317473fd9c4be98868 /config | |
| parent | f957dd3ab602405a889644801efe219f85991930 (diff) | |
hammerspoon, ghostty: example files for their machine-local configs
ssh and git each ship one; these two hooks were discoverable only by reading
the config that loads them. Both examples carry what is easy to get wrong:
init.lua's hotkey() helper and mod tables are locals, so a local.lua calls
hs.hotkey.bind directly, and a binding there can only be shadowed, never
deleted; in Ghostty a single-value key replaces while keybind accumulates, and
`ignore` is how a binding is switched off rather than added to.
Checked rather than assumed: the lua parses, and the Ghostty example validates
and, dropped in as ~/.config/ghostty-local, does what it says -- font-size,
command and background-opacity replaced, super+shift+n added, alt+enter turned
off.
Diffstat (limited to 'config')
| -rw-r--r-- | config/ghostty/ghostty-local-example | 25 | ||||
| -rw-r--r-- | config/hammerspoon/local-example.lua | 29 |
2 files changed, 54 insertions, 0 deletions
diff --git a/config/ghostty/ghostty-local-example b/config/ghostty/ghostty-local-example new file mode 100644 index 0000000..98bdb02 --- /dev/null +++ b/config/ghostty/ghostty-local-example @@ -0,0 +1,25 @@ +# Example ~/.config/ghostty-local: Ghostty for one machine only. +# +# Not linked and never synced -- write it by hand where it is wanted. It cannot +# sit beside this file: link.sh links this whole directory, so ~/.config/ghostty +# is the checkout itself. config/ghostty/config reads it last, as an optional +# `config-file`, so a machine without one is not an error. +# +# Read last means: a single-value key here replaces the one set there, the +# theme's colours included; `keybind` accumulates instead, so a binding here is +# added to those. Reload with cmd-shift-, or restart Ghostty. + +# Single-value keys replace. +font-size = 14 +background-opacity = 0.95 + +# Start a plain shell instead of the tmux session config/ghostty/config asks +# for. --login runs ~/.zprofile, which is what restores PATH order after macOS +# rebuilds it; -i runs ~/.zshrc, for the prompt, keybindings and completions. +command = /bin/zsh --login -i + +# keybind accumulates, so this is added to the ones already set. +keybind = super+shift+n=new_window + +# To switch one off rather than add: bind it to `ignore`. +keybind = alt+enter=ignore diff --git a/config/hammerspoon/local-example.lua b/config/hammerspoon/local-example.lua new file mode 100644 index 0000000..2ddfe15 --- /dev/null +++ b/config/hammerspoon/local-example.lua @@ -0,0 +1,29 @@ +-- Example ~/.config/hammerspoon/local.lua: Hammerspoon for one machine only. +-- +-- Not linked and never synced -- write it by hand where it is wanted. Only +-- init.lua is linked into ~/.config/hammerspoon, so a file beside it there is +-- the machine's own and in no repo. init.lua loads it last, inside a pcall: it +-- can override anything set there, and a mistake in it is reported without +-- taking the rest of the config down. +-- +-- Reload with ctrl-shift-alt-h, as with any other change. +-- +-- Note what is NOT available here: init.lua's `hotkey()` helper and its mod +-- tables (cs, ca, csa, cag, hyp) are locals of that file, and this is a +-- separate chunk. Call hs.hotkey.bind directly and write the modifiers out. + +-- Take a key over. Binding a combination init.lua already bound wins, because +-- hs.hotkey stacks bindings per combination and this one is enabled last. +hs.hotkey.bind({ "ctrl", "alt" }, "1", function() + hs.application.launchOrFocus("Slack") +end) + +-- Give a key back to the OS or another app: bind it to nothing. A binding from +-- init.lua cannot be deleted from here -- it keeps no reference to the hotkey +-- object -- so shadowing it with a no-op is how it is switched off. +hs.hotkey.bind({ "ctrl", "alt", "cmd" }, "0", function() end) + +-- Anything else Hammerspoon can do belongs here just as well. +hs.hotkey.bind({ "ctrl", "alt" }, "m", function() + hs.alert.show(hs.host.localizedName()) +end) |
