A unicode, sixels, graphics, audio and vectors terminal.
The terminal supports vector graphics ala the HTML5
Canvas 2D graphics through the ctx text
protocol in a similar manner to how DEC's
ReGIS and ripscript have
attempted to provide richer graphics experiences in the past.
sixels and other forms of raster graphics are
supported, but with modern displays having high pixel
density, the bandwidth required for good raster graphics
starts falling apart.
Before integration of the ctx protocol, the ctx terminal did
minimal more minimal rendering/updates - while still rendering with
ctx, this made fullscreen terminals more usable on high pixel
density displays. Even with 4 rendering threads sharing the overhead
input latency suffers, continued work on hashing and other
performance enhancement, perhaps even GPU, will hopefully bring
latency back down.
Exhaustive list of supported
escape sequences acts as a
refererence for further development and a shorthand cheat-sheet
for writing code for the terminal.
- ametmeric palette
- The built-in 16 color palette is optimized for legibility for both trichromats and dichromats
- ctx vector graphics
- Using the ctx protocol, by first
entering ctx mode with \e[?7020h which creates a new
or accesses an existing vector drawing context for the current
- audio recording and playback (only raw pcm for now, opus codec NYI)
- DEC compatible raster encoding, with 6row high 1bit raster lines * colors used.
- kitty graphics
- iterm2 inline images
- iterm2 inline image image protocol in one bulk base64 transfer
- mouse xterm
- xterm mouse reporting modes - somewhat incomplete
- Most of dterms window management integration.
- pixel mouse
- escape sequence to get pixel coordinates for mouse events
- The terminal uses 7bit control codes, and reserves bytes>127 for use in character data.
- vt102 escapes
- >100 points on the vttest score card
- ECMA-48 colors
- The standard defining the 16 colors
- ECMA-48 justification
- Only implementing wordwrap for now, can be extended with more.
- ECMA-48 proportional
- Limited predictable proportional rather than monospaced text, for best results render proportional text in a finall pass, starting with left most column.
Missing and desirable features
- F1 F2 F3 .. missing
- Cursor setting
- Drag to select in vim
- The final result of the interaction is correct, but intermediate frames are perhaps not queued for draw?
- Palette setting
- Like in the ametameric test-drive sequences.
- Key-event confusion when changing layouts
- probably ctx is at fault.
- /dev/tty in flatpak
- The pty is somehow not completely correctly bound between sandbox and host.
- color emoji
only code 1049 works fully specs compliant, the others
leave the cursor in the wrong spot.