# jprototerm JavaFX canvas terminal prototype using `jlibghostty` for terminal emulation, Nix for the build environment, and GluonFX/GraalVM Native Image for the Linux binary. ## Build ```sh nix build ``` The package build uses GluonFX through Gradle so JavaFX native-image metadata is generated by the toolchain that is designed for it. In a strict pure Nix sandbox, Gradle dependencies must be vendored first with `gradle2nix` or a checked-in Maven/Gradle cache. For development: ```sh nix develop gradle -PjlibghosttyMavenRepo="$JLIBGHOSTTY_MAVEN_REPO" run gradle -PjlibghosttyMavenRepo="$JLIBGHOSTTY_MAVEN_REPO" -Pgluonfx.mainClassName=com.gregor.jprototerm.Main nativeExecutable ``` The Gradle project is the source of truth for native JavaFX builds. ## Config Configuration is read from: ```text $XDG_CONFIG_HOME/jprototerm/config.toml ``` If `XDG_CONFIG_HOME` is unset, the fallback is: ```text $HOME/.config/jprototerm/config.toml ``` Example, also available in `config.example.toml`: ```toml [terminal] columns = 100 rows = 30 shell = "/bin/bash" font_family = "JetBrainsMono Nerd Font" font_size = 15 [window] width = 1200 height = 760 [kitty_graphics] enabled = true [keybindings] navigate_left = "ALT+H" navigate_down = "ALT+J" navigate_up = "ALT+K" navigate_right = "ALT+L" toggle_floating = "ALT+F" new_floating = "ALT+SHIFT+F" next_floating = "ALT+F12" close_pane = "ALT+X" ``` ## Defaults - `Alt+h/j/k/l`: navigate panes - `Alt+f`: show or hide all floating panes - `Alt+Shift+f`: create a new floating pane - `Alt+F12`: cycle floating panes - `Alt+x`: close the active floating pane - Font default: `JetBrainsMono Nerd Font` - Kitty graphics protocol parsing is enabled by default