Introduction
Welcome! Jexer is an open-source 100% Java Text User Interface
(TUI) originally designed to outwardly resemble the
DOS-era Turbo
Vision library used by various Borland products. It is not an
application itself, but rather an advanced text windowing system
framework to help new applications take full advantage of the
terminal. See
the applications
wishlist for some of the things Jexer can enable.
Jexer is hosted
on GitLab.com
and SourceForge.net.
Main Features
Jexer can sometimes resemble Turbo Vision on the outside, but its
inside design is entirely new. Its main features are:
-
Support for Xterm-like emulators including xterm, wezterm,
foot, rxvt, xfce4-terminal, gnome-terminal, konsole, and more.
With full mouse support including moving mouse cursor, and
pixel-based mouse reporting. See the Wiki for
how terminals
tested against Jexer fare.
-
Support for images in cells, with rendering to xterm via sixel
or iTerm2 graphics. Images can be rotated and scaled.
Jexer is (to my knowledge) the first text-based windowing
system / terminal multiplexer capable of properly handling
overlapping images mixed with text.
-
Multihead display support, including images, to terminals with
different resolutions and text cell aspect ratios.
-
Support for CJK (fullwidth) and emoji characters, with
user-providable fonts for CJK, emoji, and fallback.
-
A Swing-based interface that reproduces the text-mode DOS VGA
(including palette colors, e.g. brown is dark yellow) with the
Terminus font.
-
Common UI controls: check boxes, radio buttons, text fields, a
color theme editor, treeview, file open/save dialog, message
boxes, and many more.
-
A full-featured Xterm terminal widget/window with
a "vttest score" of 103 and support
for: X10 mouse, 24-bit RGB colors, double-width /
double-height, CJK / emoji, and sixel images. Jexer can be
even be run inside itself. (Note
that ptypipe
is needed for terminal shells to be aware of window size
changes.)
-
A text editor widget/window with simple keyword highlighting.
-
A data grid editor widget/window with row/column borders, save
to text, and CSV import/export.
-
System clipboard integration for cut/copy/paste.
-
100% Java. Jexer does not rely on any native
libraries.
Maven
Jexer is available on Maven Central. See below:
<dependency>
<groupId>com.gitlab.klamonte</groupId>
<artifactId>jexer</artifactId>
<version>1.6.0</version>
</dependency>
Jexer Project
SourceForge Jexer
Project Page
GitLab Jexer Project
Page
Latest README
Other Projects
Jexer users may find these projects useful:
-
XtermDOOM.
An effort to
make MochaDoom
run smoothly under Xterm. The game is not yet playable, but
it can show off Jexer's multiplexing and multihead image
capabilities. (For ramblings about the game, terminal
resources,
etc. see /r/xtermdoom.)
-
Xterm Window
Manager. A Jexer-based desktop environment / window
manager for the console. Tiled and windowed terminal shells,
virtual desktops, detachable and share-able sessions, and a
plugin system for adding custom widgets, windows,
screensavers, and other functions.
-
LCXterm.
LCXterm is a ncurses-based terminal emulator that brings
additional conveniences to the raw Linux console and other
terminal emulators. It can convert Linux console GPM to X10
mouse events, permitting use of Jexer from the raw Linux
console.
-
Tranquil Java IDE.
A Jexer-based integrated development environment for
Java.
-
notcurses.
Another TUI system, the most advanced in this space.
Notcurses has unsurpassed support for images in a terminal and
many other unique features.
The History Behind Jexer
The Evolution Of A Terminal Programmer -- a.k.a. how you too can do this if you want.
Terminal
Snippets. How to do some things with ncurses.
Like Jexer, But Hate Java?
Check out
the Porting
Jexer page for:
- Location of key features to see how Jexer does it.
- A potential roadmap for porting Jexer to another language.
- Specific tricks if a language cannot call POSIX C functions
such as termios and forkpty.
- An outline of Jexer's sixel (and other image formats) output
strategy.
Sixel Tests
Terminal authors wishing to test their sixel support without the
hassle of getting a Linux-based Java environment running can refer
to session captures on this
Sixel Tests page.
Addendum - I Am Transgender
In summer 2020 I accepted myself as a trans woman, and am now
transitioning. Since we trans do not "out" each other, to find
another trans person one must out themself first and then see who
responds. We are kind of like the "Arch Linux users" of the
LGBTQ+ community.
If you are curious what it might feel like to realize you are
trans, then check out this sequence from
Real
Life Comics by Mae Dean. It's both lovely and hilarious.