veetee
VT52 · VT100 · VT220 · VT320 · VT420 · VT520 · VT525

The DEC terminal,
kept alive.

veetee is an open-source DEC VT terminal for the Linux desktop. It is built from DEC's own programmer references and tested screen by screen, so OpenVMS, DECforms, FMS and EDT behave exactly as they did on the glass.

Linux · GTK 4 · MIT or Apache-2.0 · .deb and tarball

veetee emulating a VT420: an order entry form drawn with DEC Special Graphics, double-height heading, underlined fields and the indicator status line
Phosphor

Real screens, real renderer

Every screenshot is veetee.

No mock-ups: each screen was captured from veetee's own OpenGL renderer, running vttest or a demo script. DEC-style bitmap fonts are drawn dot by dot, with scan lines, double-size lines made by doubling the dots, and 132 columns that really narrow the characters.

Built from the manuals

The features legacy hosts depend on.

General-purpose terminals stop at "mostly VT100". veetee implements the DEC functions that OpenVMS applications actually use, level by level, from VT52 to VT525.

PF1Gold

A proper LK401 keypad

PF1–PF4, the editing keypad, Help, Do and F6–F20 in their DEC positions, with application keypad modes, UDKs and 7- or 8-bit codes. EDT and EVE feel right at once.

DECSCAProtect

DECforms and FMS fields

Protected fields with selective erase, status lines, double-size banners, DEC Special Graphics and 132-column switching: everything a forms application expects.

DECDLDSoft font

Soft fonts and charsets

Downloadable character sets, 17 national replacement sets, DEC Supplemental, DEC Technical, ISO Latin, and the VT500 Greek, Hebrew, Turkish and Cyrillic sets.

DECCRARectangle

VT420 rectangles and pages

Left/right margins, rectangular copy, fill, erase and attribute changes, checksums that match the hardware, page memory, macros and state reports.

F4Session

Dual sessions

Two independent sessions in a split window, just like a VT520 on two comm lines. The host can name each session and make it active.

F5Break

Telnet, SSH and serial

Native Telnet with binary mode and BREAK, SSH through your OpenSSH setup, and serial lines at DEC factory defaults (9600 8N1 XON/XOFF). LAT is on the roadmap.

F1Hold Screen

Power-user touches

Hold Screen with real flow control, answerback, copy that understands VMS file specs, session recording, and phosphor, scan-line and dot-stretch rendering.

SET TERMInquire

Honest identity

Device attributes, mode reports, DECRQSS and terminal state reports answer as the chosen model, so SET TERMINAL/INQUIRE sees the terminal you picked.

Heritage

Fifty years of glass, one terminal.

Each generation of DEC video terminal added something that applications came to rely on. veetee emulates the whole line, with each model's own identity and conformance levels.

VEETEE LINEAGE REPORTPAGE 1
  • 1975VT52Escape-sequence cursor control; still reachable through ANSI mode reset.
  • 1978VT100ANSI X3.64 sequences, scrolling regions, double-size lines, Special Graphics.
  • 1983VT2208-bit controls, national sets, soft fonts, user-defined keys, protected fields.
  • 1987VT320ISO Latin-1, status lines, presentation and mode reports.
  • 1990VT420Left/right margins, rectangles, page memory, macros, dual sessions.
  • 1994VT520 · VT525VT500 character sets, cursor styles, framed sessions, colour on the VT525.
  • 2026veetee 0.4.0All of the above, on a Linux desktop near you. Default: VT420.

Proof, not promises

Tested like it was 1987.

Behaviour comes from DEC's documentation, and every claim is checked against the test suites the terminal community has trusted for decades.

18
vttest scripts across menus 1–8 and 11.1–11.4, compared with golden screens on every commit
368
esctest2 tests pass at VT level 5; every other difference is written down with its DEC reason
267
unit tests on the terminal model, written against the manual sections they cite
0
xterm-isms by default: autowrap off at power-up, Backspace sends DEL, SU/SD pan through page memory
DEC STD 070 EK-VT100-UG EK-VT220-RM EK-VT420-RM EK-VT510-RM EK-VT520-RM
“DEC documentation first. Where DEC and xterm differ, the DEC behaviour is the default, and xterm behaviour is an opt-in setting.”— the veetee compatibility matrix

$ INSTALL/LOG

On the air in a minute.

Debian and Ubuntu

Download the package from the latest release and install it. GTK 4.12 and libadwaita 1.5 or later are required.

# fetch and install veetee 0.4.0 $ curl -LO https://github.com/issinoho/veetee/\ releases/download/v0.4.0/veetee_0.4.0-1_amd64.deb $ sudo apt install ./veetee_0.4.0-1_amd64.deb

From source

# Rust stable plus GTK 4 development files $ sudo apt install libgtk-4-dev libadwaita-1-dev $ git clone https://github.com/issinoho/veetee.git $ cd veetee && cargo run --release -p veetee

Then connect

Telnet, SSH, serial or a local shell, as any model from VT100 to VT525.

# a VT420 on your OpenVMS host $ veetee --telnet vms1 # SSH through ~/.ssh/config, green phosphor $ veetee --ssh system@vms1 --phosphor green # the console port, DEC factory defaults $ veetee --serial /dev/ttyUSB0 # a colour VT525 with two sessions $ veetee --model vt525 --sessions 2 --telnet vms1

On the host

$! let OpenVMS identify the terminal $ SET TERMINAL/INQUIRE $ SHOW TERMINAL

Roadmap

The road to 1.0.

One milestone per minor release. Lit means shipped.

M0 · FoundationsParser, CI, fuzzing, headless driver
M1 · VT100 / VT52Core screen, GL renderer, first font
M2 · VT220 / VT320Charsets, soft fonts, UDKs, status line
M3 · VT420Margins, rectangles, pages · 0.3.0
M4 · VT520 / VT525Colour, sessions, VT500 sets · 0.4.0
M5 · TransportsPTY, Telnet, SSH, serial · LAT to come
M7 · Fonts & lookFull font families, CRT mode, Set-Up
M8 · 1.0Profiles, logging, Flatpak