superterm3.3

superterm

Un multiplexor de terminal escrito en Free Pascal. Ventanas y paneles al estilo Turbo Vision dentro de una sola terminal — y cada panel visible es una terminal real con su PTY.

A terminal multiplexer written in Free Pascal. Turbo Vision-style windows and panes inside one terminal — and every visible pane is a real PTY-backed terminal.

GPLv3 Free Pascal GNU/Linux & macOS v3.3
superterm — control CLI
$ superterm send prod:2 tail -f /var/log/syslog   # type into any pane
$ superterm capture prod:2 --history | grep ERROR # 100k lines of scrollback
$ superterm new prod --cmd htop -t Monitor        # open panes from outside
$ superterm focus prod:Monitor               # move the focus
$ superterm organize prod grid                # re-tile every window
$ superterm listar prod                     # the same CLI, en español

$ superterm list
NAME     PROFILE   PANES  CLIENTS  CREATED
prod     ops           4        2  2026-08-22 10:14
dev      default       2        1  2026-08-22 09:02
superterm four-pane workspace
Cuatro paneles independientes con su propio PTY, en una ventana de terminal normal de GNU/Linux o macOS.
Four independent PTY-backed panes in a normal GNU/Linux or macOS terminal window.
Qué es
What it is

Varias shells y sesiones SSH a la vez

Several shells and SSH sessions at once

superterm está pensado para trabajar con varias shells locales y conexiones SSH remotas al mismo tiempo. Las sesiones se restauran solas, los perfiles con nombre describen espacios de trabajo repetibles, y el asistente de sesión levanta un espacio pequeño y puntual sin tocar ningún fichero de configuración.

superterm is designed for working with several local shells and remote SSH sessions at once. Sessions can be restored automatically, named profiles describe repeatable workspaces, and the session wizard launches a small ad-hoc workspace without editing a configuration file.

Desde la versión 3.0, cada sesión es un par cliente/servidor desde el momento en que arranca: la terminal que ves es sólo el primer cliente conectado. Eso convierte a superterm en mucho más que un gestor de ventanas para shells — todo el espacio de trabajo se puede gobernar desde cualquier otra shell, script, tarea de cron o herramienta de automatización.

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. That makes superterm far more than a window manager for shells — the entire workspace can be driven from any other shell, script, cron job or automation tool.

[ panes ]

Hasta 16 paneles

Up to 16 panes

Divisiones verticales y horizontales, navegación del foco, foco con ratón, redimensionar, maximizar, minimizar, restaurar y cerrar.

Vertical and horizontal splits, focus navigation, mouse focus, resize, maximize, minimize, restore and close — up to 16 panes in one visible layout.

[ server ]

Servidor desde el arranque

A server from launch

Estilo tmux: el terminal visible es sólo el primer cliente. [session] server=detach restaura el flujo clásico de sólo-detach.

tmux-style: the visible terminal is just the first attached client. [session] server=detach restores the classic detach-only flow.

[ multi ]

Hasta 8 clientes

Up to 8 clients

Sesiones multiusuario reales: salida difundida, eventos de ventana en vivo, negociación del tamaño menor por panel y control de flujo para que un cliente lento nunca bloquee al resto.

True multi-user sessions: output broadcast, live window events, per-pane smallest-size negotiation and slow-client flow control, so one stalled client never blocks the rest.

[ i18n ]

Bilingüe, de verdad

Genuinely bilingual

Interfaz en inglés por defecto y en español seleccionable en tiempo de ejecución. La CLI acepta comandos y opciones en inglés y en español.

English interface by default, with a runtime-selectable Spanish interface. The control CLI accepts commands and flags in English and in Spanish.

[ color ]

Fidelidad total

Full fidelity

Truecolor y 256 colores llegan al terminal exactamente como los envió la aplicación, con glifos UTF‑8 reales, emoji a su ancho de dos columnas, marcas combinantes, atenuado y texto oculto.

Truecolor and 256-color sequences reach the terminal exactly as the application sent them, with real UTF-8 glyphs, emoji at true two-column width, combining marks, faint and concealed text.

