Reliability improvements + almost full VT102 parity
This release adds almost all missing commands and options to be VT102-compatible.
NOTE: This is still pretty much a pre-release, the stable and fully documented release will be v 0.7, sometime in September. The built-in Quick Reference page is outdated.
A list of supported commands can be found here, for now:
http://bits.ondrovo.com/espterm-xterm.html
(Note: DECOM and Scrolling Region commands are now also implemented and work correctly)
Example of mc
being accessed through ESPTerm
Changes
The way to set buttons text was changed, because I now better understand how OSC commands should be used ;)
To set button 1 text: OSC 8 1 ; Pt ST
- where Pt
is the text (spaces added only for easier reading!). Use 81-85 for the 5 buttons. They still send ASCII 1 through 5 when pressed.
To set screen title, use OSC 0 ; Pt ST
. (OSC is ESC ]
, ST is ESC \
or Ascii BEL - code 7)
Notable new features:
- a support for a large portion of the xterm/VT100 function set, meaning most Linux console applications will work perfectly through ESPTerm
- implemented charset switching and added a custom symbol codepage "1" inspired by the DOS page 437 - for reference, see the source file
screen.c
, near the end. - implemented audible BEEP - on reception of 0x07
- many other sequences, see #64 for a list of things that were added (scrolling region, tab stops...)
- display timeouts for more reliable operation - see below
- alternate keyboard modes (numpad application mode, cursors application mode, function keys SS3 variant - set in the terminal settings)
Timeouts:
- Configure them in the settings to get the best performance with your application.
Parser timeout
- timeout for receiving an ESC sequence. Change to 0 for manual sequence testingRedraw delay
- how long the screen must be left unchanged before a redraw is sent to the browserRedraw cooldown
- minimal time before another redraw may be sent.
Redraw delay
defines how "responsive" the terminal feels (compromise of responsiveness vs. hogging the server), while Redraw cooldown
is used to throttle the update speed and avoid buffer overflow (and lost bytes) due to spending too much time serializing the screen and sending it via the websocket.
The default values are good enough for most situations. Try increasing Redraw cooldown
if you experience dropped bytes.
Known bugs:
- something a little wrong with charset switching (#77) - not yet investigated in detail
- large unicode glyphs break the grid (#71) - this is a front-end issue, hopefully will be fixed before 0.7 is released
- rarely, a bad "utf-8" character can get into a screen cell and cause the websocket to fail. This seems to happen when using wrong baud rate, eg when starting agetty. The solution is to clear the screen by mashing enter, or just restart espterm and hope for the best.
- if your application spams excessively and you have mis-configured the timeouts, the internal buffer may still overflow. (this is not really a bug we're likely to fix, but be aware of that issue)