Skip to content

Releases: Gaurav-Gosain/tuios

v0.7.0

28 Mar 21:21

Choose a tag to compare

What's New in v0.7.0

Video Playback

You can now watch videos inside tuios. mpv --vo=kitty works with both shared memory and base64 modes. For the best experience, use --vo-kitty-use-shm=yes which sends just a file reference instead of streaming megabytes of pixel data through the terminal. youterm also works out of the box.

Kitty Keyboard Protocol

Full support for the kitty progressive enhancement keyboard protocol with push/pop/query. Fish 4.x enables this automatically on startup, and it just works. Capital letters and other shifted printable keys are sent as text directly rather than CSI u encoding, which is what shells actually expect.

Kitty Graphics Improvements

  • Static images (icat, yazi) render with proper vertical clipping when they extend past the viewport
  • Images hide cleanly when the window goes out of bounds on any edge
  • Fixed a bug where raw APC data was double-wrapped, which was silently breaking all direct base64 image transfers
  • Shared memory transfers now send the correct shm object name to the host terminal

Pane Zoom

Press z in window management mode or Ctrl+B z in terminal mode to fullscreen any pane. When using shared borders, the zoomed pane renders without individual borders and the separator lines are hidden. The dockbar shows a Z indicator when a pane is zoomed.

Layout Prefix

Ctrl+B L opens a layout submenu where l loads and s saves a layout template. Loading is non-destructive now: existing windows get repositioned to match the template instead of being killed. If you have more windows than the template needs, the extras get minimized.

Copy Mode Drag Auto-Scroll

When you drag a selection above or below the pane in copy mode, scrolling now continues smoothly even if you stop moving the mouse. This uses a timer that fires every 50ms while you hold the mouse outside the content area.

Protocol Support

  • OSC 4 palette color queries and sets
  • OSC 52 clipboard operations
  • Mode 2026 (synchronized output) and mode 2027 (unicode core)
  • DA1 response includes sixel capability
  • OSC 66 kitty text sizing (experimental, has known scrollback issues)

Quit Confirmation

New --confirm-quit flag and confirm_quit config option to always show the quit dialog, regardless of whether there are active foreground processes.

Bug Fixes

  • Fixed crashes from concurrent map access in HasMouseMode (uses atomic bools now)
  • Thread-safe KittyKeyboardFlags via atomic cache
  • Sixel passthrough improvements with better viewport clipping
  • Fixed prefix commands (Ctrl+B z, Ctrl+B L) not working in window management mode
  • Fixed Dockerfile Go version to match go.mod

Known Limitations

  • Kitty text sizing protocol (OSC 66) has basic passthrough but breaks with scrollback and window repositioning
  • Sixel passthrough works but lacks pixel-level clipping
  • Kitty animation protocol (a=f, a=a, a=c) is not supported yet
  • Video playback without shm can flicker depending on frame rate and terminal performance. Use --vo-kitty-use-shm=yes when possible.

Installation

TUIOS (Terminal Window Manager)

Quick Install (Linux/macOS):

curl -sSL https://raw.githubusercontent.com/Gaurav-Gosain/tuios/main/install.sh | bash

Homebrew (macOS/Linux):

brew tap Gaurav-Gosain/tap
brew install tuios

Arch Linux (AUR):

# Using yay
yay -S tuios-bin

# Using paru
paru -S tuios-bin

Nix:

# Run directly
nix run github:Gaurav-Gosain/tuios#tuios

# Or add to your configuration
nix-shell -p tuios

Go Install:

go install github.com/Gaurav-Gosain/tuios/cmd/tuios@v0.7.0

tuios-web (Web Terminal Server)

Homebrew (macOS/Linux):

brew tap Gaurav-Gosain/tap
brew install tuios-web

Arch Linux (AUR):

# Using yay
yay -S tuios-web-bin

# Using paru
paru -S tuios-web-bin

Go Install:

go install github.com/Gaurav-Gosain/tuios/cmd/tuios-web@v0.7.0

Manual Download:
Download the appropriate tuios_* or tuios-web_* archive for your platform below, extract it, and run.