[ keys ]

Teclado propio

A custom keyboard driver

Un Esc suelto llega al panel (por tiempo, no tratado como prefijo Alt), con decodificación CSI/SS3 y ratón X10/SGR. Prefijo configurable, por defecto Ctrl-Q.

A lone Esc reaches the pane (timeout-based, not treated as an Alt prefix), with CSI/SS3 decoding and X10/SGR mouse support. Configurable prefix key, Ctrl-Q by default.

Espacio de trabajo
Workspace

Clases de ventana, perfiles y sesiones

Window classes, profiles and sessions

Las clases de ventana ([class.*]) son definiciones de panel reutilizables y con nombre, para comandos locales y para conexiones SSH estructuradas con claves, agentes, soporte opcional de contraseña con sshpass y comandos posteriores a la conexión. Los perfiles ([profile.*]) son espacios de trabajo con nombre cuyos paneles referencian esas clases. Todo se edita dentro de la aplicación y se guarda en un único fichero INI.

Window classes ([class.*]) are reusable named pane definitions for local commands and for structured SSH connections with keys, agents, optional sshpass password support and post-connect commands. Profiles ([profile.*]) are named workspaces whose panes reference those classes. Everything is edited in the app and stored in one INI file.

CLI de control
Control CLI

Gobierna la sesión desde cualquier otra shell

Drive the session from any other shell

Todos los comandos y opciones se aceptan en inglés y en español, sin distinguir mayúsculas y sin tener en cuenta los acentos; los mensajes siguen el ajuste [ui] language (o LANG si aún no hay configuración).

Every command and option is accepted in English and in Spanish, case-insensitively and ignoring accents; messages follow the [ui] language setting (or LANG when no configuration exists yet).

EnglishEspañol Qué haceWhat it does
listlistarTabla de sesiones, o detalle de los paneles de unaSessions table, or pane details of one
sendenviarEscribir en un panel (añade Enter; -k manda teclas con nombre)Type into a pane (appends Enter; -k sends named keys)
capturecapturarVolcar la pantalla visible, las últimas N líneas o todo el scrollbackDump the visible screen, the last N lines or the whole scrollback
newnuevaAbrir un panel nuevo desde fueraOpen a new pane from outside
closecerrarCerrar un panelClose a pane
focusfocoMover el focoMove the focus
renamerenombrarRenombrar una ventanaRename a window
resizetamanoCambiar el tamaño de una ventanaResize a window
minimizeminimizarMinimizar a barra de títuloMinimize to a title bar
restorerestaurarRestaurar una ventana minimizadaRestore a minimized window
zoomampliarDar el terminal entero a un panelHand the whole terminal to one pane
organizeorganizarRe-organizar todas las ventanas (p. ej. grid / rejilla)Re-tile every window (e.g. grid / rejilla)
attachConectar el terminal interactivo a una sesión vivaAttach the interactive terminal to a live session
killmatarTerminar una sesión y sus programasTerminate a session and its programs

Objetivos: SESION, SESION:PANEL (índice de base 1 o subcadena única del título), y . para la única sesión viva. Referencia completa en docs/CLI.md. Targets: SESSION, SESSION:PANE (1-based index or a unique title substring), and . for the only live session. Full reference in docs/CLI.md.

A workspace driven from the CLI
Un espacio de trabajo construido entero desde la línea de comandos — paneles abiertos con nueva, renombrados con renombrar, re-organizados con organizar rejilla — mientras el cliente conectado lo ve suceder.
A workspace built entirely from the command line — panes opened with nueva, renamed with renombrar, re-tiled with organizar rejilla — while the attached client watches it happen.
Session and pane listing
Listado de sesiones y detalle de paneles: comando en inglés con salida en español, y el alias listar.
Session and pane listing — an English command with Spanish output, and the Spanish listar alias.
Send and capture round-trip
Escribir en un panel y capturar su pantalla o todo su scrollback desde otra shell, limpio para pipes.
Typing into a pane and capturing its screen or its whole scrollback from another shell, pipe-clean.
The bilingual CLI help
La ayuda integrada bilingüe (--help / --ayuda).
The bilingual built-in help (--help / --ayuda).
Multiusuario
Multi-user

