1 Upgrading to v0.10.0
Gaurav Gosain edited this page 2026-10-15 20:21:52 +04:00

tuios v0.10.0 changes the theme on Omarchy, the TERM of new sessions and some terminal mode keys. This page lists each change and what to do.

The full release notes are at tuios.dev/releases/v0-10-0.

The daemon

The daemon protocol did not change, so a v0.9.3 daemon works with a v0.10.0 client, and the reverse. The new fields are optional in both directions. The sleep reconnect, the theme colours in panes, spaces, window moves and the memory fixes are in the daemon. To get them, restart the daemon:

tuios kill-server

This closes every pane in every session, so save your work first.

The theme on Omarchy

On a machine with Omarchy, an empty appearance.theme now means the Omarchy theme. Before, it meant the colours of your terminal. To keep the colours of your terminal, set:

[appearance]
theme = "none"

A machine without Omarchy does not change. A theme that you set does not change.

Theme colours in daemon panes

A program in a daemon pane now gets the theme's colours from OSC 10, 11 and 4. A program that picks a light or a dark look from the background can change its look after the update. With no theme set, nothing changes.

The TERM of new sessions

A session made by tuios call new-session, tuios switch-session --create, an attached tuios new, start-agent, new-worktree or fan now gets your TERM and COLORTERM. Before, it got xterm-256color. TUIOS gives a pane your TERM only when the machine that runs the pane has a terminfo entry for it. Otherwise the pane gets xterm-256color, as before. A program in the pane that runs ssh to a machine with no entry for your TERM can show wrong keys or colours there. Install the entry on that machine, for example with infocmp -x xterm-kitty | ssh HOST tic -x -. The SSH server, tuios-web and the GUI bridge do not send a TERM. Their sessions still get xterm-256color. See Which TERM a pane gets.

Terminal mode keys

Shift+PageUp and Shift+PageDown now scroll the pane's history, and the middle mouse button pastes from the clipboard. A program that uses the full screen or the mouse still gets them. To give the keys and the button back to every program, remove them from the bindings:

[keybindings.terminal_mode]
terminal_scroll_page_up = []
terminal_scroll_page_down = []
terminal_paste_host = ["ctrl+shift+v", "super+v", "shift+super+v"]

Option characters on macOS

This is a change in behaviour on a keyboard layout other than US. keybindings.option_glyphs now defaults to auto. On macOS, tuios reads the keyboard layout when it starts:

  • On a US or ABC layout, nothing changes. Option+N switches the workspace.
  • On any other layout, such as UK or AZERTY, a character that the keyboard composes, such as £ or ©, goes to the pane as text. In Terminal.app and iTerm2 as they ship, Option+N then types its character. It does not switch the workspace.

keyboard_layout in [keybindings] overrides the layout that tuios reads. To get the Option bindings on any layout, set the Option key of the terminal to send Alt. In Terminal.app, tick "Use Option as Meta Key". In iTerm2, set the Option key to "Esc+". To keep the old behaviour, set option_glyphs = "bind".

New config keys

The defaults keep the old behaviour. The session lines are examples.

[appearance]
animation_speed = 100            # 25 to 400, 0 is 100
dim_foreground = true            # false dims only the background
theme_transition = "none"        # none, circle, fade
theme_transition_duration = 450  # milliseconds, 100 to 2000

[appearance.sidebar.left]
session = "side-left"            # a daemon session to show in this rail
session_workspace = 0            # 0 is every workspace, or 1 to 9

[appearance.sidebar.right]
session = "side-right"
session_workspace = 0

[keybindings.lists]
list_up = ["up", "ctrl+p", "k"]
list_down = ["down", "ctrl+n", "j"]
list_page_up = ["pgup"]
list_page_down = ["pgdown"]
list_first = ["home", "g"]
list_last = ["end", "G"]

[keybindings.terminal_mode]
terminal_scroll_page_up = ["shift+pgup"]
terminal_scroll_page_down = ["shift+pgdown"]

[dock.tabs]
style = "pill"                   # pill, flat

[dock.session]
format = "{session} {workspace}:{pane}"   # add "session" to a [dock] list to draw it

[dock.tabs] also takes separator, separator_fg, the active_ and inactive_ colours, number_glyphs, zoom_marker and show_add. The tmux-style actions have no default key.

appearance.theme also takes omarchy, omarchy/NAME, charmtone and charmtone-light. See Configuration and Omarchy.

For developers

  • tuios.dev/vt needs Go 1.26. tuios.dev/swatch needs Go 1.25. tuios itself still builds with the Go version in go.mod.
  • The emulator moved from internal/vt to vt/, the tuios.dev/vt module. The snapshot of a terminal moved to tuios.dev/vt/snapshot (#724). go.work holds the app, progstatus, vt and swatch. To build tuios as go install does, use GOWORK=off.
  • The binary size budgets went up in commits of their own. See docs/perf.md.