Changelog

New Features

Bug Fixes

Read more

v0.6.0

25 Jan 16:38

Choose a tag to compare

TUIOS v0.6.0 Release

New Features

Kitty Graphics Protocol Support (Experimental)

image

TUIOS now supports the Kitty graphics protocol for inline image display. Applications running inside TUIOS can display images directly in the terminal when using a compatible host terminal.

Supported terminals: Kitty, WezTerm, Ghostty, iTerm2, Foot, Contour

Warning

Experimental: This feature is experimental and bugs are expected. Use TUIOS_KITTY_GRAPHICS=0 to disable if you encounter issues.

Terminal Mode Shortcuts

New keybindings that work directly in terminal mode without requiring the prefix key:

Platform Next Window Previous Window Exit Terminal Mode
macOS Opt+Tab Opt+Shift+Tab Opt+Esc
Linux/Windows Alt+N Alt+P Alt+Esc

These shortcuts let you quickly cycle between windows or exit terminal mode without interrupting your workflow.

Native Cursor Shape Rendering

TUIOS now renders native cursor shapes (block, bar, underline) with blink support. This is particularly useful for vi-mode users in shells like zsh where the cursor changes based on editing mode:

  • Normal mode → Block cursor
  • Insert mode → Bar cursor

Improvements

  • Performance: Skip animation calculations when no animations are active
  • Compatibility: Improved arrow key handling in ncurses applications (cmus, htop, etc.)
  • Platform: Split Unix capability detection into separate Darwin and Linux implementations