Varias personas en la misma sesión

Several people in the same session

Hasta ocho clientes conectados a la vez a la misma sesión, cada uno viendo cada pulsación, cada cambio de título y cada operación de ventana en vivo — y un cliente lento o muerto nunca puede frenar al resto.

Up to eight clients attached to the same session at once, each seeing every keystroke, title change and window operation live — and a slow or dead client can never stall the rest.

Two clients attached to one session
Dos clientes conectados a la misma sesión: todo lo que se escribe en el cliente A (izquierda) aparece en vivo en el cliente B (derecha), incluido el print inyectado desde una tercera shell con la CLI de control.
Two clients attached to the same session: everything typed in client A (left) appears live in client B (right), including the print injected from a third shell with the control CLI.
Novedad en 3.3
New in 3.3

Un cuadro en el escritorio, detrás de las ventanas

A picture on the desktop, behind the windows

El escritorio puede mostrar arte ASCII en lugar del patrón liso. Los colores son RGB reales, no la rejilla de 16 colores. Los cuadros son ficheros de texto plano que se leen en tiempo de ejecución: deja el tuyo en ~/.superterm/backgrounds/ y aparece en el menú sin recompilar. Se eligen desde Options y se recuerdan por perfil. Ocho vienen incluidos.

The desktop can show ASCII art instead of the plain pattern. The colours are real RGB, not the 16-colour grid. Pictures are plain text files read at run time: drop your own into ~/.superterm/backgrounds/ and it appears in the menu without rebuilding. Chosen from Options and remembered per profile. Eight ship with it.

7kas phoenix background
El fénix de 7kas — el fondo por defecto.
The 7kas phoenix — the default.
London skyline background
El perfil de Londres.
The London skyline.
Alaska range background
Una cordillera de Alaska bajo una aurora.
An Alaska range under an aurora.
Open field background
Un campo abierto a la hora dorada.
An open field at golden hour.
Boat at sunset background
Un barco al atardecer.
A boat at sunset.
Stone wall tiled background
Muro de piedra — patrón sin costuras, para el modo mosaico.
Stone wall — a seamless pattern for the tiled layout.
Truchet weave tiled background
Lazos de Truchet entrelazados — sin costuras por los cuatro lados.
Interlocking Truchet loops — seamless on all four sides.
Circuit board tiled background
Placa de circuito — patrón sin costuras.
A circuit board — seamless pattern.

Un fichero es una paleta más tres líneas paralelas por fila — glifos, índices de primer plano e índices de fondo opcionales — y el alfabeto incluye medios bloques y caracteres de sombreado, así que una celda puede llevar dos colores y el cuadro gana el doble de resolución vertical. Modos: centrado, mosaico, estirado o ajustado. A file is a palette plus three parallel lines per row — glyphs, foreground indexes and optional background indexes — and the glyph alphabet includes the half-block and shade characters, so a cell can carry two colours and a picture gets twice the vertical resolution. Layouts: centred, tiled, stretched or fitted.

Renderizado
Rendering

F5 entrega el terminal entero al panel

F5 hands the pane the whole terminal

Cuatro ventanas comparten el escritorio — un visor de logs, un watch sobre el uso de disco, top en el centro y una cuarta minimizada a barra de título. F5 maximiza el panel enfocado y le entrega el terminal completo escribiendo sus bytes de PTY en crudo, así que top se reajusta a pantalla completa; F5 otra vez devuelve el escritorio con cada ventana donde estaba. El contorno que se expande es la transición de zoom opcional ([session] zoomanim, desactivada por defecto — el cambio instantáneo es el rápido).

Four windows share the desktop — a log tailer, a watch on disk usage, top in the centre, and a fourth minimized to a title bar at the bottom. F5 maximizes the focused pane and hands it the entire terminal, writing its raw PTY bytes straight through, so top reflows into the full screen; F5 again brings the desktop back with every window where it was. The expanding outline is the optional zoom transition ([session] zoomanim, off by default — the instant switch is the fast one).

