Appearance
GNU Screen
Multiplexer
The original terminal multiplexer. Session persistence and window management since 1987.
GNU Screen, originally written by Oliver Laumann at the Technical University of Berlin in 1987, is the original terminal multiplexer and one of the oldest continuously maintained Unix utilities. It invented the concept of detach and reattach — disconnecting from a terminal session and reconnecting later with all processes still running. This was revolutionary for system administrators working over dial-up and unreliable network connections, and the concept became fundamental to remote server management.
Screen's VT emulation is conservative, supporting basic ANSI/VT100 features but lacking many modern extensions. It does not support truecolor (24-bit RGB), kitty keyboard protocol, or kitty graphics. Its 256-color support requires explicit configuration. As an intermediary, Screen strips or mishandles many modern escape sequences that newer terminals support.
While tmux (written in 2007 as a BSD-licensed alternative) has largely replaced Screen for new users, Screen remains installed by default on many Linux distributions and is still the multiplexer of choice in embedded systems, rescue environments, and minimal server images. Its hardstatus line — a customizable status bar at the bottom of the terminal — was the precursor to tmux's status line and influenced the design of terminal status bars everywhere.
Backend: The original terminal multiplexer. Session persistence and window management since 1987. · v4.00.03
68%
171 passed · 80 failed of 251 features
Tested: April 10, 2026
Version History
| Version | Support | Score | Features |
|---|---|---|---|
| 5.0.1 | 83% | 136 / 164 | |
| 4.00.03 | 68% | 171 / 251 |
Character Sets
| Feature | Support | Notes |
|---|---|---|
| DEC line drawing character set | ✗ no | cursor at col 19, expected 7 |
| DEC Special Graphics | ✗ no | cursor at col 1, expected 2 |
| G0/G1 character set switching | ✗ no | cursor at col 19, expected 2 |
| UTF-8 mode | ✗ no | cursor at col 1, expected 2 |
Cursor
| Feature | Support | Notes |
|---|---|---|
| ANSI restore cursor (CSI u) | ✗ no | got 5;10, expected 4;6 |
| ANSI save cursor (CSI s) | ✗ no | got 1;2, expected 3;5 |
| CPL cursor preceding line (CSI F) | ✗ no | got 1;2, expected 4;1 |
| CUD stops at bottom | ✗ no | cursor at row 1 |
| CUP at screen boundaries | ✓ yes | |
| CUP with DECOM | ✗ no | got 1;2, expected 5;1 |
| CUU stops at top | ✓ yes | |
| Hide cursor (DECTCEM) | ✓ yes | |
| Cursor horizontal absolute (CHA) | ✗ no | got 1;2, expected 3;15 |
| HPA horizontal position absolute (CSI `) | ✗ no | got 4;1, expected 3;15 |
| Cursor position (CUP) | ✗ no | got 1;2, expected 5;10 |
| Cursor back (CUB) | ✓ yes | |
| Cursor down (CUD) | ✗ no | got 1;2, expected 4;1 |
| Cursor forward (CUF) | ✗ no | got 1;2, expected 1;6 |
| Cursor home | ✗ no | got 1;2, expected 1;1 |
| Cursor up (CUU) | ✗ no | got 1;2, expected 4;1 |
| Cursor next line (CNL) | ✗ no | got 1;2, expected 4;1 |
| Cursor position report (DSR 6) | ✗ no | got 1;2, expected 3;5 |
| Reverse Wrap (Mode 45) | ✓ yes | |
| Save/restore cursor (DECSC) | ✗ no | got 1;1, expected 3;5 |
| Cursor shape (DECSCUSR) | ✓ yes | |
| VPA vertical position absolute (CSI d) | ✗ no | got 4;1, expected 10;5 |
Device Status
Editing
| Feature | Support | Notes |
|---|---|---|
| DECCARA — change attrs in rectangle | ✓ yes | sequence consumed |
| DECCRA — copy rectangular area | ✓ yes | sequence consumed |
| DECDC — delete columns (CSI Ps ' ~) | ✓ yes | sequence consumed |
| DECERA — erase rectangular area | ✓ yes | sequence consumed |
| DECFRA — fill rectangular area | ✓ yes | sequence consumed |
| DECIC — insert columns (CSI Ps ' }) | ✓ yes | sequence consumed |
| DECRARA — reverse attrs in rectangle | ✓ yes | sequence consumed |
| DECRQCRA — checksum rectangular area | ✓ yes | sequence consumed |
| DECSACE — select attribute-change extent | ✓ yes | sequence consumed |
| DECSERA — selective erase rectangular area | ✓ yes | sequence consumed |
| Delete characters (DCH) | ✗ no | cursor at col 6, expected 2 |
| Delete lines (DL) | ✗ no | cursor at row 4, expected 3 |
| Insert characters (ICH) | ✓ yes | |
| Insert lines (IL) | ✗ no | cursor at row 1, expected 3 |
| Repeat character (REP) | ✗ no | Screen does not support REP (repeat character) |
| SL — shift left (CSI Ps SP @) | ✓ yes | sequence consumed |
| SR — shift right (CSI Ps SP A) | ✓ yes | sequence consumed |
Erase
| Feature | Support | Notes |
|---|---|---|
| Erase character (ECH) | ✗ no | cursor at col 4, expected 2 |
| ED at scroll region boundary | ✓ yes | |
| EL erases with bg color | ✓ yes | |
| Erase line (EL 2) | ✗ no | cursor at col 1, expected 3 |
| Erase to BOL (EL 1) | ✗ no | cursor at col 1, expected 3 |
| Erase to EOL (EL 0) | ✗ no | cursor at col 1, expected 3 |
| Erase above (ED 1) | ✗ no | cursor at 1;3, expected 5;5 |
| Erase screen (ED 2) | ✗ no | cursor at 3;5, expected 5;5 |
| Erase below (ED 0) | ✗ no | cursor at 1;3, expected 5;5 |
| Erase scrollback (ED 3) | ✗ no | cursor at 1;1, expected 5;5 |
| Selective Erase (DECSED) | ✓ yes |
Extensions
Input Protocols
| Feature | Support | Notes |
|---|---|---|
| Button-Event Mouse (1002) | ✓ yes | |
| CSI u Key Encoding | ✓ yes | |
| Kitty click events | ? unknown | |
| modifyOtherKeys | ✓ yes | |
| modifyOtherKeys mode 3 | ✓ yes | |
| Pixel Mouse Reporting (1016) | ✓ yes | |
| urxvt Mouse Reporting (1015) | ✓ yes | |
| X10 Mouse Tracking (9) | ✓ yes |
Modes
Reset
| Feature | Support | Notes |
|---|---|---|
| DECALN screen alignment (ESC # 8) | ✓ yes | |
| Backend reset() method | ✓ yes | cursor at 1;1 after DECSTR |
| Full reset (RIS) | ✓ yes | |
| SGR reset clears attributes | ✗ no | cursor at col 1, expected 2 |
| Soft reset (DECSTR) | ✓ yes |
Scrollback
| Feature | Support | Notes |
|---|---|---|
| Scrollback accumulates | ✓ yes | |
| Alt screen separate scrollback | ✓ yes | Screen's alternate screen buffer handling differs — scrollback not fully preserved |
| DECSTBM constrains scrolling | ✓ yes | |
| DECSTBM reset to full screen | ✗ no | cursor at row 5 (expected near bottom after DECSTBM reset) |
| Reverse index (RI) | ✗ no | got 5;1, expected 1;5 |
| Scroll down (SD) | ✓ yes | |
| Scroll up (SU) | ✗ no | cursor at 5;1, expected 5;5 |
| Scroll region (DECSTBM) | ✓ yes | |
| Total line count | ✓ yes | Content written to scrollback |
SGR (Text Styling)
Text
| Feature | Support | Notes |
|---|---|---|
| Backspace (BS) | ✗ no | cursor at col 2, expected 4 |
| Basic text rendering | ✗ no | cursor at col 2, expected 6 |
| CBT backward tab (CSI Z) | ✗ no | cursor at col 1, expected 17 |
| CHT forward tab (CSI I) | ✗ no | cursor at col 10, expected 17 |
| Combining characters (0 cols) | ✓ yes | |
| Carriage return | ✗ no | cursor at col 2, expected 1 |
| HTS set tab stop (ESC H) | ✗ no | cursor at col 2, expected 6 |
| Index (IND) | ✗ no | got 1;2, expected 4;5 |
| Line feed | ✗ no | cursor at row 1, expected 4 |
| Next line (NEL) | ✗ no | got 1;2, expected 4;1 |
| Overwrite at cursor | ✗ no | cursor at col 5, expected 3 |
| Reverse Index at Scroll Top | ✗ no | cursor at row 1, expected 3 |
| Tab stops | ✗ no | Screen's tab handling may differ from direct terminal |
| TBC clear tab stop (CSI g) | ✗ no | cursor at col 2, expected 1 |
| CJK wide chars (2 cols) | ✗ no | width=1, expected 2 |
| Emoji wide chars (2 cols) | ✗ no | Screen 4.x has limited Unicode width awareness — emoji rendered as narrow |
| Regional indicator flags (2 cols) | ✗ no | width=5, expected 2 |
| Variation selector 16 (emoji presentation) | ✗ no | Screen 4.x does not handle VS16 emoji variation selectors |
| Emoji ZWJ sequences (2 cols) | ✗ no | Screen 4.x does not handle ZWJ emoji sequences |
| Text wraps at width | ✗ no | cursor at 1;2, expected 2;2 |
Unicode
| Feature | Support | Notes |
|---|---|---|
| East Asian Ambiguous Width | ✗ no | width=18 (ambiguous chars vary by terminal/locale) |
| Grapheme Cluster Cursor Movement | ✗ no | Screen 4.x does not support grapheme cluster cursor positioning |
| Tab Stops (HT) | ✗ no | Screen's tab stop handling differs from direct terminal |
| Wide Char at Line Wrap | ✗ no | cursor at row 1, expected 2 (wide char should wrap) |