Bug Fixes

  • Fixed paste not working in daemon mode (#71)
  • Fixed cursor shape rendering using real terminal cursor for native vi-mode support (#70)
  • Fixed safe color comparison during rapid scrollback to prevent crashes
  • Fixed various Kitty graphics issues:
    • Image clipping and passthrough mode
    • Scroll position and placeholder spacing
    • Multi-window support and drag handling
    • Altscreen handling and cleanup
    • Virtual placement handling
      ...
Read more

v0.5.1

26 Dec 09:03

Choose a tag to compare

TUIOS v0.5.1 Release

A terminal-based window manager with tmux-style keybindings.

What's New

tuios-web is now released as a separate binary! This provides better security isolation
by separating the web server functionality from the main TUIOS binary.

Installation

TUIOS (Terminal Window Manager)

Quick Install (Linux/macOS):

curl -sSL https://raw.githubusercontent.com/Gaurav-Gosain/tuios/main/install.sh | bash

Homebrew (macOS/Linux):

brew tap Gaurav-Gosain/tap
brew install tuios

Arch Linux (AUR):

# Using yay
yay -S tuios-bin

# Using paru
paru -S tuios-bin

Nix:

# Run directly
nix run github:Gaurav-Gosain/tuios#tuios

# Or add to your configuration
nix-shell -p tuios

Go Install:

go install github.com/Gaurav-Gosain/tuios/cmd/tuios@v0.5.1

tuios-web (Web Terminal Server)

Homebrew (macOS/Linux):

brew tap Gaurav-Gosain/tap
brew install tuios-web

Arch Linux (AUR):

# Using yay
yay -S tuios-web-bin

# Using paru
paru -S tuios-web-bin

Go Install:

go install github.com/Gaurav-Gosain/tuios/cmd/tuios-web@v0.5.1

Manual Download:
Download the appropriate tuios_* or tuios-web_* archive for your platform below, extract it, and run.

Changelog

Bug Fixes


Full Changelog: v0.5.0...v0.5.1

v0.5.0

25 Dec 06:34

Choose a tag to compare

TUIOS v0.5.0 - Major Release

Released: December 25, 2025
Documentation: https://tuios.gaurav.zip

Note: Throughout this document, Ctrl+B refers to the default leader key. This is configurable via the leader_key option in your config file. See CONFIGURATION.md for details.


Highlights

TUIOS v0.5.0 is the biggest release yet, adding persistent sessions with daemon mode, multi-client collaboration, and comprehensive remote control capabilities.

Three Major Features

1. Persistent Sessions

persistent-sessions.mp4

Sessions now survive disconnects and crashes with automatic daemon management. The daemon starts in-process when you create or attach to a session.

# Create a persistent session
tuios new work-session

# Detach (Ctrl+B d) and come back later
tuios ls
tuios attach work-session

Full state preservation: windows, layouts, BSP trees, terminal content, scrollback history. Sessions persist as long as the daemon process is running.

2. Multi-Client Support

multi-client.mp4

Multiple users can attach to the same session simultaneously with real-time state synchronization. Perfect for pair programming and remote troubleshooting.

# Terminal 1
laptop$ tuios new pairing

# Terminal 2 (different machine)
remote$ tuios attach pairing

# Or via SSH using username as session name
remote$ ssh -p 2222 pairing@yourserver

Both clients see the same session in real-time with synchronized focus, mode changes, and terminal output.

SSH Integration: Connect to sessions directly via SSH username:

  • ssh -p 2222 mysession@localhost - Attach to "mysession"
  • Session picker appears if no session specified

See MULTI_CLIENT.md for complete guide.

3. Remote Control CLI

remote-commands.mp4

Comprehensive automation and scripting capabilities. Control TUIOS from external scripts without attaching a TUI.

# Send keystrokes
tuios send-keys "ctrl+b n"

# Execute commands
tuios run-command NewWindow "build-server"

# Change configuration at runtime
tuios set-config dockbar_position top

# Execute tape scripts remotely
tuios tape exec deploy.tape

# Inspect state without TUI
tuios list-windows --json
tuios session-info

12+ remote commands with full shell completion support.


New Features

BSP Tiling Enhancements

bsp.mp4

Advanced manual control for precise layouts:

  • Preselection: Ctrl+B Shift+H/J/K/L - Control where next window spawns
  • Manual splits: Ctrl+B - (horizontal), Ctrl+B | (vertical)
  • Split rotation: Ctrl+B R - Rotate split direction
  • Equalize splits: Ctrl+B = - Reset to 50/50 ratios
  • Edge-based resizing: >, <, ., ,, }, {, ], [

BSP layouts are serialized and restored in daemon mode.

See BSP_TILING.md for workflows and examples.

Mouse Edge Snapping

Drag windows to screen edges for intuitive snapping:

  • Top center → Fullscreen
  • Left/Right edge → Half screen
  • Corners → Quarter screen
  • Works in floating window mode for window swapping

Tape Recording

Live session recording with keybindings:

Ctrl+B T r  # Start recording
Ctrl+B T s  # Stop recording
Ctrl+B T p  # Pause/Resume

tuios tape list
tuios tape play recording.tape

See TAPE_RECORDING.md for complete guide.

Library Export

Use TUIOS as an importable Go library:

import "github.com/Gaurav-Gosain/tuios/pkg/tuios"

app := tuios.New(
    tuios.WithTheme("dracula"),
    tuios.WithAnimations(false),
    tuios.WithShell("/bin/fish"),
)

See LIBRARY.md for API documentation.

Native Windows Support

Full daemon mode support on Windows 10+ (build 17063+) with ConPTY.

Showkeys Overlay

Display pressed keys on-screen for presentations and screencasts:

tuios --show-keys
# Or toggle in session: Ctrl+B D k

See SHOWKEYS.md for configuration options.

Window Customization

New appearance options:

  • window_title_position - bottom, top, or hidden
  • hide_clock - Hide clock overlay
  • --no-animations - Instant transitions for tape playback

Bug Fixes

Critical Race Conditions

Fixed multiple critical data races:

  • Client.Close() double-close protection with sync.Once
  • Window suppressCallbacks converted to atomic.Bool
  • Daemon goroutine lifecycle management with sync.WaitGroup
  • 5-second graceful shutdown timeout

All tests now pass with race detector.

VT Emulator

  • Drain VT responses to prevent escape sequence leaks
  • Proper VT response forwarding in daemon mode
  • Nil color panic prevention (synced from upstream)
  • Graceful write-after-close handling

Platform-Specific

  • Fixed macOS keybind mapping (opt+ vs alt+)
  • Fixed daemon mode window sizing on reattach
  • Fixed BSP tree persistence on window swap

Architecture Changes

Charm.land Migration

Migrated from github.com/charmbracelet to charm.land packages:

  • Bubble Tea v2.0.0-rc.2
  • Lipgloss v2.0.0-beta.3
  • Wish v2.0.0
  • Sip v0.1.11

Updated API compatibility for new package versions.

Code Organization

CLI Modularization: Split main.go into 7 focused modules for better maintainability.

Render Splitting: Split render.go into 5 specialized modules (dock, overlays, terminal, helpers).

New Session Package: Added internal/session/ for daemon, client, protocol, and state management.

VT Emulator Sync: Updated deprecated constants, simplified grapheme width calculation.


Documentation

New Guides

Updated Documentation


Testing

Added comprehensive test coverage:

  • Session management tests (protocol, multi-client scenarios)
  • BSP tree manipulation tests
  • Tape executor tests
  • Memory pool tests
  • Theme and config tests
  • Concurrency and race condition tests

All tests pass with race detector. Zero staticcheck warnings.


Remote Control Reference

Understanding --literal and --raw

The send-keys command has two important flags that control how keys are processed:

Without any flags (default mode):

  • Keys are sent to TUIOS itself (for window management, mode switching, etc.)
  • Both spaces and commas split the input into separate key arguments
  • Examples:
    • tuios send-keys "ctrl+b n" → Sends Ctrl+B, then n (two keys)
    • tuios send-keys "ctrl+b,n" → Same as above (comma splits)
    • tuios send-keys "a b c" → Sends a, then b, then c (space splits)

--literal flag:

  • Keys are sent directly to the terminal PTY (bypass TUIOS key handling)
  • Still splits on spaces and commas by default
  • Example: tuios send-keys --literal "echo hello" → Sends "echo", then "hello" (WRONG!)

--raw flag:

  • Treats each character as a separate key
  • NO splitting on spaces or commas
  • Each character becomes its own key press
  • Example: tuios send-keys --raw "hello world" → Sends h, e, l, l, o, space, w, o, r, l, d

Combining --literal and --raw (for typing text in terminal):

# Correct way to type text with spaces in the terminal
tuios send-keys --literal --raw "echo hello world"

# This sends each character to the PTY, including spaces

Common Patterns:

# Send TUIOS commands (window management)
tuios send-keys "ctrl+b n"                    # Create new window
tuios send-keys "ctrl+b,t"                    # Toggle tiling (comma separator)
tuios send-keys "\$PREFIX q"                  # Quit (using PREFIX token)

# Send keys to terminal
tuios send-keys --literal --raw "ls -la"      # Type command in terminal
tuios send-keys --literal --raw "cd /tmp"     # Change directory

# Raw mode for text with spaces (without literal, goes to TUIOS)
tuios send-keys --raw "some text"             # Each character as separate key to TUIOS

Special Keys:

  • Enter, `R...
Read more

v0.4.4

16 Dec 05:26

Choose a tag to compare

TUIOS v0.4.4 Release

A terminal-based window manager with tmux-style keybindings.

What's New

tuios-web is now released as a separate binary! This provides better security isolation
by separating the web server functionality from the main TUIOS binary.

Installation

TUIOS (Terminal Window Manager)

Quick Install (Linux/macOS):

curl -sSL https://raw.githubusercontent.com/Gaurav-Gosain/tuios/main/install.sh | bash

Homebrew (macOS/Linux):

brew tap Gaurav-Gosain/tap
brew install tuios

Arch Linux (AUR):

# Using yay
yay -S tuios-bin

# Using paru
paru -S tuios-bin

Nix:

# Run directly
nix run github:Gaurav-Gosain/tuios#tuios

# Or add to your configuration
nix-shell -p tuios

Go Install:

go install github.com/Gaurav-Gosain/tuios/cmd/tuios@v0.4.4

tuios-web (Web Terminal Server)

Homebrew (macOS/Linux):

brew tap Gaurav-Gosain/tap
brew install tuios-web

Arch Linux (AUR):

# Using yay
yay -S tuios-web-bin

# Using paru
paru -S tuios-web-bin

Go Install:

go install github.com/Gaurav-Gosain/tuios/cmd/tuios-web@v0.4.4

Manual Download:
Download the appropriate tuios_* or tuios-web_* archive for your platform below, extract it, and run.

Changelog

New Features

Other Changes


Full Changelog: v0.4.3...v0.4.4

v0.4.3

04 Dec 03:43

Choose a tag to compare

TUIOS v0.4.3 Release

A terminal-based window manager with tmux-style keybindings.

What's New

tuios-web is now released as a separate binary! This provides better security isolation
by separating the web server functionality from the main TUIOS binary.

Installation

TUIOS (Terminal Window Manager)

Quick Install (Linux/macOS):

curl -sSL https://raw.githubusercontent.com/Gaurav-Gosain/tuios/main/install.sh | bash

Homebrew (macOS/Linux):

brew tap Gaurav-Gosain/tap
brew install tuios

Arch Linux (AUR):

# Using yay
yay -S tuios-bin

# Using paru
paru -S tuios-bin

Nix:

# Run directly
nix run github:Gaurav-Gosain/tuios#tuios

# Or add to your configuration
nix-shell -p tuios

Go Install:

go install github.com/Gaurav-Gosain/tuios/cmd/tuios@v0.4.3

tuios-web (Web Terminal Server)

Homebrew (macOS/Linux):

brew tap Gaurav-Gosain/tap
brew install tuios-web

Arch Linux (AUR):

# Using yay
yay -S tuios-web-bin

# Using paru
paru -S tuios-web-bin

Go Install:

go install github.com/Gaurav-Gosain/tuios/cmd/tuios-web@v0.4.3

Manual Download:
Download the appropriate tuios_* or tuios-web_* archive for your platform below, extract it, and run.

Changelog

Bug Fixes


Full Changelog: v0.4.2...v0.4.3

v0.4.2

03 Dec 15:44

Choose a tag to compare

TUIOS v0.4.2 Release

A terminal-based window manager with tmux-style keybindings.

What's New

tuios-web is now released as a separate binary! This provides better security isolation
by separating the web server functionality from the main TUIOS binary.

Installation

TUIOS (Terminal Window Manager)

Quick Install (Linux/macOS):

curl -sSL https://raw.githubusercontent.com/Gaurav-Gosain/tuios/main/install.sh | bash

Homebrew (macOS/Linux):

brew tap Gaurav-Gosain/tap
brew install tuios

Arch Linux (AUR):

# Using yay
yay -S tuios-bin

# Using paru
paru -S tuios-bin

Nix:

# Run directly
nix run github:Gaurav-Gosain/tuios#tuios

# Or add to your configuration
nix-shell -p tuios

Go Install:

go install github.com/Gaurav-Gosain/tuios/cmd/tuios@v0.4.2

tuios-web (Web Terminal Server)

Homebrew (macOS/Linux):

brew tap Gaurav-Gosain/tap
brew install tuios-web

Arch Linux (AUR):

# Using yay
yay -S tuios-web-bin

# Using paru
paru -S tuios-web-bin

Go Install:

go install github.com/Gaurav-Gosain/tuios/cmd/tuios-web@v0.4.2

Manual Download:
Download the appropriate tuios_* or tuios-web_* archive for your platform below, extract it, and run.

Changelog

Bug Fixes


Full Changelog: v0.4.1...v0.4.2

v0.4.1

03 Dec 04:57

Choose a tag to compare

TUIOS v0.4.1 Release

A terminal-based window manager with tmux-style keybindings.

What's New

tuios-web is now released as a separate binary! This provides better security isolation
by separating the web server functionality from the main TUIOS binary.

Installation

TUIOS (Terminal Window Manager)

Quick Install (Linux/macOS):

curl -sSL https://raw.githubusercontent.com/Gaurav-Gosain/tuios/main/install.sh | bash

Homebrew (macOS/Linux):

brew tap Gaurav-Gosain/tap
brew install tuios

Arch Linux (AUR):

# Using yay
yay -S tuios-bin

# Using paru
paru -S tuios-bin

Nix:

# Run directly
nix run github:Gaurav-Gosain/tuios#tuios

# Or add to your configuration
nix-shell -p tuios

Go Install:

go install github.com/Gaurav-Gosain/tuios/cmd/tuios@v0.4.1

tuios-web (Web Terminal Server)

Homebrew (macOS/Linux):

brew tap Gaurav-Gosain/tap
brew install tuios-web

Arch Linux (AUR):

# Using yay
yay -S tuios-web-bin

# Using paru
paru -S tuios-web-bin

Go Install:

go install github.com/Gaurav-Gosain/tuios/cmd/tuios-web@v0.4.1

Manual Download:
Download the appropriate tuios_* or tuios-web_* archive for your platform below, extract it, and run.

Changelog

New Features

Other Changes


Full Changelog: v0.4.0...v0.4.1

v0.4.0

02 Dec 21:29

Choose a tag to compare

TUIOS v0.4.0

A terminal-based window manager with tmux-style keybindings.

Highlights

  • tuios-web now powered by sip: The web terminal functionality has been migrated to use the sip library, a standalone package for serving Bubble Tea apps through the browser
  • Reduced repository size: Removed 10MB of embedded web assets (fonts, xterm.js, etc.) now bundled in sip
  • Tape Manager UI: New interactive UI for managing tape recordings
  • ShowKeys Overlay: Visual keyboard input display for demos and tutorials

Breaking Changes

None. The tuios-web binary works exactly as before.

Installation

TUIOS (Terminal Window Manager)

Quick Install (Linux/macOS):

curl -fsSL https://raw.githubusercontent.com/Gaurav-Gosain/tuios/main/install.sh | bash

Homebrew:

brew tap Gaurav-Gosain/tap
brew install tuios

Arch Linux (AUR):

yay -S tuios-bin

Go Install:

go install github.com/Gaurav-Gosain/tuios/cmd/tuios@v0.4.0

tuios-web (Web Terminal Server)

Quick Install (Linux/macOS):

curl -fsSL https://raw.githubusercontent.com/Gaurav-Gosain/tuios/main/install-web.sh | bash

Homebrew:

brew tap Gaurav-Gosain/tap
brew install tuios-web

Arch Linux (AUR):

yay -S tuios-web-bin

Go Install:

go install github.com/Gaurav-Gosain/tuios/cmd/tuios-web@v0.4.0

Changelog

New Features

  • Tape Manager UI for interactive tape recording management
  • ShowKeys overlay for keyboard input visualization
  • Web terminal server for browser-based access
  • Configurable leader key with visual highlighting

Improvements

  • Migrated tuios-web to use sip library
  • Modernized codebase and enhanced tape scripting system
  • Improved showkeys visual design and positioning

Bug Fixes

  • Fixed terminal dimensions initialization from browser
  • Fixed program startup ordering
  • Resolved gopls warnings and linter issues

Full Changelog: v0.3.4...v0.4.0

v0.3.4

07 Nov 10:51

Choose a tag to compare

TUIOS v0.3.4 Release

A terminal-based window manager with tmux-style keybindings.

Installation

Quick Install (Linux/macOS)

curl -sSL https://raw.githubusercontent.com/Gaurav-Gosain/tuios/main/install.sh | bash

Homebrew (macOS/Linux)

brew tap Gaurav-Gosain/tap
brew install tuios

Arch Linux (AUR)

# Using yay
yay -S tuios-bin

# Using paru
paru -S tuios-bin

Nix

# Run directly
nix run github:Gaurav-Gosain/tuios#tuios

# Or add to your configuration
nix-shell -p tuios

Manual Download

Download the appropriate binary for your platform below, extract it, and run:

./tuios

Go Install

go install github.com/Gaurav-Gosain/tuios/cmd/tuios@v0.3.4

Changelog

New Features

Bug Fixes

Other Changes


Full Changelog: v0.3.3...v0.3.4