TerminalFX
Java FX Terminal Emulator
Install / Use
/learn @javaterminal/TerminalFXREADME
= JavaFX Terminal Emulator Rahman Usta :doctype: article :encoding: utf-8 :lang: en :toc: left :numbered: :terminalfx-version: 1.2.0
== JavaFX Terminal Emulator
TerminalFX is a terminal (PTY) emulator application written in JavaFX 18.
We use https://github.com/traff/pty4j[Pty4J] to get VT codes from running process and https://chromium.googlesource.com/apps/libapps/+/master/hterm/[hterm.js] from Chromium project to interact with Pty4J. TerminalFX is using powerful JavaFX WebView component to run hterm.js.
== Features
- Multi OS (Mac, Win, *Nix) Support
- Terminal Emulator (Xterm)
- Copy and Paste Support
- CygWin Support
- Configurable (Color, Size, Font)
- Multi Tab Support
== Usage
.Default Config [source,java]
TerminalBuilder terminalBuilder = new TerminalBuilder(); TerminalTab terminal = terminalBuilder.newTerminal();
TabPane tabPane = new TabPane(); tabPane.getTabs().add(terminal);
image::images\default.png[]
.Dark Config [source,java]
TerminalConfig darkConfig = new TerminalConfig(); darkConfig.setBackgroundColor(Color.rgb(16, 16, 16)); darkConfig.setForegroundColor(Color.rgb(240, 240, 240)); darkConfig.setCursorColor(Color.rgb(255, 0, 0, 0.5));
TerminalBuilder terminalBuilder = new TerminalBuilder(darkConfig); TerminalTab terminal = terminalBuilder.newTerminal();
TabPane tabPane = new TabPane(); tabPane.getTabs().add(terminal);
image::images\dark.png[]
== CygWin Support
[source,java]
TerminalConfig cygwinConfig = new TerminalConfig(); cygwinConfig.setWindowsTerminalStarter("C:\cygwin64\bin\bash -i"); <1>
TerminalBuilder terminalBuilder = new TerminalBuilder(cygwinConfig); TerminalTab terminal = terminalBuilder.newTerminal();
TabPane tabPane = new TabPane(); tabPane.getTabs().add(terminal);
<1> Set bash in cygwin path
image::images\cygwin.png[]
== Maven Dependency
[source,xml]
<!-- Add repository --> <repositories> <repository> <id>terminalfx-repo</id> <url>https://github.com/javaterminal/terminalfx/raw/master/releases</url> </repository> </repositories> <!-- Add dependency for Java 25--> <dependency> <groupId>com.kodedu.terminalfx</groupId> <artifactId>terminalfx</artifactId> <version>1.3.0</version> </dependency> <!-- Add dependency for Java 8--> <dependency> <groupId>com.kodedu.terminalfx</groupId> <artifactId>terminalfx</artifactId> <version>1.0.8</version> </dependency> ----== Compile & Run
[source,bash]
git clone https://github.com/rahmanusta/TerminalFX cd TerminalFX mvn clean install mvn javafx:run
== Run as Java Module (Java 17)
The following modules have to be added in JVM parameters
--add-modules=javafx.controls,javafx.graphics
== Run command
You can run commands:
[source,bash]
terminal.onTerminalFxReady(() -> { terminal.getTerminal().command("java -version\r"); });
== Licence
This project is licensed under the MIT license. See link:LICENSE[LICENSE] for more information.
Related Skills
node-connect
341.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
84.5kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
341.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
84.5kCommit, push, and open a PR
