Skip to content
German Luis Aracil Boned edited this page Aug 22, 2026 · 16 revisions

superterm

superterm is a GNU/Linux and macOS terminal multiplexer written in Free Pascal. It provides a Turbo Vision-style window and pane interface while every visible pane remains a real PTY-backed terminal.

Since 3.0, every session is a client/server pair from the moment it starts: the terminal you see is just the first attached client. The entire workspace -- typing into panes, capturing any amount of scrollback, opening, closing, focusing, renaming, resizing and re-tiling windows -- can be driven from any other shell, script or automation tool, with every command and flag accepted in English and in Spanish. Several clients can stay attached to one session at the same time, each seeing everything live. See CLI.

superterm send prod:2 tail -f /var/log/syslog    # type into any pane
superterm capture prod:2 --history | grep ERROR  # dump the whole scrollback
superterm nueva prod --comando htop -t Monitor   # the same CLI, en espanol
superterm organize prod grid                     # re-tile every window

Two clients attached to one session, driven from the CLI

Two clients attached to the same session; the Python output was injected from a third shell with superterm send. One capture per 3.0 feature on the Screenshots page.

superterm showing four PTY-backed panes

The screenshot shows one workspace divided into four terminal panes. Each pane has its own process, terminal state, focus, and resize behavior.

What's New in 3.2

Every pane now renders in full fidelity, not just the maximized one. 3.1 gave a maximized pane the whole terminal so a rich TUI could render untouched; 3.2 does the same for panes that are tiled or windowed. Truecolor, 256-colour palette indexes, real UTF-8 glyphs, emoji at their true two-column width, faint and concealed text all reach the terminal from a normal window. A pane is no longer flattened to one CP437 byte and 16 colours per cell. The vendored FreeVision is not modified: its grid is still drawn and decides what is visible.

Alongside it: attributes no longer leak out of a full-screen application, reset clears the screen again, the alternate screen stays out of the scrollback, and window drags stopped resending the whole screen -- 13926 to 1810 bytes per drag step, with frames coalesced when input is already waiting.

Two new per-profile display options in the Options menu:

  • Show contents while dragging (default on). With it off you get a wireframe drag: only the window outline moves and everything behind it stays visible, so each step sends just the strip the outline vacates plus the one it takes.
  • Zoom transition (default off). A short expanding and contracting outline when F5 maximizes or restores a pane:

F5 zoom transition

See the 3.2 release notes for every change. Upgrading: the session protocol moves to version 3, so a 3.2 client refuses to attach to a daemon from an older release -- close any live session before installing.

What It Provides

  • Vertical and horizontal pane splits with focus navigation and mouse support.
  • Resize, maximize, minimize, restore, and close operations; up to 16 panes in one visible layout.
  • Window classes ([class.*]): reusable named pane definitions for local commands and structured SSH connections (host, user, port, key, optional sshpass password), or a free connect command, with optional cmd, postconnect, shell, cwd, scrollback, and a default window title.
  • Profiles ([profile.*]): named workspaces of windows and pane layouts whose panes reference window classes.
  • Always-server sessions (3.0): every launch starts a session server and the visible terminal attaches as its first client, so the control CLI works from the very first second. [session] server=detach restores the classic detach-only flow.
  • A bilingual control CLI (3.0): list/listar, send/enviar, capture/capturar, kill/matar plus full window management (new/nueva, close/cerrar, focus/foco, rename/renombrar, resize/tamano, minimize/minimizar, restore/restaurar, zoom/ampliar, organize/organizar). See CLI.
  • True multi-user sessions (3.0): up to 8 clients attached at once with output broadcast, live window events, smallest-size negotiation and flow control so a slow client never stalls the session.
  • Named detachable sessions: each detach creates a background session under ~/.superterm/sessions/, kept alive by a per-user session server. Reattach with superterm --attach, the Ctrl-Q s picker, or the startup picker; superterm --list-sessions prints them.
  • A configurable tmux-style prefix key ([keymap] prefix, default Ctrl-Q) so a remote tmux keeps Ctrl-B untouched.
  • A custom keyboard driver: a lone Esc reaches the pane (timeout-based, not held as an Alt prefix), with CSI/SS3 decoding and X10/SGR mouse support.
  • Editable, persistent window titles, saved in sessions and profiles.
  • A color palette selector (color, black-and-white, monochrome) for the window manager itself, and, since 3.2, full-fidelity pane rendering: 256-color and truecolor sequences, UTF-8 glyphs and emoji are passed through to the terminal exactly as the application sent them, in any pane.
  • English and Spanish application interfaces, switchable at runtime.
  • A quick session wizard for one to four ad-hoc panes.

Start Here

  • Installation: prebuilt packages, dependencies, configure, build, and tests.
  • Usage: learn the controls, wizard, profiles, and session lifecycle.
  • Screenshots: view the English workspace, menu, and wizard captures.
  • Configuration: define window classes, profiles, and detachable sessions.
  • Architecture: understand the PTY, screen, layout, and FreeVision layers.
  • Development: work on the source tree and run the regression suite.
  • Troubleshooting: diagnose build, configuration, SSH, and terminal issues.

Current Scope

The supported native platforms are GNU/Linux and macOS (Apple Silicon and Intel), both POSIX systems built from the same source tree. The program uses POSIX PTYs, fork/exec, select, and the bundled FreeVision text UI. The only platform-conditional unit is the PTY/process layer (src/st_pty.pas, selected with {$IFDEF DARWIN}): GNU/Linux reads process titles from /proc, while macOS uses libproc/sysctl. Windows would require a ConPTY backend and Windows-specific process and resize code; WSL is the practical way to run the GNU/Linux build on Windows.

Detached sessions are owned by a per-user session server, so leaving the FreeVision client does not close local shells or remote SSH connections.

Security Notes

  • Prefer SSH keys or an SSH agent over passwords.
  • The application creates ~/.superterm mode 700 and writes its files mode 600, because they may contain credentials.
  • Do not put passwords in command lines or debug logs.
  • Treat postconnect and local command fields as shell commands under the configured login shell.

Clone this wiki locally