revert merge
[nikiroo-utils.git] / README.md
CommitLineData
7d4115a5
KL
1Jexer - Java Text User Interface library
2========================================
3
3cb99336 4This library implements a text-based windowing system loosely
a7f45950
KL
5reminiscent of Borland's [Turbo
6Vision](http://en.wikipedia.org/wiki/Turbo_Vision) system. It looks
7like this:
30bd4abd 8
01fccda0 9![Terminal, Image, Table](/screenshots/new_demo1.png?raw=true "Terminal, Image, Table")
1ac2ccb1 10
a7f45950
KL
11Jexer works on both Xterm-like terminals and Swing, and supports
12images in both Xterm and Swing. On Swing, images are true color:
55b4f29b 13
a7f45950 14![Swing Snake Image](/screenshots/snake_swing.png?raw=true "Swing Snake Image")
1ac2ccb1 15
a7f45950 16On Xterm, images are dithered to a common palette:
1ac2ccb1 17
a7f45950 18![Xterm Snake Image](/screenshots/snake_xterm.png?raw=true "Xterm Snake Image")
1c15371a 19
1ac2ccb1 20
7d4115a5
KL
21
22License
23-------
24
a7f45950 25Jexer is available to all under the MIT License. See the file LICENSE
e16dda65 26for the full license text.
7d4115a5
KL
27
28
a7f45950
KL
29
30Obtaining Jexer
31---------------
1596e11a
KL
32
33Jexer is available on Maven Central:
34
35```xml
36<dependency>
37 <groupId>com.gitlab.klamonte</groupId>
38 <artifactId>jexer</artifactId>
f46a119f 39 <version>0.3.2</version>
1596e11a
KL
40</dependency>
41```
42
a7f45950
KL
43Binary releases are available on SourceForge:
44https://sourceforge.net/projects/jexer/files/jexer/
1596e11a 45
a7f45950 46The Jexer source code is hosted at: https://gitlab.com/klamonte/jexer
30bd4abd 47
7d4115a5 48
4b257bd8 49
f1bccbf5
KL
501.0.0 Release
51-------------
1f897876
KL
52
53
54Jexer's original list of features for its 1.0.0 release are undergoing
f1bccbf5
KL
55final testing. Issues and merge requests are disabled until that
56release is out.
1f897876
KL
57
58
59
a7f45950
KL
60Documentation
61-------------
4b257bd8 62
a7f45950 63* [Java API Docs](https://jexer.sourceforge.io/apidocs/api/index.html)
4b257bd8 64
a7f45950 65* [Wiki](https://gitlab.com/klamonte/jexer/wikis/home)
4b257bd8 66
f46a119f
KL
67* [Jexer web page](https://jexer.sourceforge.io/)
68
0a141b55
KL
69* [Development Standards](https://gitlab.com/klamonte/jexer/wikis/dev-standards)
70
528874e2
KL
71
72
a7f45950
KL
73Programming Examples
74--------------------
528874e2
KL
75
76The examples/ folder currently contains:
77
78 * A [prototype tiling window
d4c334ef 79 manager](/examples/JexerTilingWindowManager.java) in less than 250
528874e2
KL
80 lines of code.
81
9ad2ce4f
KL
82 * A much slicker [prototype tiling window
83 manager](/examples/JexerTilingWindowManager2.java) in less than 200
84 lines of code.
85
5434cb2b
KL
86 * A [prototype image thumbnail
87 viewer](/examples/JexerImageViewer.java) in less than 350 lines of
88 code.
89
528874e2
KL
90jexer.demos contains official demos showing all of the existing UI
91controls. The demos can be run as follows:
4b257bd8
KL
92
93 * 'java -jar jexer.jar' . This will use System.in/out with
a7f45950 94 Xterm-like sequences on non-Windows non-Mac platforms. On Windows
92453213 95 and Mac it will use a Swing JFrame.
4b257bd8
KL
96
97 * 'java -Djexer.Swing=true -jar jexer.jar' . This will always use
98 Swing on any platform.
99
100 * 'java -cp jexer.jar jexer.demos.Demo2 PORT' (where PORT is a
a7f45950
KL
101 number to run the TCP daemon on). This will use the Xterm backend
102 on a telnet server that will update with screen size changes.
4b257bd8 103
92453213 104 * 'java -cp jexer.jar jexer.demos.Demo3' . This will use
a7f45950 105 System.in/out with Xterm-like sequences. One can see in the code
92453213
KL
106 how to pass a different InputReader and OutputReader to
107 TApplication, permitting a different encoding than UTF-8.
108
109 * 'java -cp jexer.jar jexer.demos.Demo4' . This demonstrates hidden
110 windows and a custom TDesktop.
111
88a99379
KL
112 * 'java -cp jexer.jar jexer.demos.Demo5' . This demonstrates two
113 demo applications using different fonts in the same Swing frame.
114
15c86fc2 115 * 'java -cp jexer.jar jexer.demos.Demo6' . This demonstrates two
a7f45950 116 applications performing I/O across three screens: an Xterm screen
15c86fc2 117 and Swing screen, monitored from a third Swing screen.
88a99379 118
ba71ae78
KL
119 * 'java -cp jexer.jar jexer.demos.Demo7' . This demonstrates the
120 BoxLayoutManager, achieving a similar result as the
121 javax.swing.BoxLayout apidocs example.
122
4b257bd8
KL
123
124
125More Screenshots
126----------------
127
f46a119f
KL
128Jexer can be run inside its own terminal window, with support for all
129of its features including images and mouse, and more terminals:
130
465d742a 131![Yo Dawg...](/screenshots/jexer_sixel_in_sixel.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.")
4b257bd8 132
f46a119f
KL
133Sixel output uses a single palette which works OK for a variety of
134real-world images:
135
3cb99336
KL
136![Sixel Pictures Of Cliffs Of Moher And Buoy](/screenshots/sixel_images.png?raw=true "Sixel Pictures Of Cliffs Of Moher And Buoy")
137
f46a119f
KL
138The color wheel with that palette is shown below:
139
3cb99336
KL
140![Sixel Color Wheel](/screenshots/sixel_color_wheel.png?raw=true "Sixel Color Wheel")
141
4b257bd8 142
a7f45950 143
9c238a4b
KL
144Terminal Support
145----------------
146
a7f45950 147The table below lists terminals tested against Jexer's Xterm backend:
9c238a4b
KL
148
149| Terminal | Environment | Mouse Click | Mouse Cursor | Images |
150| -------------- | ------------------ | ----------- | ------------ | ------ |
151| xterm | X11 | yes | yes | yes |
f46a119f 152| jexer | CLI, X11, Windows | yes | yes | yes |
de9f648e 153| mlterm | X11 | yes | yes | yes |
29dcb861 154| RLogin | Windows | yes | yes | yes |
9c238a4b
KL
155| alacritty(3) | X11 | yes | yes | no |
156| gnome-terminal | X11 | yes | yes | no |
83ca289f
KL
157| iTerm2 | Mac | yes | yes | no(5) |
158| kitty(3) | X11 | yes | yes | no |
f46a119f 159| lcxterm(3) | CLI, Linux console | yes | yes | no |
83ca289f 160| mintty | Windows | yes | yes | no(5) |
f46a119f 161| rxvt-unicode | X11 | yes | yes | no(2) |
9c238a4b
KL
162| xfce4-terminal | X11 | yes | yes | no |
163| aminal(3) | X11 | yes | no | no |
164| konsole | X11 | yes | no | no |
165| yakuake | X11 | yes | no | no |
cae2b42e 166| Windows Terminal(6) | Windows | no | no | no(2) |
0bb31542
KL
167| screen | CLI | yes(1) | yes(1) | no(2) |
168| tmux | CLI | yes(1) | yes(1) | no |
9c238a4b
KL
169| putty | X11, Windows | yes | no | no(2) |
170| Linux | Linux console | no | no | no(2) |
171| qodem(3) | CLI, Linux console | yes | yes(4) | no |
4d184008 172| qodem-x11(3) | X11 | yes | no | no |
d033d507 173| yaft | Linux console (FB) | no | no | yes |
9c238a4b 174
0bb31542 1751 - Requires mouse support from host terminal.
9c238a4b
KL
176
1772 - Also fails to filter out sixel data, leaving garbage on screen.
178
1793 - Latest in repository.
180
1814 - Requires TERM=xterm-1003 before starting.
182
83ca289f 1835 - Sixel images can crash terminal.
3676d542 184
21460f44 1856 - Version 0.7.3291.0, on Windows 10.0.18362.30. Tested against
cae2b42e
KL
186 WSL-1 Debian instance.
187
9c238a4b 188
4b257bd8 189
a7f45950
KL
190See Also
191--------
b5f2a6db 192
a7f45950
KL
193* [Tranquil Java IDE](https://tjide.sourceforge.io) is a TUI-based
194 integrated development environment for the Java language that was
195 built using a very lightly modified GPL version of Jexer. TJ
196 provided a real-world use case to shake out numerous bugs and
197 limitations of Jexer.
b5f2a6db 198
a7f45950
KL
199* [LCXterm](https://lcxterm.sourceforge.io) is a curses-based terminal
200 emulator that allows one to use Jexer with full support on the raw
201 Linux console.
55b4f29b 202
a7f45950
KL
203* [ptypipe](https://gitlab.com/klamonte/ptypipe) is a small C utility
204 that permits a Jexer TTerminalWindow to resize the running shell
205 when its window is resized.
b5f2a6db
KL
206
207
7d4115a5 208
a7f45950
KL
209Acknowledgements
210----------------
3cb99336 211
a7f45950
KL
212Jexer makes use of the Terminus TrueType font [made available
213here](http://files.ax86.net/terminus-ttf/) .