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.
 
 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
 
 * 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.
 
   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.
 
 * 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
 
 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.
 
 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
   - 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.
 
     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
 
   - 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
 
 
 System Properties
@@ -164,10 +173,6 @@ Roadmap
 
 Many tasks remain before calling this version 1.0:
 
 
 Many tasks remain before calling this version 1.0:
 
-0.0.2: STABILIZE EXISTING
-
-- ECMA48Backend running on socket
-
 0.0.3: FINISH PORTING
 
 - TTreeView
 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
 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
 
 
 0.1.0: BETA RELEASE