- All Implemented Interfaces:
org.jline.terminal.spi.TerminalProvider
This provider requires the JLine native library to be loaded, which is handled by
JLineNativeLoader. The native library provides access to
low-level terminal operations that are not available through standard Java APIs.
The native library is automatically loaded when this provider is used. If the library cannot be loaded, the provider will not be available and JLine will fall back to other available providers.
The native library loading can be configured using system properties as documented in
JLineNativeLoader.
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionCreates a new JNI terminal provider instance and ensures the native library is loaded. -
Method Summary
Modifier and TypeMethodDescriptionorg.jline.terminal.spi.Ptycurrent(org.jline.terminal.spi.SystemStream systemStream) intbooleanisPosixSystemStream(org.jline.terminal.spi.SystemStream stream) booleanisSystemStream(org.jline.terminal.spi.SystemStream stream) booleanisWindowsSystemStream(org.jline.terminal.spi.SystemStream stream) name()org.jline.terminal.TerminalnewTerminal(String name, String type, InputStream in, OutputStream out, Charset encoding, Charset inputEncoding, Charset outputEncoding, org.jline.terminal.Terminal.SignalHandler signalHandler, boolean paused, org.jline.terminal.Attributes attributes, org.jline.terminal.Size size) Create a new terminal backed by a newly opened POSIX pseudo-terminal (PTY).org.jline.terminal.spi.Ptyopen(org.jline.terminal.Attributes attributes, org.jline.terminal.Size size) org.jline.terminal.TerminalposixSysTerminal(String name, String type, boolean ansiPassThrough, Charset encoding, boolean nativeSignals, org.jline.terminal.Terminal.SignalHandler signalHandler, boolean paused, org.jline.terminal.spi.SystemStream systemStream) org.jline.terminal.TerminalposixSysTerminal(String name, String type, boolean ansiPassThrough, Charset encoding, Charset stdinEncoding, Charset stdoutEncoding, Charset stderrEncoding, boolean nativeSignals, org.jline.terminal.Terminal.SignalHandler signalHandler, boolean paused, org.jline.terminal.spi.SystemStream systemStream) Create a POSIX system terminal backed by a native PTY.systemStreamName(org.jline.terminal.spi.SystemStream stream) intsystemStreamWidth(org.jline.terminal.spi.SystemStream stream) org.jline.terminal.TerminalsysTerminal(String name, String type, boolean ansiPassThrough, Charset encoding, Charset inputEncoding, Charset outputEncoding, boolean nativeSignals, org.jline.terminal.Terminal.SignalHandler signalHandler, boolean paused, org.jline.terminal.spi.SystemStream systemStream) toString()org.jline.terminal.TerminalwinSysTerminal(String name, String type, boolean ansiPassThrough, Charset encoding, boolean nativeSignals, org.jline.terminal.Terminal.SignalHandler signalHandler, boolean paused, org.jline.terminal.spi.SystemStream systemStream) org.jline.terminal.TerminalwinSysTerminal(String name, String type, boolean ansiPassThrough, Charset encoding, Charset stdinEncoding, Charset stdoutEncoding, Charset stderrEncoding, boolean nativeSignals, org.jline.terminal.Terminal.SignalHandler signalHandler, boolean paused, org.jline.terminal.spi.SystemStream systemStream) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.jline.terminal.spi.TerminalProvider
registerDefaultSignal, registerSignal, sysTerminal, unregisterSignal
-
Constructor Details
-
JniTerminalProvider
public JniTerminalProvider()Creates a new JNI terminal provider instance and ensures the native library is loaded.Loading the native library via
JLineNativeLoader.initialize()callsSystem.loadLibrary(), which is a restricted operation. On JDK 24-25 this produces a JVM warning when--enable-native-accessis not set. On future JDKs where native access is denied by default, the load will fail andTerminalBuilderwill fall back to other providers.
-
-
Method Details
-
name
- Specified by:
namein interfaceorg.jline.terminal.spi.TerminalProvider
-
getConsoleCodepage
public int getConsoleCodepage()- Specified by:
getConsoleCodepagein interfaceorg.jline.terminal.spi.TerminalProvider
-
current
public org.jline.terminal.spi.Pty current(org.jline.terminal.spi.SystemStream systemStream) throws IOException - Throws:
IOException
-
open
public org.jline.terminal.spi.Pty open(org.jline.terminal.Attributes attributes, org.jline.terminal.Size size) throws IOException - Throws:
IOException
-
sysTerminal
public org.jline.terminal.Terminal sysTerminal(String name, String type, boolean ansiPassThrough, Charset encoding, Charset inputEncoding, Charset outputEncoding, boolean nativeSignals, org.jline.terminal.Terminal.SignalHandler signalHandler, boolean paused, org.jline.terminal.spi.SystemStream systemStream) throws IOException - Specified by:
sysTerminalin interfaceorg.jline.terminal.spi.TerminalProvider- Throws:
IOException
-
winSysTerminal
public org.jline.terminal.Terminal winSysTerminal(String name, String type, boolean ansiPassThrough, Charset encoding, boolean nativeSignals, org.jline.terminal.Terminal.SignalHandler signalHandler, boolean paused, org.jline.terminal.spi.SystemStream systemStream) throws IOException - Throws:
IOException
-
winSysTerminal
public org.jline.terminal.Terminal winSysTerminal(String name, String type, boolean ansiPassThrough, Charset encoding, Charset stdinEncoding, Charset stdoutEncoding, Charset stderrEncoding, boolean nativeSignals, org.jline.terminal.Terminal.SignalHandler signalHandler, boolean paused, org.jline.terminal.spi.SystemStream systemStream) throws IOException - Throws:
IOException
-
posixSysTerminal
public org.jline.terminal.Terminal posixSysTerminal(String name, String type, boolean ansiPassThrough, Charset encoding, boolean nativeSignals, org.jline.terminal.Terminal.SignalHandler signalHandler, boolean paused, org.jline.terminal.spi.SystemStream systemStream) throws IOException - Throws:
IOException
-
posixSysTerminal
public org.jline.terminal.Terminal posixSysTerminal(String name, String type, boolean ansiPassThrough, Charset encoding, Charset stdinEncoding, Charset stdoutEncoding, Charset stderrEncoding, boolean nativeSignals, org.jline.terminal.Terminal.SignalHandler signalHandler, boolean paused, org.jline.terminal.spi.SystemStream systemStream) throws IOException Create a POSIX system terminal backed by a native PTY. The created terminal is configured with the provided character encodings and signal handling. The output encoding is chosen fromstdoutEncodingorstderrEncodingdepending onsystemStream.- Parameters:
name- human-readable terminal nametype- terminal type (TERM)ansiPassThrough- ignored ? ANSI pass-through is only supported on Windowsencoding- primary charset used by the terminalstdinEncoding- charset for standard inputstdoutEncoding- charset for standard outputstderrEncoding- charset for standard errornativeSignals- whether native signal handling is enabledsignalHandler- handler for terminal signalspaused- ignored ? paused mode is only supported on Windows and PTY-backed terminalssystemStream- which system stream the terminal represents (affects output encoding selection)- Returns:
- a POSIX system terminal
- Throws:
IOException- if the underlying PTY cannot be opened
-
newTerminal
public org.jline.terminal.Terminal newTerminal(String name, String type, InputStream in, OutputStream out, Charset encoding, Charset inputEncoding, Charset outputEncoding, org.jline.terminal.Terminal.SignalHandler signalHandler, boolean paused, org.jline.terminal.Attributes attributes, org.jline.terminal.Size size) throws IOException Create a new terminal backed by a newly opened POSIX pseudo-terminal (PTY).- Specified by:
newTerminalin interfaceorg.jline.terminal.spi.TerminalProvider- Parameters:
name- the terminal name for identificationtype- the terminal type (TERM)in- the input stream connected to the PTY slaveout- the output stream connected to the PTY slaveencoding- the primary charset for the terminalinputEncoding- the charset to decode inputoutputEncoding- the charset to encode outputsignalHandler- handler for terminal signalspaused- if true, the terminal is created in a paused stateattributes- initial terminal attributes for the PTYsize- initial terminal size for the PTY- Returns:
- a Terminal instance wrapping the opened PTY and provided streams
- Throws:
IOException- if the PTY cannot be opened
-
isSystemStream
public boolean isSystemStream(org.jline.terminal.spi.SystemStream stream) - Specified by:
isSystemStreamin interfaceorg.jline.terminal.spi.TerminalProvider
-
isWindowsSystemStream
public boolean isWindowsSystemStream(org.jline.terminal.spi.SystemStream stream) -
isPosixSystemStream
public boolean isPosixSystemStream(org.jline.terminal.spi.SystemStream stream) -
systemStreamName
- Specified by:
systemStreamNamein interfaceorg.jline.terminal.spi.TerminalProvider
-
systemStreamWidth
public int systemStreamWidth(org.jline.terminal.spi.SystemStream stream) - Specified by:
systemStreamWidthin interfaceorg.jline.terminal.spi.TerminalProvider
-
toString
-