- jexer.Swing.tripleBuffer
- ------------------------
-
- Used by jexer.backend.SwingTerminal. If true, use triple-buffering
- which reduces screen tearing but may also be slower to draw on
- slower systems. If false, use naive Swing thread drawing, which may
- be faster on slower systems but also more likely to have screen
- tearing. Default: true.
-
- jexer.TTerminal.ptypipe
- -----------------------
-
- Used by jexer.TTerminalWindow. If true, spawn shell using the
- 'ptypipe' utility rather than 'script'. This permits terminals to
- resize with the window. ptypipe is a separate C language utility,
- available at https://gitlab.com/klamonte/ptypipe. Default: false.
-
- jexer.TTerminal.closeOnExit
- ---------------------------
-
- Used by jexer.TTerminalWindow. If true, close the window when the
- spawned shell exits. Default: false.
-
- jexer.ECMA48.rgbColor
- ---------------------
-
- Used by jexer.backend.ECMA48Terminal. If true, emit T.416-style RGB
- colors for normal system colors. This is expensive in bandwidth,
- and potentially terrible looking for non-xterms. Default: false.
-
- jexer.ECMA48.sixel
- ------------------
-
- Used by jexer.backend.ECMA48Terminal. If true, emit image data
- using sixel, otherwise show blank cells where images could be. This
- is expensive in bandwidth, very expensive in CPU (especially for
- large images), and will leave artifacts on the screen if the
- terminal does not support sixel. Default: true.
-
-
-
-Known Issues / Arbitrary Decisions
-----------------------------------
-
-Some arbitrary design decisions had to be made when either the
-obviously expected behavior did not happen or when a specification was
-ambiguous. This section describes such issues.
-
- - See jexer.tterminal.ECMA48 for more specifics of terminal
- emulation limitations.
-
- - TTerminalWindow uses cmd.exe on Windows. Output will not be seen
- until enter is pressed, due to cmd.exe's use of line-oriented
- input (see the ENABLE_LINE_INPUT flag for GetConsoleMode() and
- SetConsoleMode()).
-
- - TTerminalWindow by default launches 'script -fqe /dev/null' or
- 'script -q -F /dev/null' on non-Windows platforms. This is a
- workaround for the C library behavior of checking for a tty:
- script launches $SHELL in a pseudo-tty. This works on Linux and
- Mac but might not on other Posix-y platforms.
-
- - Closing a TTerminalWindow without exiting the process inside it
- may result in a zombie 'script' process.
-
- - When using the Swing backend, and not using 'ptypipe', closing a
- TTerminalWindow without exiting the process inside it may result
- in a SIGTERM to the JVM causing it to crash. The root cause is
- currently unknown, but is potentially a bug in more recent
- releases of the 'script' utility from the util-linux package.
-
- - TTerminalWindow can only notify the child process of changes in
- window size if using the 'ptypipe' utility, due to Java's lack of
- support for forkpty() and similar. ptypipe is available at
- https://gitlab.com/klamonte/ptypipe.
-
- - Java's InputStreamReader as used by the ECMA48 backend requires a
- valid UTF-8 stream. The default X10 encoding for mouse
- coordinates outside (160,94) can corrupt that stream, at best
- putting garbage keyboard events in the input queue but at worst
- causing the backend reader thread to throw an Exception and exit
- and make the entire UI unusable. Mouse support therefore requires
- a terminal that can deliver either UTF-8 coordinates (1005 mode)
- or SGR coordinates (1006 mode). Most modern terminals can do
- this.