1.5 KiB
1.5 KiB
jlibghostty
Java FFM bindings for Ghostty's libghostty-vt.
This targets Java 22+ and uses java.lang.foreign, not JNI. The public API is intentionally small while Ghostty's C API is still marked unstable upstream.
Build
nix build
The default Nix package builds:
share/java/jlibghostty-0.1.0-SNAPSHOT.jarmaven/dev/jlibghostty/jlibghostty/0.1.0-SNAPSHOT/...
The jar contains the host platform libghostty-vt under dev/jlibghostty/native/<platform>/.
Gradle Consumer
After nix build, another Gradle project can consume the generated Maven repository:
repositories {
maven {
url = uri("/home/anon/Dev/jlibghostty/result/maven")
}
}
dependencies {
implementation("dev.jlibghostty:jlibghostty:0.1.0-SNAPSHOT")
}
tasks.withType<JavaExec>().configureEach {
jvmArgs("--enable-native-access=ALL-UNNAMED")
}
If the app runs on the module path, use:
--enable-native-access=dev.jlibghostty
External Native Library
The library normally loads the bundled native libghostty-vt. To override it:
java -Djlibghostty.library.path=/path/to/libghostty-vt.so ...
or set:
export JLIBGHOSTTY_LIBRARY=/path/to/libghostty-vt.so
Example
try (Terminal terminal = Ghostty.open(TerminalOptions.of(80, 24))) {
terminal.write("hello\r\n");
System.out.println(terminal.snapshot());
}
Development Shell
nix develop
The shell provides Java, Gradle, and JLIBGHOSTTY_LIBRARY pointing at the Nix-built libghostty-vt.