tuios 0.8.5 makes tiling more configurable and lets herdr plugins run in a tuios pane. It adds a tmux-style size policy for sessions with more than one client. Scrollback keeps its text when you resize a pane. The sidebar files list follows the disk and panes on other machines.
Before you upgrade, read Breaking changes and migration. The pure Go emulator now reflows lines when a pane changes width.
The full list is at tuios.dev/releases.
Install
brew install tuios # Homebrew (macOS, Linux)
yay -S tuios-bin # AUR (tuios-web-bin for the web server)
nix run github:Gaurav-Gosain/tuios # Nix
curl -fsSL https://raw.githubusercontent.com/Gaurav-Gosain/tuios/main/install.sh | bash
go install github.com/Gaurav-Gosain/tuios/cmd/tuios@v0.8.5
docker run -it --rm ghcr.io/gaurav-gosain/tuios:v0.8.5A binary installed by the script or from an archive updates with tuios update.
New features
- Master position. The master pane can be on the left, right, top or bottom, or in the center (#325). With
center, the other panes go to the right and to the left in turn. This closes #321.appearance.master_positionsets the side.appearance.master_countsets how many master panes there are (1 to 9).- In the layout prefix (
Ctrl+B L):omoves the master to the next side.Enterswaps the focused pane with the master.mfocuses the master.ianddadd and remove a master.
tuios set-layout --master-position center --masters 2changes the current workspace.- Each workspace keeps its own side and count, also after a daemon restart.
- herdr plugins. In a pane, herdr's command line now answers through tuios (#328).
- terminal-browser, terminal-code and the Vim navigation plugins work in a tuios pane.
- The herdr socket answers 8 more methods:
pane.process_info,pane.focus_direction,pane.neighbor,pane.edges,pane.swap,pane.zoom,workspace.focusandagent.start. - Every pane gets
HERDR_TAB_ID. - Each method is held to the grants of the pane that calls it.
pane.process_infoshows the command line and folder only to a pane that haswrite.
- Session size.
[daemon] window_sizesets the size of a session that has more than one client (#330). The values are the values of tmux'swindow-sizeoption.smallest(the default) works as before.largestuses the biggest client.latestfollows the client you typed in last.- A client smaller than the session shows the part of the session around the cursor. A mark on the line above the dock says so.
tuios set-config daemon.window_size latest -s NAMEchanges a running session.- A read-only
tuios-webviewer does not set the size underlargestorlatest.
- Subagents. A Claude Code agent's rail row shows how many subagents it runs, for example
3 subagents(#307). Thanks to @JakeChop.
Fixes
- Scrollback and resize. Text no longer gets lost when a pane changes size (#331, #333, #323).
- A narrower pane keeps the end of each line, and a wider pane shows it again.
- A shorter pane keeps the text below the cursor and the prompt under a full-screen program.
- A scroll region moves its rows to history.
- Wide characters stay in history.
- A daemon restart keeps history rows that are wider than the pane.
- Files list. The sidebar files list now updates when a file is added, removed or renamed (#319, #327). This closes #313.
- A pane on another machine updates its list when you
cd, and when files change on that machine. - In a pane that runs
ssh, the files section says that the shell is on the other machine. - Nothing polls. An idle session stays idle.
- A pane on another machine updates its list when you
- New windows in BSP. A new window now splits the focused pane, on the preselected side when you set one (#349). Before, it always split the last pane, which is the bottom-right one. This answers discussion #347.
- A preselection now works in daemon sessions too.
longest_sidereads the size of the pane it splits.
- Zoom in the scrolling layout. Moving to the next column while zoomed no longer shows a gap during the slide (#324).
- Log viewer. The log viewer opens on the newest entry and scrolls to the last entry it draws (#329). Thanks to @davidreuss.
- install.sh on the BSDs.
install.shdownloads the right archive on FreeBSD and OpenBSD (#322). Thanks to @fdoving. - herdr events. A client that subscribes and then acts at once now gets the event (#326).
- Kitty images. An image in a pane started with
new-window -- progno longer disappears when the session state syncs (#343). - Speed.
Breaking changes and migration
Reflow
- The pure Go emulator now rewraps the lines on the screen when a pane changes width, as kitty, ghostty and tmux do. Older history keeps the width it was written at.
- On the pure Go emulator, a full-width prompt that is not marked with OSC 133 leaves one extra row each time the pane gets narrower. The ghostty emulator already did this. To stop it, mark the prompt with OSC 133. See the shell recipes in
tuios doctor.
herdr
HERDR_BIN_PATHin a pane now names a link to tuios that answers herdr's command line. Before, it named the tuios binary.- A herdr plugin that calls
$HERDR_BIN_PATHnow reaches tuios. To run the real herdr inside a tuios pane, set[agents] herdr_protocol = "agents"as before.
Layout keys
o,Enter,m,ianddin the layout prefix are new defaults. If your[keybindings.layout_prefix]already binds one of these keys, your binding wins.
Claude Code subagents
-
The subagent count needs version 3 of the Claude Code integration. Run
tuios integration status. If it reports the integration as out of date, run:tuios integration install claude-code
Mixed versions
- The session size policy, the herdr command front, the files list for panes on other machines, the subagent count and master positions need a v0.8.5 daemon. To start a v0.8.5 daemon, run
tuios kill-serverafter the upgrade. This closes every pane in every session, so save your work first. - An older client in a session under
latestorlargestmakes the session usesmallestuntil it leaves.
Contributors
Thank you to everyone who sent a pull request for this release:
- @JakeChop: subagent count on the rail (#307)
- @davidreuss: log viewer scroll (#329)
- @fdoving: install.sh on FreeBSD and OpenBSD (#322)
Thanks to @adamcstephens for the master position request (#321), and to @LovesAsuna for the files list reports (#313) and the BSP report (#347).
Full Changelog: v0.8.4...v0.8.5