Skip to content

xterm behavior audit #632

Description

@mitchellh

This is a tracking issue for the ongoing audit of xterm behavior and comparison to Ghostty. The goal is to ensure Ghostty behaves identically to xterm for the sequences and features we support. We can diverge in behavior for some unsupported features (such as double height/width lines), though we may want to implement them in the future.

  • If the sequence is checked below, it means we match xterm behavior identically and we've backed that up with Zig test cases, shell script conformance tests, and English prose documentation.
  • A "⛔️" prefix means its a sequence we don't support. This does not mean we'll necessarily add support for this sequence, but its listed here so we can take a look. I may be missing some ⛔️ ...
  • This list is not complete, I'll be updating the list as I go, but I also wanted to keep track of some sequences I skipped.

Sequences

Ignored sequences and why:

  • Set warning-bell volume (DECSWBV) - A GUI feature, does not affect terminal behavior/rendering.
  • Set margin-bell volume (DECSMBV) - A GUI feature, does not affect terminal behavior/rendering.

ANSI Modes

DEC Modes

  • 1 - Cursor Keys (DECCKM)
  • 2 - VT52 (DECANM)
  • 3 - 80 or 132 Column Mode (DECCOLM) xterm audit: DEC mode 3 (DECCOLM), 4 (DECSCLM), 40 (132COLS) #870
  • 4 - Slow Scrolling (DECSCLM) xterm audit: DEC mode 3 (DECCOLM), 4 (DECSCLM), 40 (132COLS) #870
  • 5 - Reverse Video (DECSCNM) xterm audit: DEC mode 3 (DECCOLM), 4 (DECSCLM), 40 (132COLS) #870
  • 6 - Origin Mode (DECOM)
  • 7 - Autowrap (DECAWM)
  • 8 - Repeat Held Keys (DECARM)
  • 9 - X10 Mouse Tracking (XT_MOUSE)
  • 10 - Show Toolbar (RXVT_TOOLBAR)
  • 12 - Start/Stop Blinking Cursor (ATT610_BLINK)
  • 13 - Cursor Blink Setting (read-only) (CURSOR_BLINK_OPS)
  • 14 - XOR Cursor Blink (read-only) (XOR_CURSOR_BLINKS)
  • 18 - Print Form Feed (DECPFF)
  • 19 - Print Extent (DECPEX)
  • 25 - Show/Hide Cursor (DECTCEM)
  • 30 - Show Scrollbar (RXVT_SCROLLBAR)
  • 40 - Enable Mode 3 (132 Col Mode) (132COLS) xterm audit: DEC mode 3 (DECCOLM), 4 (DECSCLM), 40 (132COLS) #870
  • 42 - DEC National Character Set (DECNRCM)
  • 45 - Reverse Wrap (REVERSEWRAP)
  • 47 - Alt Buffer
  • 66 - Application Keypad Mode (DECNKM)
  • 67 - Backarrow Key Mode (DECBKM)
  • 69 - Enable Left/Right Margins (DECLRMM)
  • 95 - Set/Reset No Clearing Screen On Column Change (DECNCSM)
  • 1000 - VT200 Mouse (VT200_MOUSE)
  • 1001 - VT200 Highlight Mouse (VT200_HIGHLIGHT_MOUSE)
  • 1002 - Btn Event Mouse (BTN_EVENT_MOUSE)
  • 1003 - Any Event Mouse (ANY_EVENT_MOUSE)
  • 1004 - Focus Event Mouse (FOCUS_EVENT_MOUSE)
  • 1005 - Ext Mode Mouse (EXT_MODE_MOUSE)
  • 1006 - SGR Ext Mode Mouse (SGR_EXT_MODE_MOUSE)
  • 1007 - Alternate Scroll
  • 1010 - Scroll on TTY Output
  • 1011 - Scroll on Keypress
  • 1015 - URXVT Mode Mouse (URXVT_EXT_MODE_MOUSE)
  • 1016 - Pixel Position Mouse (PIXEL_POSITION_MOUSE)
  • 1035 - Real Num Lock
  • 1036 - Meta Sends Esc
  • 1037 - Delete is Delete
  • 1039 - Alt Sends Esc
  • 1045 - Extended Reverse Wrap (REVERSEWRAP2)
  • 1047 - Alt Buffer
  • 1048 - Alt Buffer
  • 1049 - Alt Buffer and Clear
  • 2004 - Bracketed Paste Mode
  • 2005 - Quoted Paste
  • 2006 - Paste Literal NL

Activity

  1. mitchellh commented on May 27, 2024

    @mitchellh
    ContributorAuthor

    Going to close this. We completed a significant amount of the audit to the point that I don't plan on fully completing this in the short term. I'm happy to revisit this eventually but I'm going to mark this as good enough for now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions