Skip to content

ColeTrammer/ttx

Repository files navigation

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
  • 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
  • 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)
    • Automatic save/restore (tmux-continuum)
  • 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
    • Settings
    • Plugins

Dependencies

This project depends on the dius library, to use its cross-platform abstractions.

Installing

See here.

Building

See here.

Developing

See here.