The F5 zoom transition
La transición de zoom de F5.
The F5 zoom transition.

Un panel ya no se aplana a un byte CP437 y 16 colores por celda, ni en mosaico, ni en ventana, ni maximizado. La FreeVision vendorizada no se modifica: su rejilla sigue dibujándose y sigue decidiendo qué es visible. Hay además dos opciones de visualización por perfil: mostrar el contenido al arrastrar (desactivado da un arrastre de contorno, mucho menos tráfico en un enlace lento) y la transición de zoom de F5. A pane is no longer flattened to one CP437 byte and 16 colours per cell, whether it is tiled, windowed or maximized. The vendored FreeVision is not modified: its grid is still drawn and decides what is visible. There are also two per-profile display options: show contents while dragging (off gives a wireframe drag — much less traffic on a slow link) and the F5 zoom transition.

Plataformas
Platform support

GNU/Linux y macOS, un solo código

GNU/Linux and macOS, one codebase

superterm es una única base de código multiplataforma que compila y se ejecuta de forma nativa en GNU/Linux y macOS (Apple Silicon e Intel). Ambos son POSIX, así que la interfaz, el motor VT, el layout, la configuración y el servidor de detach/attach se comparten sin cambios. Lo único específico de plataforma es la capa de PTY y procesos, seleccionada en compilación con {$IFDEF DARWIN}.

superterm is a single cross-platform codebase that builds and runs natively on GNU/Linux and macOS (Apple Silicon and Intel). Both are POSIX systems, so the UI, VT engine, layout, configuration and detach/attach server are shared without change. The only platform-specific code is the PTY/process layer, selected at compile time with {$IFDEF DARWIN}.

[ linux ]

GNU/Linux

Reserva el pseudoterminal con la secuencia SysV posix_openpt y lee los títulos de proceso de /proc.

Allocates the pseudo-terminal with the SysV posix_openpt sequence and reads process titles from /proc.

[ macos ]

macOS

Lo reserva con openpty + login_tty de BSD y lee los títulos con libproc/sysctl. Free Pascal define DARWIN solo: no hace falta ninguna opción de compilación.

Allocates it with BSD openpty + login_tty and reads titles with libproc/sysctl. Free Pascal auto-defines DARWIN, so no build flag is required.

[ windows ]

Windows

No es un objetivo nativo. WSL es la vía práctica para ejecutar superterm en Windows; un port nativo necesitaría un backend ConPTY más el código específico de procesos, redimensionado, señales y rutas de configuración.

Not a native target. WSL is the practical way to run superterm on Windows; a native port would need a ConPTY backend plus Windows-specific process, resize, signal and configuration-path code.

Instalación
Install

Compilar desde el código

Build from source

El proyecto incluye un configure POSIX autocontenido — no está generado por GNU Autoconf. Detecta el compilador y las herramientas de test, y crea el Makefile a partir de Makefile.in.

The project includes a self-contained POSIX configure script — it is not generated by GNU Autoconf. It detects the compiler and test tools, then creates the Makefile from Makefile.in.

$ git clone https://github.com/garacil/superterm.git
$ cd superterm
$ ./configure
$ make release        # optimized binary -> bin/superterm  (fpc -O4)
$ ./bin/superterm

En Debian o Ubuntu las dependencias se pueden instalar explícitamente con ./configure --install-deps. En macOS, Free Pascal se instala con Homebrew (brew install fpc); libsqlite3 ya viene con el sistema y los comandos son idénticos. make info muestra el compilador, el destino, el prefijo y las rutas elegidas. On Debian or Ubuntu the dependencies can be installed explicitly with ./configure --install-deps. On macOS, install Free Pascal with Homebrew (brew install fpc); libsqlite3 ships with the system and the commands are identical. make info shows the selected compiler, target, prefix and paths.

# useful configure options
$ ./configure --prefix="$HOME/.local" --sysconfdir="$HOME/.config/superterm"
$ ./configure --with-fpc=/usr/local/bin/fpc
$ ./configure --with-python=/usr/bin/python3

