telnet daemon working
[nikiroo-utils.git] / README.md
index 1e1bb544bbaa83f05eda45babc25eef10c57b1dc..9ffed93744fd9fb9127e5991e32e0f397583a809 100644 (file)
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@ wishing to use the actual C++ Turbo Vision library, see [Sergio
 Sigala's updated version](http://tvision.sourceforge.net/) that runs
 on many more platforms.
 
-Two backends are available:
+Three backends are available:
 
 * 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
@@ -20,13 +20,29 @@ Two backends are available:
   are supported.  For the demo application, this is the default
   backend on non-Windows platforms.
 
+* The same command-line ECMA-48 / ANSI X3.64 type terminal as above,
+  but to any general InputStream/OutputStream.  See the file
+  jexer.demos.Demo2 for an example of running the demo over a TCP
+  socket.
+
 * Java Swing UI.  This backend can be selected by setting
   jexer.Swing=true.  The default window size for Swing is 132x40,
   which is set in jexer.session.SwingSession.  For the demo
   application, this is the default backend on Windows platforms.
 
-The demo application showing the existing UI controls is available via
-'java -jar jexer.jar' or 'java -Djexer.Swing=true -jar jexer.jar' .
+The demo application showing the existing UI controls can be seen in
+three ways:
+
+  * 'java -jar jexer.jar' .  This will use System.in/out on
+    non-Windows, or Swing on Windows.
+
+  * 'java -Djexer.Swing=true -jar jexer.jar' .  This will always use
+    Swing.
+
+  * 'java -cp jexer.jar jexer.demos.Demo2 PORT' (where PORT is a
+    number to run the TCP daemon on).  This will use the telnet
+    protocol to establish an 8-bit clean channel and be aware of
+    screen size changes.
 
 Additional backends can be created by subclassing
 jexer.backend.Backend and passing it into the TApplication
@@ -82,7 +98,7 @@ public class MyApplication extends TApplication {
 }
 ```
 
-See the file demos/Demo1.java for detailed examples.
+See the files in jexer.demos for more detailed examples.
 
 
 
@@ -93,9 +109,6 @@ 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.
 
-  TTerminalWindow
-  ---------------
-
   - TTerminalWindow will hang on input from the remote if the
     TApplication is exited before the TTerminalWindow's process has
     closed on its own.  This is due to a Java limitation/interaction
@@ -115,28 +128,24 @@ ambiguous.  This section describes such issues.
     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'
-  -------------
+  - 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.
 
   - 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.
+    cfmakeraw() when using System.in/out.  System.out is also
+    (blindly!)  put in 'stty sane cooked' mode when exiting.
+
 
 
 System Properties
@@ -164,10 +173,6 @@ Roadmap
 
 Many tasks remain before calling this version 1.0:
 
-0.0.2: STABILIZE EXISTING
-
-- ECMA48Backend running on socket
-
 0.0.3: FINISH PORTING
 
 - TTreeView
@@ -187,6 +192,7 @@ Many tasks remain before calling this version 1.0:
 0.0.5: BUG HUNT
 
 - TSubMenu keyboard mnemonic not working
+- Swing performance.  Even with double buffering it isn't great.
 
 0.1.0: BETA RELEASE