ttx 0.1.0
Loading...
Searching...
No Matches
ttx Overview

A modern terminal multiplexer.

Features

The main goal of ttx to provide a good user experience when mixing local and remote terminal sessions, and support new terminal features in a timely manner (think kitty graphics/keyboard protocol). Instead of being a source of compatibility issues, I want ttx to just work when users try out new terminal features. And managing remote sessions should be simple and painless. Instead of having 1 terminal window and 1 tmux session per host, or nesting tmux sessions inside each other, ttx aims to unify remote hosts into a single terminal environment. I think this can be a huge improvement for developers who regularly need to develop on remote machines.

This project is currently in very early development, so there is a lot of the features listed here haven't yet been implemented. This list focuses only on higher level features, leaving out a lot of the lower level details.

  • Platform support
    • Linux
    • MacOS
    • Windows (not a priority)
  • Basic multiplexing functionality
    • Layout tree with horizontal and vertical splits
    • Multiple tabs (tmux windows)
    • Multiple sessions
    • Popup windows
    • Support session/window/pane switcher via Fzf popup
    • Full Unicode support (grapheme clustering and wide characters)
    • Seamless navigation between multiplexer panes and application panes (via custom OSC 8671). Requires corresponding Neovim plugin.
  • Graphics
    • Kitty image protocol (APC passthrough)
      • Proper Unicode handling (specifically 0 width characters)
    • Kitty image protocol (actual support)
      • Conversion of image to text (e.g. via chafa) when not supported by the host terminal
    • Sixels
    • Iterm image protocol
  • Daemon Mode
    • Terminal sessions are managed by a background process, allowing sessions to be saved after closing the terminal or dropping the SSH connection.
  • Session Persistence Across Reboots
    • Manual save/restore (tmux-resurrect) (partial support (layout+cwd only, not processes or scrollback))
    • Automatic save/restore (tmux-continuum) (partial support (layout+cwd only, not processes or scrollback))
  • Remote Machines
    • Support ephemeral connections via ssh
    • Support persistent connections via ssh
      • Will run a daemon on the remote which will synchronize locally.
    • Connection management UX
    • Support creating sessions/windows/panes using remote connections
    • See remote and local on the same screen at the same time.
  • Extensibility
    • Config
    • Themes
    • Plugins

Installing

See here.

Configuration

See here.

Unicode Support

We aim to match the Unicode processing specified by kitty. This includes correctly handling emoji sequences and grapheme clusters. When ttx is run in a terminal which does not support this, text is fit into whatever the outer terminal thinks is a single cell. This matches the behavior of Neovim 0.11 when running in these terminals.

These issues can be avoided by using a terminal like kitty, ghostty, or wezterm. To check if your terminal supports grapheme clustering, run ttx features, and see if the BasicGraphemeClustering feature is detected.

Building

See here.

Developing

See here.

Dependencies