This library implements a text-based windowing system loosely reminiscent of Borland's Turbo Vision system for Xterm-like terminals.
Casciian can be run inside its own terminal window, with support for all of its features including mouse, and of course more terminals.
Casciian has seen inspiration from several other projects:
-
Translucent windows were inspired by notcurses. Translucent windows and layered images generally look as one would expect in a modern graphical environment...but it's mostly text.
-
Pulsing button text, window effects, and desktop effects were inspired by vtm's incredibly slick game-like aesthetic.
If you want to start your own Casciian-based application, there is a project template ready to use as a repository seed.
This project is distributed under the Apache License, Version 2.0.
Casciian is derived from a codebase originally written by Autumn Lamonte and dedicated to the public domain via CC0. https://codeberg.org/AutumnMeowMeow/casciian
The original public-domain dedication remains in effect for the historical code. Subsequent modifications, maintenance, and releases of this distribution are provided under the Apache License, Version 2.0.
Nothing in this license restricts the original public-domain status of the upstream code.
Copyright © 2013–2025 Autumn Lamonte
Copyright © 2025 Carlos Rafael Ramirez
Maintained by Carlos Rafael Ramirez.
src/demo contains official demos showing all of the stock UI controls. The demos can be run as follows:
Note for Windows users: When running on Windows, you may need to add the
--enable-native-access=ALL-UNNAMED flag to enable native terminal support.
For example: java --enable-native-access=ALL-UNNAMED -jar casciian-demo.jar
-
java -jar casciian-demo.jar. This will use System.in/out with Xterm-like sequences. -
java -cp casciian-demo.jar demo.Demo2 PORT(where PORT is a number to run the TCP daemon on). This will use the Xterm backend on a telnet server that will update with screen size changes. -
java -cp casciian-demo.jar demo.Demo3. This will use System.in/out with Xterm-like sequences. One can see in the code how to pass a different InputReader and OutputReader to TApplication, permitting a different encoding than UTF-8; in this case, code page 437. -
java -cp casciian-demo.jar demo.Demo4. This demonstrates hidden windows and a custom TDesktop. -
java -cp casciian-demo.jar demo.Demo7. This demonstrates the BoxLayoutManager, achieving a similar result as the javax.swing.BoxLayout apidocs example. -
java -cp casciian-demo.jar demo.Demo8 PORT(where PORT is a number to run the TCP daemon on). This will use the Xterm backend on a telnet server to share one screen to many terminals.
The GitHub Wiki lives in a separate repository (crramirez/casciian.wiki).
Changes made in this source repository do not modify the wiki. To propose
wiki updates, clone the wiki repository directly:
git clone https://github.com/crramirez/casciian.wiki.git
Submit your changes there (or share patches with the maintainer) to update the published wiki pages.