<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dot.git/config/tmux.conf, branch master</title>
<subtitle>Shell, editor and terminal configuration, and the tools that go with them
</subtitle>
<id>https://git.soarez.net/sz/dot.git/atom?h=master</id>
<link rel='self' href='https://git.soarez.net/sz/dot.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/dot.git/'/>
<updated>2026-10-27T09:07:27+00:00</updated>
<entry>
<title>tmux: advertise OSC 8 hyperlinks so pi and other TUIs link under tmux</title>
<updated>2026-10-27T09:07:27+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-10-27T09:07:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/dot.git/commit/?id=1613e5d0316af273f050f60c12f0b4726051b70a'/>
<id>urn:sha1:1613e5d0316af273f050f60c12f0b4726051b70a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>tmux: Shift+Enter reaches pi, Neovim and Claude Code under Ghostty</title>
<updated>2026-10-26T14:20:45+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-10-26T14:20:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/dot.git/commit/?id=65d3da052dcecba82f05e4244f33c3f489b575c5'/>
<id>urn:sha1:65d3da052dcecba82f05e4244f33c3f489b575c5</id>
<content type='text'>
With extended-keys off, tmux hands every pane a plain CR for Shift+Enter and
Ctrl+Enter, so pi submits where it should add a line, and warns about it at
every start.

Turning it on is not enough on its own, though pi's warning then goes quiet:
tmux asks the outer terminal for modified keys only when it knows the
terminal can send them, and tmux does not recognise Ghostty, whose terminfo
does not declare it either. So Ghostty also gets the extkeys feature, and
the format is csi-u, the one pi asks for. `on`, not `always`, which would
send zsh ESC[13;2u for Shift+Enter.

The paste corruption the old comment blamed on extended keys shows up only
in a display-popup, where tmux re-encodes the newlines of a paste for an app
that asked for modified keys; normal panes get the pasted bytes unchanged.
Nothing here opens popups.

Checked on tmux 3.7c against a pty answering as Ghostty 1.3.1, with pi
itself in the pane, and by hand in Ghostty on a separate tmux server. The
csi-u line is set with -q, since extended-keys-format arrived in tmux 3.5;
3.4 was not tried, only an unknown option name standing in for it.
</content>
</entry>
<entry>
<title>Caps Lock no longer types &lt;F22&gt; into Neovim</title>
<updated>2026-10-05T13:20:06+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-10-05T13:20:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/dot.git/commit/?id=09fd7f0294f975f53f72bc3551099f968341419e'/>
<id>urn:sha1:09fd7f0294f975f53f72bc3551099f968341419e</id>
<content type='text'>
Caps Lock sends F20, and the terminal passes it on as well as Wispr Flow
seeing it. tmux reads it as S-F10 and hands the pane ESC[21;2~, which Neovim
decodes as &lt;F22&gt; and, with nothing mapped to it, types out as text -- once per
repeat while the key is held.

Dropped in both places, each enough alone: Neovim maps &lt;F20&gt; and &lt;F22&gt; to
nothing, terminal mode included so a :terminal does not pass it to its shell,
and tmux binds S-F10 to an empty command, which also swallows a real
Shift+F10 that nothing here uses. The empty binding loads on tmux 3.5a and 3.4.

From change request cee596.
</content>
</entry>
<entry>
<title>tmux: machine-local overrides in ~/.tmux.conf.local</title>
<updated>2026-10-03T04:26:40+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-10-03T04:26:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/dot.git/commit/?id=b872fd500c67ba19913c64c0c071be8829bedc01'/>
<id>urn:sha1:b872fd500c67ba19913c64c0c071be8829bedc01</id>
<content type='text'>
tmux was one of the configs a machine could not adjust without editing the
shared file. ~/.tmux.conf.local is now loaded last, so it wins over everything,
colours included, and is skipped silently where there is none. Not under
~/.config/tmux, which links into this repo.

The filed version loaded it with `if-shell -b`, which runs in the background
and applies the file after the rest of the config, in no fixed order;
`source-file -q` does the same job in order, without a shell. -q checked on
tmux 3.5a and 3.4.

From change request 379803.
</content>
</entry>
<entry>
<title>dotfiles</title>
<updated>2026-09-17T18:45:23+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-09-17T18:45:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/dot.git/commit/?id=13cc065ec014b86369dfe4ad60d1a43fa06fd251'/>
<id>urn:sha1:13cc065ec014b86369dfe4ad60d1a43fa06fd251</id>
<content type='text'>
Shell, editor and terminal configuration, the tools that go with them, and
szecret, an age-based secret manager whose store lives elsewhere.

History restarts here. What came before was not written to be read by
anyone else, and carried machine names, addresses and an encrypted secret
store; it is kept privately instead. What is left is meant to be safe on
any machine, including one whose owner is not me: see CLAUDE.md for the
rule it is written to.
</content>
</entry>
</feed>
