diff options
| author | Igor Soarez <igor@soarez.org> | 2026-10-05 09:45:05 +0300 |
|---|---|---|
| committer | Igor Soarez <igor@soarez.org> | 2026-10-05 09:45:05 +0300 |
| commit | fac95146b95ef103e8100b2284671be4bdc1065f (patch) | |
| tree | 4171243dd27f64fb14dc140b57fb2911cefb2051 | |
| parent | 8c1724fc6af8a223666eecd4687c29f1371d6ddd (diff) | |
alacritty: the mux launch in its own import, overridable per machine
Alacritty merges the importing file last, over all of its imports
(v0.17.0: merge(imports, config)), so the inline [terminal.shell] could not be
replaced from local.toml at all; local.toml only ever got away with keys the
main file leaves unset. The launch now lives in mux.toml, imported first, and
local.toml, imported after it, can replace it.
But only in the string form. Alacritty's merge appends arrays rather than
replacing them, key by key (serde_utils.rs), so a [terminal.shell] table in
local.toml would put its args after tmux's, zsh would run the first -c, and
the window would open in tmux with no error -- the override the filed request
described would not have worked. mux.toml and AGENTS.md say how to do it:
`[terminal] shell = "/path/to/launcher"`, which replaces the whole table.
No machine changes today: the existing local.toml files set fonts only.
From change request 0bd5fb.
| -rw-r--r-- | AGENTS.md | 2 | ||||
| -rw-r--r-- | config/alacritty/alacritty.toml | 8 | ||||
| -rw-r--r-- | config/alacritty/mux.toml | 26 |
3 files changed, 31 insertions, 5 deletions
@@ -172,7 +172,7 @@ tracked config says so, and in no repo: | `~/.config/hammerspoon/local.lua` | Hammerspoon: rebinding a hotkey set here shadows it, and `capslock_off()` gives this machine its Caps Lock back. `require("dotlib")` for the same helpers init.lua uses. See `config/hammerspoon/local-example.lua` | `config/hammerspoon/init.lua`, last, in a `pcall` | | `~/.tmux.conf.local` | tmux, this host only: loaded last, so it can override anything, colours included | `config/tmux.conf`, last, with `source-file -q` | | `~/.config/ghostty-local` | Ghostty: later values replace earlier ones, `keybind` accumulates. See `config/ghostty/ghostty-local-example` | `config/ghostty/config`, last, as an optional `config-file` | -| `~/.local/share/alacritty/local.toml` | Alacritty | imported by `config/alacritty/alacritty.toml` | +| `~/.local/share/alacritty/local.toml` | Alacritty. To change the mux a window opens in, `[terminal] shell = "/path/to/launcher"` -- the string form, since a `[terminal.shell]` table appends its args to the default's. See `config/alacritty/mux.toml` | imported by `config/alacritty/alacritty.toml`, after `mux.toml` | | `~/.config/dot/skip` | which `link/` parts this machine does not want, one name per line | `link/lib.sh`, as each part starts | | `~/.config/dot/inbox-key` | the key this machine signs change requests with | `bin/dot-request` | | `~/.config/pi/models.d/*.json` | pi providers only this machine has -- a model served somewhere other than a vendor's own API | `link/pi.sh`, merged over `config/pi/models.json` | diff --git a/config/alacritty/alacritty.toml b/config/alacritty/alacritty.toml index bc6882d..1ac7b9a 100644 --- a/config/alacritty/alacritty.toml +++ b/config/alacritty/alacritty.toml @@ -14,10 +14,6 @@ history = 0 [selection] semantic_escape_chars = ",│`|:\"' ()[]{}<>" -[terminal.shell] -args = ["--login", "-ic", "exec tmux new-session -As 0 -f ~/.tmux.conf"] -program = "/bin/zsh" - [env] term = "xterm-256color" @@ -37,6 +33,10 @@ option_as_alt = "OnlyLeft" [general] import = [ + # The mux every window starts in, tmux by default. Before local.toml, so a + # machine can replace it there -- with the string form, see mux.toml for + # why. Relative, so it resolves beside this file on either home layout. + "mux.toml", "/Users/sz/.local/share/alacritty/local.toml", "/home/sz/.local/share/alacritty/local.toml", "/Users/sz/.local/share/alacritty/color.toml", diff --git a/config/alacritty/mux.toml b/config/alacritty/mux.toml new file mode 100644 index 0000000..93f6259 --- /dev/null +++ b/config/alacritty/mux.toml @@ -0,0 +1,26 @@ +# The multiplexer every Alacritty window starts in or attaches to, shared +# default: tmux, the same launch as config/ghostty/config. +# +# In its own import, listed first, rather than inline in alacritty.toml, +# because of how Alacritty merges config (v0.17.0, alacritty/src/config/): +# imports merge in list order, later ones winning, and the importing file is +# merged last and beats all of them -- `merge(imports, config)`. An inline +# [terminal.shell] could never be overridden from an import. +# +# To replace it on one machine, in ~/.local/share/alacritty/local.toml, use +# the string form, pointing at an executable that takes no arguments: +# +# [terminal] +# shell = "/Users/me/.local/bin/my-mux" +# +# NOT a [terminal.shell] table with its own args. Alacritty's merge appends +# arrays rather than replacing them (serde_utils.rs: base.append), so that +# machine's args would land after these, zsh would run the first -c, and the +# window would still open in tmux, with no error. A string replaces the whole +# table, args and all. +# +# A missing local.toml is skipped, and every window starts here, as before. + +[terminal.shell] +args = ["--login", "-ic", "exec tmux new-session -As 0 -f ~/.tmux.conf"] +program = "/bin/zsh" |
