Skip to content

Linux Terminal Feature Support Matrix

Linux has more terminal emulators than it has opinions about init systems, and every one of them claims to be modern. This page is what nine of them actually do with the escape codes your editor, prompt and image viewer send, on the settings they ship with. It is the Linux half of the macOS feature matrix, tested the same way.

Ghostty and WezTerm handle nearly everything here, exactly as they do on a Mac. kitty misses only overline and sixel. Konsole is the surprise: both image protocols, every underline style and the clipboard, though its hyperlinks are switched off and it ignores most questions about itself. foot draws sixel and every emoji but not kitty graphics. GNOME Terminal and Ptyxis, both built on VTE, are solid on text but draw no images, won’t touch the clipboard and come apart on combined emoji. Alacritty is as it is on macOS: fine on text, no images at all. xterm, on factory settings, manages 24-bit colour and very little else from this century, though much of what it lacks is switched off rather than missing.

Feature support in 9 Linux terminal emulators, on factory settings
FeatureAlacrittyfootGhosttyGNOME TerminalkittyKonsolePtyxisWezTermxterm
Colour
24-bit colour (truecolor)YesYesYesYesYesYesYesYesYes
Text styles
ItalicYesYesYesYesYesYesYesYesYes
Bold and italic togetherYesYesYesYesYesYesYesYes1No
DimYesYesYes2NoYes3PartlyYesYesNo
StrikethroughYesYesYesYesYesYesYesYesYes
OverlineNoNoYesYesNoYesYesYesNo
Underlines
SingleYesYesYesYesYesYesYesYes4No
DoubleYesYesYesYesYesYesYesYes5No
Curly (undercurl)YesYesYesYesYesYesYesYes5No
DottedYesYesYesYesYesYesYesYes5No
DashedYesYesYesYesYesYesYesYes5No
Coloured underlineYesYesYesYesYesYesYesYes5No
Characters
Emoji6PartlyYesYesYesYesYesYesYesNo
Emoji skin tones7NoYesYes7NoYesYes7NoYesNo
Flag emoji8NoYesYes8NoYesYes8NoYesNo
Combined emoji (family)9NoYesYes9NoYesYes9NoYesNo
Double-width CJKYesYesYesYesYesYesYesYesYes
Box drawing and blocksYesYesYesYesYesYesYesYesYes
Ligatures, default font10NoNoYesNoNoNoNoYesNo
Nerd Font icons, default font1011Partly12PartlyYes12PartlyYes12Partly12PartlyYesNo
Images
SixelNoYesNoNoNoYesNoYes13No
kitty graphics protocolNoNoYesNoYesYesNoYesNo
Hyperlinks and clipboard
Copy to clipboard (OSC 52)YesYesYesNoYesYesNoYes17No
Protocols (the terminal's own answer)
kitty keyboard protocolYesYesYesNo replyYesNo replyNo reply18No replyNo reply
Synchronised output (mode 2026)YesYesYesNoYesNo replyNoYesNo
Bracketed paste (mode 2004)YesYesYesYesYesNo replyYesYesYes
Focus events (mode 1004)YesYesYesYesYesNo replyYesYesYes
SGR mouse reporting (mode 1006)YesYesYesYesYesNo replyYesYesYes
Grapheme clustering (mode 2027)NoYesYesNoNoNo replyNoYesNo
Light/dark mode queryNo replyNo replyYesNo replyYesNo replyNo replyNo replyNo reply
Light/dark change notices (mode 2031)NoNoYesNoYesNo replyNoNoNo
In-band resize (mode 2048)NoYesYesNoYesNo replyNoNoNo
Colour queries (OSC 10/11)YesYesYesYesYesYesYesYesYes
Reports its name and version (XTVERSION)No replyYesYesYesYesYesYesYesYes
Answers terminfo queries (XTGETTCAP)No replyYesYesYesYesNo replyYesYesNo reply
  1. Slanted, but not bold.
  2. Drawn exactly like plain text on the default black-on-white theme. Ptyxis, with the same VTE and a dark theme, dims visibly.
  3. Fainter, but only just: #EFF0F1 against the plain text's #FCFCFC.
  4. Ignores the colon form of the code used here (4:1); the ordinary ESC[4m does underline.
  5. Ignores the colon form of the underline codes used here (4:2, 58:2 and so on), so nothing is underlined.
  6. Drawn as a black-and-white outline from a text font, not as a colour emoji.
  7. Draws the thumb and the skin-tone swatch separately.
  8. Shows the two regional-indicator letters instead of a flag.
  9. Draws the three people separately, three times the width.
  10. Depends on the font the terminal ships with as much as on the terminal: any terminal here can be given a font that has them.
  11. Draws powerline arrows itself, and finds the GitHub and Apple logos in an installed font; the other icons are boxes.
  12. Finds the GitHub and Apple logos in an installed font; the other icons are boxes.
  13. Built in, but off unless xterm is told to emulate a VT340: xterm -ti 340.
  14. Not on hover: links are highlighted only in URL mode, Ctrl+Shift+O.
  15. Shown only while Ctrl is held.
  16. Off by default: the profile setting Allow escape sequences for links turns it on.
  17. Off by default: the allowWindowOps resource turns it on.
  18. Off by default; enable_kitty_keyboard = true turns it on.
  • ✓ works, ✗ doesn’t, and ◐ sort of works: the footnote says how.
  • – means the terminal ignored the question. That usually means it lacks the feature, but not always: a terminal can support something and still not answer when asked about it.
  • Every feature name is a link to its own row, for pointing someone at the one result that settles the argument.

Most rows record what turned up on screen. Hyperlinks and the clipboard record what happened when they were used, and the protocol rows at the bottom record the terminal’s own reply when asked whether it supports them.

The method is the macOS one: the same test pattern, screenshotted for every row from colour to images (all nine are below); the same link-hovering for OSC 8; the same clipboard round trip for OSC 52; the same standard queries for the protocol rows. The results are available as JSON, replies included, under CC BY 4.0: use them for anything, as long as you credit terminal.ninja.

What changes on Linux is where the terminals ran. Each one got a headless sway of its own on Ubuntu 25.10: a Wayland desktop with no screen, started for that terminal and thrown away afterwards, with its own D-Bus session and empty configuration directories. That keeps every terminal on factory settings (no config file, no dconf database, no fonts installed by hand), while the system’s own defaults stay as Ubuntu ships them. A terminal that doesn’t bundle a font therefore gets DejaVu Sans Mono, which is why the font rows mostly measure fonts. A few details differ from the Mac run, each for a reason:

  • The display is scaled 2x, like a HiDPI laptop. xterm, an X11 program, ran at 1x instead, because sway would otherwise draw it small and blow it up.
  • Every terminal that can draw its own title bar did, as on GNOME. Three can’t be talked into it under sway (xterm, GNOME Terminal and Ghostty), and theirs is a plain grey bar from the window manager.
  • kitty’s default window here is 71 columns wide, and the pattern needs 80, so kitty alone was given a wider window. Nothing else about it changed.
  • Hovering over links was tried with and without Ctrl, the Linux counterpart of Cmd. foot documents a key that shows links, and that was tried too.
  • Each window got the focus and a key press before testing started. Wayland only lets a program write to the clipboard in response to input, so without one, two terminals that support OSC 52 failed for reasons that had nothing to do with them.

Row B is row A forced into 256 colours, so a terminal that rounds 24-bit colour down draws A with B’s bands. The rulers mark where each emoji and CJK character should end.

Alacritty on Linux drawing the test pattern: smooth colour ramps and every underline style, red in the second row, but no line over the word overline, ligatures left as plain operators, three of six Nerd Font icons, the thumbs up as a black-and-white outline, the toned thumb drawn as a thumb plus a swatch, the flag as the letters GB, the family as three separate faces, and nothing on either image row.
Alacritty 0.17.0
foot drawing the test pattern: smooth colour ramps, every underline style in red, a toned thumb, a Union flag and a family emoji lined up with their rulers, a red sixel rectangle, but no overline, no ligatures, most Nerd Font icons as boxes and no kitty graphics image.
foot 1.21.0
Ghostty on Linux drawing the test pattern: smooth colour ramps, every text and underline style including red curly underlines, joined ligatures, Nerd Font icons, emoji and CJK lined up with their rulers, a green kitty graphics rectangle and no sixel image.
Ghostty 1.3.1
GNOME Terminal drawing the test pattern in black on white: smooth colour ramps, overline and every underline style in red, but dim text no fainter than plain, Nerd Font icons as hex-code boxes, the toned thumb as a thumb plus a swatch, the flag as the letters GB, the family as three faces, and nothing on either image row.
GNOME Terminal 3.56.2, VTE 0.80.3
kitty on Linux drawing the test pattern: smooth colour ramps, every underline style including red curly underlines, all six Nerd Font icons, emoji and CJK lined up with their rulers and a green kitty graphics rectangle, but no line over the word overline and no sixel image.
kitty 0.49.2
Konsole drawing the test pattern: smooth colour ramps, overline and every underline style in red, the curly one as a stepped zigzag, emoji and CJK lined up with their rulers, and both the red sixel and green kitty graphics rectangles, but dim text barely fainter than plain and most Nerd Font icons as boxes.
Konsole 25.08.1
Ptyxis drawing the test pattern on a purple background: smooth colour ramps, dim, overline and every underline style in red, but Nerd Font icons as hex-code boxes, the toned thumb as a thumb plus a swatch, the flag as the letters GB, the family as three faces, and nothing on either image row.
Ptyxis 49.1, VTE 0.80.3
WezTerm on Linux drawing the test pattern: smooth colour ramps, overline and every underline style in red, joined ligatures, Nerd Font icons, emoji and CJK lined up with their rulers, and both the red sixel and green kitty graphics rectangles.
WezTerm 20260929-043349-cab25161
xterm drawing the test pattern in a small bitmap font, black on white: smooth colour ramps, italic and strikethrough, but no underlines of any style, every Nerd Font icon and emoji a box, CJK lined up with its ruler, and nothing on either image row.
xterm 402

The macOS page explains what each of these features is for. On Linux, the picture is this.

All nine draw it, xterm included. If colours look wrong, the cause is almost certainly $TERM or tmux, not the terminal.

Eight of the nine draw every underline style in colour, so an editor’s red squiggle under a spelling mistake shows up as intended. Konsole’s squiggle is a stepped zigzag rather than a wave, but nobody will mistake it for anything else. xterm draws none of them: it ignores the colon-separated form of the codes (4:3 for curly) that editors use, though the ordinary single underline works.

Which Linux terminals support sixel and kitty graphics?

Section titled “Which Linux terminals support sixel and kitty graphics?”

Sixel comes from foot, Konsole and WezTerm; kitty graphics from Ghostty, kitty, Konsole and WezTerm. Konsole and WezTerm are the only two that do both. Alacritty, GNOME Terminal and Ptyxis do neither, and xterm has sixel built in but switched off until it is told to emulate a VT340 (xterm -ti 340).

Which Linux terminals get emoji width right?

Section titled “Which Linux terminals get emoji width right?”

foot, Ghostty, kitty, Konsole and WezTerm draw skin tones, flags and families as single emoji and keep the rest of the line in place. Alacritty, GNOME Terminal and Ptyxis draw the pieces separately, and xterm’s default bitmap font has no emoji at all. Alacritty doesn’t even get the plain thumbs up right: it borrows the outline version from a text font instead of the colour one.

Section titled “Which Linux terminals support OSC 8 hyperlinks?”

Alacritty, GNOME Terminal, kitty, Ptyxis and WezTerm underline a link as soon as the pointer is over it; Ghostty only while Ctrl is held. foot shows links only in its URL mode (Ctrl+Shift+O), where it labels each one with a key to open it. Konsole supports them but ships with them off, and xterm doesn’t support them.

Which Linux terminals support OSC 52 copying?

Section titled “Which Linux terminals support OSC 52 copying?”

Alacritty, foot, Ghostty, kitty, Konsole and WezTerm accept it as they come, which is what makes a yank in Neovim over SSH land on your own clipboard. GNOME Terminal and Ptyxis don’t support it, which is a real gap for anyone who works on remote machines. xterm supports it but blocks it until its allowWindowOps resource is set.

Which Linux terminals support the kitty keyboard protocol?

Section titled “Which Linux terminals support the kitty keyboard protocol?”

Alacritty, foot, Ghostty and kitty offer it out of the box. WezTerm leaves it off until you set enable_kitty_keyboard = true, as on macOS. GNOME Terminal, Konsole, Ptyxis and xterm don’t answer the question.

Which Linux terminals support synchronised output?

Section titled “Which Linux terminals support synchronised output?”

Alacritty, foot, Ghostty, kitty and WezTerm support it. GNOME Terminal, Ptyxis and xterm say they don’t recognise it, and Konsole doesn’t answer. Without it, a full-screen redraw can flicker.

The macOS page explains what each of these is for. Konsole answers only the colour queries and XTVERSION, so the rest of its cells are dashes, not crosses: silence rather than a confirmed no.

  • Bracketed paste (mode 2004), focus events (mode 1004) and SGR mouse reporting (mode 1006): the other eight support all three.
  • Grapheme clustering (mode 2027): foot, Ghostty and WezTerm. Alacritty, GNOME Terminal, kitty, Ptyxis and xterm decline.
  • The light/dark mode query, and change notices (mode 2031): only Ghostty and kitty, for both. Everything else ignores the query and declines the notices.
  • In-band resize (mode 2048): foot, Ghostty and kitty. Alacritty, GNOME Terminal, Ptyxis, WezTerm and xterm decline.
  • Colour queries (OSC 10/11): all nine answer.
  • XTVERSION: everything except Alacritty reports its name and version. XTGETTCAP: foot, Ghostty, GNOME Terminal, kitty, Ptyxis and WezTerm answer; Alacritty, Konsole and xterm don’t.

Alacritty, Ghostty, kitty and WezTerm were tested on both systems at the same or near-identical versions. Ghostty, kitty and WezTerm gave the same answer to every question on both, screenshots and protocol replies alike; the only difference is Ghostty’s link key, which follows each system’s convention: Cmd on a Mac, Ctrl on Linux.

Alacritty matched on everything except two rows that are about fonts. It ships none of its own, so it draws emoji and icons with whatever the system has. On a Mac that means Apple’s colour emoji; on Ubuntu, it picks up a black-and-white thumbs up from a text font first, while finding a couple more icons than macOS gave it. Every protocol answer was identical. Pick one of these four and it behaves the same on both machines, give or take the fonts underneath.

The matrix says what each terminal does, not which one to live in. For that, see the terminal emulator roundup and the Alacritty vs kitty head-to-head. The ligature and icon rows are really about fonts, which the fonts guide covers properly.