sixel in README

This commit is contained in:
Kevin Lamonte 2019-02-14 09:26:30 -06:00
parent 978a5d8f65
commit 3cb993369f
3 changed files with 52 additions and 15 deletions

View file

@ -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.

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB