sixel in README
authorKevin Lamonte <kevin.lamonte@gmail.com>
Thu, 14 Feb 2019 15:26:30 +0000 (09:26 -0600)
committerKevin Lamonte <kevin.lamonte@gmail.com>
Thu, 14 Feb 2019 15:26:30 +0000 (09:26 -0600)
README.md
screenshots/sixel_color_wheel.png [new file with mode: 0644]
screenshots/sixel_images.png [new file with mode: 0644]

index 009ec6f99a5dfa9b23b530df024ec592e8e1da6a..44759cf611dac7e8ae051f08ff7162f83a772130 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1,13 +1,13 @@
 Jexer - Java Text User Interface library
 ========================================
 
-This library implements a text-based windowing system reminiscient of
-Borland's [Turbo Vision](http://en.wikipedia.org/wiki/Turbo_Vision)
-system.  (For those wishing to use the actual C++ Turbo Vision
-library, see [Sergio Sigala's C++ version based on the sources
-released by Borland,](http://tvision.sourceforge.net/) or consider
-Free Pascal's [Free Vision
-library.](http://wiki.freepascal.org/Free_Vision))
+This library implements a text-based windowing system loosely
+reminiscient of Borland's [Turbo
+Vision](http://en.wikipedia.org/wiki/Turbo_Vision) system.  (For those
+wishing to use the actual C++ Turbo Vision library, see [Sergio
+Sigala's C++ version based on the sources released by
+Borland,](http://tvision.sourceforge.net/) or consider Free Pascal's
+[Free Vision library.](http://wiki.freepascal.org/Free_Vision))
 
 Jexer currently supports three backends:
 
@@ -15,14 +15,15 @@ Jexer currently supports three backends:
   (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 is supported using both UTF8 and
-  SGR coordinates.  For the demo application, this is the default
-  backend on non-Windows/non-Mac platforms.
+  SGR coordinates.  Images are optionally rendered via sixel graphics
+  (see jexer.ECMA48.sixel).  For the demo application, this is the
+  default backend on non-Windows/non-Mac platforms.
 
 * The same command-line ECMA-48 / ANSI X3.64 type terminal as above,
   but to any general InputStream/OutputStream or Reader/Writer.  See
   the file jexer.demos.Demo2 for an example of running the demo over a
-  TCP socket.  jexer.demos.Demo3 demonstrates how one might use a
-  character encoding than the default UTF-8.
+  TCP (telnet) socket.  jexer.demos.Demo3 demonstrates how one might
+  use a character encoding than the default UTF-8.
 
 * Java Swing UI.  The default window size for Swing is 80x25 and 20
   point font; this can be changed in the TApplication(BackendType)
@@ -166,6 +167,10 @@ More Screenshots
 
 ![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.")
 
+![Sixel Pictures Of Cliffs Of Moher And Buoy](/screenshots/sixel_images.png?raw=true "Sixel Pictures Of Cliffs Of Moher And Buoy")
+
+![Sixel Color Wheel](/screenshots/sixel_color_wheel.png?raw=true "Sixel Color Wheel")
+
 
 
 System Properties
@@ -205,6 +210,12 @@ The following properties control features of Jexer:
   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
   ---------------------
 
@@ -212,6 +223,15 @@ The following properties control features of Jexer:
   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
@@ -238,6 +258,12 @@ ambiguous.  This section describes such issues.
   - 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
@@ -261,10 +287,21 @@ ambiguous.  This section describes such issues.
     equivalent of cfmakeraw() when using System.in/out.  System.out is
     also (blindly!) put in 'stty sane cooked' mode when exiting.
 
+  - jexer.backend.ECMA48Terminal uses a single palette containing
+    MAX_COLOR_REGISTERS colors for all sixel images.  These colors are
+    generated in the SixelPalette.makePalette() method with bits for
+    hue, saturation, and luminance, and the two extremes set to pure
+    black and pure white.  This provides a reasonable general-purpose
+    palette light on CPU, but at a cost that individual images do not
+    look as good as the terminal is actually capable of.
 
 
-Roadmap
--------
 
-Many tasks remain before calling this version 1.0.  See docs/TODO.md
-for the complete list of tasks.
+See Also
+--------
+
+[Tranquil Java IDE](https://tjide.sourceforge.io) is a TUI-based
+integrated development environment for the Java language that was
+built using a very lightly modified GPL version of Jexer.  TJ provided
+a real-world use case to shake out numerous bugs and limitations of
+Jexer.
diff --git a/screenshots/sixel_color_wheel.png b/screenshots/sixel_color_wheel.png
new file mode 100644 (file)
index 0000000..d4ce5f7
Binary files /dev/null and b/screenshots/sixel_color_wheel.png differ
diff --git a/screenshots/sixel_images.png b/screenshots/sixel_images.png
new file mode 100644 (file)
index 0000000..c66e56e
Binary files /dev/null and b/screenshots/sixel_images.png differ