<feed xmlns='http://www.w3.org/2005/Atom'>
<title>tmuxrdr.git, branch tmuxrdr</title>
<subtitle>herdr but with less disrespect for the tmux community
</subtitle>
<id>https://git.soarez.net/sz/tmuxrdr.git/atom?h=tmuxrdr</id>
<link rel='self' href='https://git.soarez.net/sz/tmuxrdr.git/atom?h=tmuxrdr'/>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/tmuxrdr.git/'/>
<updated>2026-10-13T13:52:44+00:00</updated>
<entry>
<title>tmuxrdr: README, requests</title>
<updated>2026-10-13T13:52:44+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-10-13T13:52:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/tmuxrdr.git/commit/?id=e2cf704c8d227856519aeb1310326c227bff1a98'/>
<id>urn:sha1:e2cf704c8d227856519aeb1310326c227bff1a98</id>
<content type='text'>
</content>
</entry>
<entry>
<title>tmuxrdr: e2e clears the pane env from cli calls</title>
<updated>2026-10-13T12:31:21+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-10-13T12:31:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/tmuxrdr.git/commit/?id=faad12a57a2c161ce67e54fe2b96561bc1a3bd1e'/>
<id>urn:sha1:faad12a57a2c161ce67e54fe2b96561bc1a3bd1e</id>
<content type='text'>
running the e2e from inside a herdr session leaked herdr_pane_id into
the cli, so pane current looked for the caller's pane on the throwaway
server and the script died with "herdr client did not come up".
</content>
</entry>
<entry>
<title>tmuxrdr: mouse selections copy on release; drag-enters-copy-mode on the roadmap</title>
<updated>2026-10-05T14:09:21+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-10-05T14:09:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/tmuxrdr.git/commit/?id=b79e6822209fa45fc357ddfd3d7caf1598f9af37'/>
<id>urn:sha1:b79e6822209fa45fc357ddfd3d7caf1598f9af37</id>
<content type='text'>
</content>
</entry>
<entry>
<title>tmuxrdr: README and roadmap list the tab row patch</title>
<updated>2026-10-05T12:45:32+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-10-05T12:45:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/tmuxrdr.git/commit/?id=13a3934d76ecf0687905df97cd9b75b28bd1dabf'/>
<id>urn:sha1:13a3934d76ecf0687905df97cd9b75b28bd1dabf</id>
<content type='text'>
</content>
</entry>
<entry>
<title>tmuxrdr: tmux tab row on, session commands in the : prompt</title>
<updated>2026-10-05T12:45:17+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-10-05T12:45:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/tmuxrdr.git/commit/?id=e953b5c4797e629e92acca7525f40f2ce03ad6e1'/>
<id>urn:sha1:e953b5c4797e629e92acca7525f40f2ce03ad6e1</id>
<content type='text'>
The config turns ui.tab_style = "tmux" on, with the row at the bottom like
tmux's status line. The : prompt takes tmux's session commands, on
workspaces: new-session (-s, -c, -d, -A), switch-client -t/-n/-p/-l,
attach-session -t, list-sessions, kill-session -t, with tmux's messages for
a taken or missing name. test-e2e covers both, prints the config check's
diagnostics when it fails, and finds the tab row wherever it is drawn.
</content>
</entry>
<entry>
<title>tmuxrdr: tmux's status line as the tab row (ui.tab_style = "tmux")</title>
<updated>2026-10-05T12:45:17+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-10-05T12:45:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/tmuxrdr.git/commit/?id=9a12d7fb0eae23c016d3e941a16765084fbf0eaa'/>
<id>urn:sha1:9a12d7fb0eae23c016d3e941a16765084fbf0eaa</id>
<content type='text'>
herdr draws each tab as a centred, padded block, and a named tab shows its
name without its number. With ui.tab_style = "tmux" the row is tmux 3.7c's
default status line: "[session] " cut to status-left-length 10, then each
window as "#I:#W#{?window_flags,#{window_flags}, }" -- current "*", last
"-", zoomed "Z" -- one space apart, plain text in the status line's colours.
Unnamed tabs are called after their active pane's directory, like
automatic-rename-format '#{b:pane_current_path}'.

The logic is in src/client/shell/tabs_tmux.rs; render_tab_bar keeps its
layout, scrolling, mouse hits and + button, with three one-line hooks for
width, text and style, and the session at the left. Each tab's active pane
and each workspace's previous tab are remembered by the client, so nothing
changes in the protocol and the client works against a stock herdr server.
The default, herdr, draws as before.
</content>
</entry>
<entry>
<title>tmuxrdr: build and run as its own binary beside stock herdr</title>
<updated>2026-10-05T09:02:45+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-10-05T09:02:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/tmuxrdr.git/commit/?id=10fb1ab5ac9091e59957e97c3e75ea6bc288b8c5'/>
<id>urn:sha1:10fb1ab5ac9091e59957e97c3e75ea6bc288b8c5</id>
<content type='text'>
scripts/build builds the checkout with the pinned toolchains -- Homebrew's
keg-only rustup, Zig 0.16.0 from ~/.local/opt, crates through sfw, Zig's
hash-pinned packages prefetched by Zig since sfw's proxy breaks them -- and
installs it as ~/.local/bin/tmuxrdr. install now sets up tmuxrdr only, in
~/.config/tmuxrdr, and refuses a binary that reads its config elsewhere.
test-e2e tests tmuxrdr and starts with a config check. The config turns off
herdr's update check, whose update would install stock herdr over the fork.
</content>
</entry>
<entry>
<title>tmuxrdr: own directories, to run beside stock herdr</title>
<updated>2026-10-05T09:02:45+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-10-05T09:02:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/tmuxrdr.git/commit/?id=2312d3978b7d123968e834c0e0080ad2ff5559df'/>
<id>urn:sha1:2312d3978b7d123968e834c0e0080ad2ff5559df</id>
<content type='text'>
app_dir_name() names the directory every herdr path is built from --
config, sessions, sockets, logs, plugin registry, state. A release build of
tmuxrdr now uses "tmuxrdr", so ~/.config/tmuxrdr and ~/.local/state/tmuxrdr,
and shares nothing with a stock herdr on the same machine. Debug builds keep
"herdr-dev", which herdr's own tests expect.
</content>
</entry>
<entry>
<title>tmuxrdr: README and roadmap</title>
<updated>2026-10-05T08:27:00+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-10-05T08:27:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/tmuxrdr.git/commit/?id=3d30f8f5eaf3d09a26a53706cd35770a06c5b87e'/>
<id>urn:sha1:3d30f8f5eaf3d09a26a53706cd35770a06c5b87e</id>
<content type='text'>
What tmuxrdr is, how to install, test, maintain and later build it, and
the roadmap: the tmux bindings and behaviours only a patch to herdr's code
can give, with the patch and its touch points for each.
</content>
</entry>
<entry>
<title>tmuxrdr: install, end-to-end test and upstream sync scripts</title>
<updated>2026-10-05T08:27:00+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-10-05T08:27:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/tmuxrdr.git/commit/?id=a58874ca96a87fbf6a86e8df7821f29749985b58'/>
<id>urn:sha1:a58874ca96a87fbf6a86e8df7821f29749985b58</id>
<content type='text'>
install links ~/.config/herdr/config.toml and the plugin to this checkout
and registers the plugin. test-e2e presses each binding in a herdr client
running in a throwaway tmux and session, and checks the result through the
herdr CLI. sync-upstream rebases the tmuxrdr commits onto a newer herdr
release, keeping the old branch as a backup.
</content>
</entry>
</feed>
