Revenant¶
Revenant is an X11 terminal emulator that looks, configures, and behaves like
xterm, with libghostty-vt as its terminal core.
If you already run xterm, Revenant is meant to be a drop-in replacement: the
same XTerm resource class, the same vt100 widget, the same Ctrl+button
popup menus, the same ~/.Xresources lines. If you have never run xterm,
this documentation starts from zero — including the X11 configuration
mechanism that xterm inherits and that most modern terminals never had.
Expect to configure it¶
Revenant starts with xterm's defaults on purpose: the fixed bitmap font, an
80x24 window, and 1024 lines of history. The traditional fixed bitmap font
is often too small on a modern high-density display. Shipping useful modern
defaults is a future goal; today a few ~/.Xresources lines are part of the
first run, and Revenant tells you which ones:
revenant -welcome
The report audits your X resources, fonts, and tools without changing anything, and prints a starter fragment when it detects that the unconfigured bitmap default may be difficult to read. The first-run guide explains the rest.
Two product bars¶
Revenant has two requirements that pull in different directions, and the project keeps both honest:
- xterm fidelity. xterm patch 411 defines the visible X11 contract: resources, menus, translations, geometry, fonts. Anything xterm shows the user, Revenant tries to show the same way.
- Modern terminal capability.
libghostty-vtsupplies parsing, terminal state, reflow, history, key encoding, and query responses. xterm compatibility shapes how a feature is exposed; it never justifies leaving a basic capability unwired.
Where the two conflict, the difference is written down rather than hidden: intentional departures live in the xterm differences ledger, unfinished work in the roadmap, and every menu entry and command-line option is classified in the compatibility section.
Where to go¶
-
Installing or building it Install covers the release packages, the full
libghostty-vtbuild, and the stub build for UI work. -
Your first window First run starts with
revenant -welcome, the resources that make xterm's defaults readable, then menus, keys, and fonts. -
New to xterm and X11? Start with X resources, explained. It is written for people who have never seen a
.Xresourcesfile. -
Copying and pasting Learn why X11 has PRIMARY, CLIPBOARD, and cut buffers, which one mouse selection uses, and what Shift+Insert actually pastes.
-
Opening terminal hyperlinks Learn how explicit and detected links use Shift-hover and Shift+Button 1, and why only HTTP and HTTPS targets launch.
-
Coming from xterm? Go straight to Configuring Revenant and the command-line feasibility table to see which of your options already work. Also read the major default keyboard-input difference: Revenant deliberately distinguishes Ctrl-I from Tab, Ctrl-M from Enter, and Ctrl-[ from Escape without application opt-in.
-
Choosing text, CJK, emoji, and fallback fonts Use the dedicated font configuration guide for working Xft examples, xterm's two-entry chain grammar, role ordering, and the current expanded-resolver rollout status.
-
Something looks wrong Diagnostics explains
-report-config, the structured log, and the CPU profiling helper. The interactive probe suite provides named visual and keyboard fixtures for comparing Revenant, xterm, and Ghostty. -
Writing a terminal application or emulator The Terminal Developers Network explains control protocols, their history, compatibility differences, and reproducible probes.
Status¶
Revenant is early. Today it runs a real PTY-backed shell, renders the
libghostty grid through Xlib bitmap fonts or Xft, handles resize with reflow,
scrollback with the real Athena scrollbar, font switching from the font menu
or Shift+keypad, named X11 selection with middle-button
paste, hyperlinks,
application mouse and focus reporting, synchronized output (DEC private mode
2026), the sixteen-color ANSI palette, and the mode toggles in the main and
VT menus. Startup cursor-shape resources (cursorUnderLine, cursorBar) and
application-selected block, underline, and bar cursors and blink requests
work now; Kitty graphics are on the roadmap. Menu entries and options that are not
implemented yet stay visible but insensitive, so the UI never claims more than
the code delivers.