Skip to content

techsenger/jeditermfx

Repository files navigation

Techsenger JediTermFX

Overview

Techsenger JediTermFX is a Terminal Emulator for JavaFX. The project is a result of porting JediTerm (commit 8366f2b) from Swing to JavaFX. JediTermFX exclusively utilizes JavaFX components. Therefore, the Terminal Emulator based on this library can be seamlessly integrated into any JavaFX application. A detailed comparison of terminal libraries is provided below.

Demo

JediTermFX demo

Features

  • Local terminal for Unix, Mac and Windows using Pty4J
  • Xterm emulation - passes most of tests from vttest
  • Xterm 256 colours
  • Scrolling
  • Copy/Paste
  • Mouse support
  • Terminal resizing from client or server side
  • Terminal tabs

Terminal Comparison

Terminal JediTermFX JediTerm TerminalFX
GUI Library JavaFX Swing JavaFX
Main Component Canvas JComponent WebView
Languages Java Java, Kotlin Java, JS
JPMS Support Yes No Yes

Usage

It is recommended to start working with JediTermFX by studying and running the BasicTerminalShellExample class. This class contains the minimal code needed to launch a terminal in a JavaFX application.

Dependencies

This project is available on Maven Central:

<!-- main modules -->
<dependency>
    <groupId>com.techsenger.jeditermfx</groupId>
    <artifactId>jeditermfx-core</artifactId>
    <version>${jeditermfx.version}</version>
</dependency>
<dependency>
    <groupId>com.techsenger.jeditermfx</groupId>
    <artifactId>jeditermfx-ui</artifactId>
    <version>${jeditermfx.version}</version>
</dependency>
<!-- example and debug application -->
<dependency>
    <groupId>com.techsenger.jeditermfx</groupId>
    <artifactId>jeditermfx-app</artifactId>
    <version>${jeditermfx.version}</version>
</dependency>

Hyperlinks

JediTermFX provides a wide range of features when working with links. The HighlightMode enumeration specifies multiple modes of working with links and their colors. In the ALWAYS modes, links are always underlined and always clickable. In the NEVER modes, links are never underlined and never clickable. In the HOVER modes, links become underlined and clickable only when hovered over. Now let's clarify the difference between the two types of colors. CUSTOM colors are those set by the JediTermFX user in the getHyperlinkColor() method of the settings. ORIGINAL colors are those offered by the program running in the terminal. Thus, links can use either custom colors or the original text colors.

Code Building

To build the library use standard Git and Maven commands:

git clone https://github.com/techsenger/jeditermfx
cd jeditermfx
mvn clean install

Running the Application

The project contains a demo application that shows how to use this library. There are two ways to run the application.

Using Maven

To run application using maven plugin execute the following commands in the root of the project:

cd jeditermfx-app
mvn javafx:run

Please note, that debugger settings are in jeditermfx-app/pom.xml file.

Using Distro

After building the project, you will find a distribution archive named jeditermfx-app-<version>.tar in the jeditermfx-app/target directory. Extracting this file will allow you to launch the application using .sh or .bat scripts depending on your operating system.

License

JediTermFX is dual-licensed under both the LGPLv3 (found in the LICENSE-LGPL-3.txt file in the root directory) and Apache 2.0 License (found in the LICENSE-APACHE-2.0.txt file in the root directory). You may select, at your option, one of the above-listed licenses.

Feedback

Any feedback is welcome. Besides, it would be interesting to know for what cases this project is used. It will help to understand the way the project should go and provide more information in documentation.