* System.in/out to a command-line ECMA-48 / ANSI X3.64 type terminal
(tested on Linux + xterm). I/O is handled through terminal escape
sequences generated by the library itself: ncurses is not required
- or linked to. xterm mouse tracking using UTF8 coordinates is
- supported. For the demo application, this is the default backend on
- non-Windows platforms.
+ or linked to. xterm mouse tracking using UTF8 and SGR coordinates
+ are supported. For the demo application, this is the default
+ backend on non-Windows platforms.
* Java Swing UI. This backend can be selected by setting
jexer.Swing=true. The default window size for Swing is 132x40,
input (see the ENABLE_LINE_INPUT flag for GetConsoleMode() and
SetConsoleMode()).
+ - TTerminalWindow launches 'script -fqe /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 but might not on other Posix-y platforms.
+
+ ECMA48 Backend
+ --------------
+
+ - Java's InputStreamReader 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.
+
+ Use of 'stty'
+ -------------
+
+ - jexer.session.TTYSession calls 'stty size' once every second to
+ check the current window size, performing the same function as
+ ioctl(TIOCGWINSZ) but without requiring a native library.
+
+ - jexer.io.ECMA48Terminal calls 'stty' to perform the equivalent of
+ cfmakeraw(). The terminal is (blindly!) put back in 'stty sane
+ cooked' mode when exiting.
+
+
+System Properties
+-----------------
+
+The following properties control features of Jexer:
+
+ jexer.Swing
+ -----------
+
+ Used only by jexer.demos.Demo1. If true, use the Swing interface
+ for the demo application. Default: true on Windows platforms
+ (os.name starts with "Windows"), false on non-Windows platforms.
+
+ jexer.Swing.cursorStyle
+ -----------------------
+
+ Used by jexer.io.SwingScreen. Selects the cursor style to draw.
+ Valid values are: underline, block, outline. Default: underline.
+
Roadmap
0.0.2: STABILIZE EXISTING
-- TTerminalWindow
- - Expose shell commands as properties
-- Swing:
- - Blinking cursor
- - Block cursor
- ECMA48Backend running on socket
-- TFileOpen
-- Decide on naming convention: getText, getValue, getLabel: one or all
- of them?
-- Refactor:
- - TKeypress:
- - getCh() --> getChar()
- - getAlt/getCtrl/getShift --> isAltDown / isCtrlDown / isShiftDown
- - Other boolean getters --> isSomething
-- Document any properties used
- - Expose use of 'stty'
0.0.3: FINISH PORTING
- Also add keyboard navigation
- TDirectoryList
- Also add keyboard navigation
+- TFileOpen
0.0.4: NEW STUFF
![Several Windows Open Including A Terminal](/screenshots/screenshot1.png?raw=true "Several Windows Open Including A Terminal")
![Yo Dawg...](/screenshots/yodawg.png?raw=true "Yo Dawg, I heard you like text windowing systems, so I ran a text windowing system inside your text windowing system so you can have a terminal in your terminal.")
-