# TerminalFX
**Repository Path**: lilongyang/TerminalFX
## Basic Information
- **Project Name**: TerminalFX
- **Description**: 一个简单的命令行工具
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 9
- **Forks**: 0
- **Created**: 2021-02-28
- **Last Updated**: 2025-08-27
## Categories & Tags
**Categories**: nms
**Tags**: None
## README
= JavaFX Terminal Emulator
Rahman Usta
:doctype: article
:encoding: utf-8
:lang: en
:toc: left
:numbered:
:terminalfx-version: 1.1.0
== JavaFX Terminal Emulator
TerminalFX is a terminal (PTY) emulator application written in JavaFX 12.
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]
----
terminalfx-repo
https://github.com/javaterminal/terminalfx/raw/master/releases
com.kodedu.terminalfx
terminalfx
1.1.0
com.kodedu.terminalfx
terminalfx
1.0.8
----
== Compile & Run
[source,bash]
----
git clone https://github.com/rahmanusta/TerminalFX
cd TerminalFX
mvn clean install
mvn javafx:run
----
== Run as Java Module (Java 12)
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.