# debug build -> bin/superterm-debug  (-O1 -g -gl -dDEBUG)
$ make debug

# regression suite (isolated PTYs; never touches your tmux server)
$ make test
[ build ]

Requisitos de compilación

Build requirements

Free Pascal Compiler 3.2.2 o una versión 3.x compatible · unidades FV, FCL y DB de Free Pascal · GNU make · un anfitrión POSIX: GNU/Linux (con /proc) o macOS.

Free Pascal Compiler 3.2.2 or a compatible Free Pascal 3.x release · Free Pascal FV, FCL and DB units · GNU make · a POSIX host: GNU/Linux (with /proc) or macOS.

[ test ]

Requisitos de test

Test requirements

Python 3 y el paquete pyte. La suite cubre operaciones de panel, tamaños grandes, ratón xterm y tmux, enrutado del foco, restauración de sesión, plantillas (INI y SQLite), el asistente, el cambio de idioma y los controles de ventana.

Python 3 and the pyte package. The suite covers pane operations, large terminal sizes, xterm and tmux mouse input, focus routing, session restore, templates (INI and SQLite), the wizard, language switching and window controls.

[ remote ]

Requisitos remotos

Remote requirements

openssh-client para las conexiones SSH. sshpass sólo cuando se configura explícitamente autenticación por contraseña — las claves SSH o un agente son más seguros y preferibles.

openssh-client for SSH connections. sshpass only when password authentication is explicitly configured — SSH keys or an SSH agent are safer and preferred.

Ejecutar y reconectarRun and re-attach

$ ./bin/superterm --attach            # one session: direct; several: picker
$ ./bin/superterm --attach dev        # attach by name
$ ./bin/superterm list                # sessions table (also --list-sessions)
$ ./bin/superterm --session prod       # name the session created at launch

Cada arranque levanta un servidor de sesión por usuario en ~/.superterm/sessions/<nombre>.sock con un fichero de metadatos <nombre>.ini. El servidor es el dueño de los maestros de PTY, los grupos de procesos, los analizadores de terminal y el scrollback, así que dejar el cliente — o perderlo — no cierra las shells locales ni las conexiones SSH remotas. Alt-X y Alt-Q son salidas permanentes que cierran la sesión entera: Alt-X pide al servidor que guarde session.ini primero, Alt-Q se salta el guardado. Every launch starts a per-user session server at ~/.superterm/sessions/<name>.sock with a <name>.ini metadata sidecar. The server owns the PTY masters, process groups, terminal parsers and scrollback, so leaving the client — or losing it — does not close local shells or remote SSH connections. Alt-X and Alt-Q are permanent exits that close the whole session: Alt-X asks the server to save session.ini first, Alt-Q skips saving.

Decisión técnica
Technology choice

Por qué Free Pascal

Why Free Pascal

superterm está escrito en Free Pascal a propósito. Es una decisión concreta de este proyecto, no una afirmación de que Pascal sea universalmente mejor que C.

superterm is intentionally written in Free Pascal. This is a project-specific tradeoff, not a claim that Pascal is universally better than C.

Una reescritura completa en C tendría que rehacer la interfaz, el manejo de PTY, el analizador VT, el layout, la persistencia de sesión y los tests sin aportar un beneficio concreto para los requisitos actuales — incluidos el servidor de sesión multicliente persistente y la CLI de control bilingüe, ambos implementados en Pascal y cubiertos por la suite de regresión. Las fuentes locales de FreeVision están en vendor/fv322, con arreglos de pantalla ancha y de ratón para tmux; la instalación de FreeVision del sistema no se modifica. A complete C rewrite would have to recreate the UI, PTY handling, VT parser, layout, session persistence and tests without providing a concrete benefit for the current requirements — including the persistent multi-client session server and the bilingual control CLI, both implemented in Pascal and covered by the regression suite. Local FreeVision sources live in vendor/fv322, including wide-screen and tmux mouse fixes; the system FreeVision installation is not modified.

Documentación
Documentation

Todo está en el repositorio

Everything is in the repository