Interface Terminal

All Superinterfaces:
AutoCloseable, Closeable, Flushable
All Known Subinterfaces:
TerminalExt
All Known Implementing Classes:
AbstractPosixTerminal, AbstractTerminal, AbstractWindowsTerminal, DumbTerminal, ExternalTerminal, JansiWinSysTerminal, JnaWinSysTerminal, LineDisciplineTerminal, NativeWinSysTerminalPREVIEW, NativeWinSysTerminal, PosixPtyTerminal, PosixSysTerminal

public interface Terminal extends Closeable, Flushable
A terminal representing a virtual terminal on the computer. Terminals should be closed by calling the Closeable.close() method in order to restore their original state.
  • Field Details

  • Method Details

    • getName

      String getName()
    • handle

      Registers a handler for the given Terminal.Signal.

      Note that the JVM does not easily allow catching the Terminal.Signal.QUIT signal, which causes a thread dump to be displayed. This signal is mainly used when connecting through an SSH socket to a virtual terminal.

      Parameters:
      signal - the signal to register a handler for
      handler - the handler
      Returns:
      the previous signal handler
    • raise

      void raise(Terminal.Signal signal)
    • reader

      Retrieve the Reader for this terminal. This is the standard way to read input from this terminal. The reader is non blocking.
      Returns:
      The non blocking reader
    • writer

      PrintWriter writer()
      Retrieve the Writer for this terminal. This is the standard way to write to this terminal.
      Returns:
      The writer
    • encoding

      Charset encoding()
      Returns the Charset that should be used to encode characters for input() and output().
      Returns:
      The terminal encoding
    • input

      InputStream input()
      Retrieve the input stream for this terminal. In some rare cases, there may be a need to access the terminal input stream directly. In the usual cases, use the reader() instead.
      Returns:
      The input stream
      See Also:
    • output

      OutputStream output()
      Retrieve the output stream for this terminal. In some rare cases, there may be a need to access the terminal output stream directly. In the usual cases, use the writer() instead.
      Returns:
      The output stream
      See Also:
    • canPauseResume

      boolean canPauseResume()
      Whether this terminal supports pause() and resume() calls.
      Returns:
      whether this terminal supports pause() and resume() calls.
      See Also:
    • pause

      void pause()
      Stop reading the input stream.
      See Also:
    • pause

      void pause(boolean wait) throws InterruptedException
      Stop reading the input stream and optionally wait for the underlying threads to finish.
      Parameters:
      wait - true to wait until the terminal is actually paused
      Throws:
      InterruptedException - if the call has been interrupted
    • resume

      void resume()
      Resume reading the input stream.
      See Also:
    • paused

      boolean paused()
      Check whether the terminal is currently reading the input stream or not. In order to process signal as quickly as possible, the terminal need to read the input stream and buffer it internally so that it can detect specific characters in the input stream (Ctrl+C, Ctrl+D, etc...) and raise the appropriate signals. However, there are some cases where this processing should be disabled, for example when handing the terminal control to a subprocess.
      Returns:
      whether the terminal is currently reading the input stream or not
      See Also:
    • enterRawMode

      Attributes enterRawMode()
    • echo

      boolean echo()
    • echo

      boolean echo(boolean echo)
    • getAttributes

      Attributes getAttributes()
      Returns the terminal attributes. The returned object can be safely modified further used in a call to setAttributes(Attributes).
      Returns:
      the terminal attributes.
    • setAttributes

      void setAttributes(Attributes attr)
      Set the terminal attributes. The terminal will perform a copy of the given attributes.
      Parameters:
      attr - the new attributes
    • getSize

      Size getSize()
      Retrieve the size of the visible window
      Returns:
      the visible terminal size
      See Also:
    • setSize

      void setSize(Size size)
    • getWidth

      default int getWidth()
    • getHeight

      default int getHeight()
    • getBufferSize

      default Size getBufferSize()
      Retrieve the size of the window buffer. Some terminals can be configured to have a buffer size larger than the visible window size and provide scroll bars. In such cases, this method should attempt to return the size of the whole buffer. The getBufferSize() method can be used to avoid wrapping when using the terminal in a line editing mode, while the getSize() method should be used when using full screen mode.
      Returns:
      the terminal buffer size
      See Also:
    • flush

      void flush()
      Specified by:
      flush in interface Flushable
    • getType

      String getType()
    • puts

      boolean puts(InfoCmp.Capability capability, Object... params)
    • getBooleanCapability

      boolean getBooleanCapability(InfoCmp.Capability capability)
    • getNumericCapability

      Integer getNumericCapability(InfoCmp.Capability capability)
    • getStringCapability

      String getStringCapability(InfoCmp.Capability capability)
    • getCursorPosition

      Cursor getCursorPosition(IntConsumer discarded)
      Query the terminal to report the cursor position. As the response is read from the input stream, some characters may be read before the cursor position is actually read. Those characters can be given back using org.jline.keymap.BindingReader#runMacro(String)
      Parameters:
      discarded - a consumer receiving discarded characters
      Returns:
      null if cursor position reporting is not supported or a valid cursor position
    • hasMouseSupport

      boolean hasMouseSupport()
      Returns true if the terminal has support for mouse.
      Returns:
      whether mouse is supported by the terminal
      See Also:
    • trackMouse

      boolean trackMouse(Terminal.MouseTracking tracking)
      Change the mouse tracking mouse. To start mouse tracking, this method must be called with a valid mouse tracking mode. Mouse events will be reported by writing the InfoCmp.Capability.key_mouse to the input stream. When this character sequence is detected, the readMouseEvent() method can be called to actually read the corresponding mouse event.
      Parameters:
      tracking - the mouse tracking mode
      Returns:
      true if mouse tracking is supported
    • readMouseEvent

      MouseEvent readMouseEvent()
      Read a MouseEvent from the terminal input stream. Such an event must have been detected by scanning the terminal's InfoCmp.Capability.key_mouse in the stream immediately before reading the event.
      Returns:
      the decoded mouse event.
      See Also:
    • readMouseEvent

      MouseEvent readMouseEvent(IntSupplier reader)
      Read a MouseEvent from the given input stream.
      Parameters:
      reader - the input supplier
      Returns:
      the decoded mouse event
    • hasFocusSupport

      boolean hasFocusSupport()
      Returns true if the terminal has support for focus tracking.
      Returns:
      whether focus tracking is supported by the terminal
      See Also:
    • trackFocus

      boolean trackFocus(boolean tracking)
      Enable or disable focus tracking mode. When focus tracking has been activated, each time the terminal grabs the focus, the string "\33[I" will be sent to the input stream and each time the focus is lost, the string "\33[O" will be sent to the input stream.
      Parameters:
      tracking - whether the focus tracking mode should be enabled or not
      Returns:
      true if focus tracking is supported
    • getPalette

      ColorPalette getPalette()
      Color support