Documentation
¶
Overview ¶
Package terminal is a vt10x terminal emulation backend, influenced largely by st, rxvt, xterm, and iTerm as reference. Use it for terminal muxing, a terminal emulation frontend, or wherever else you need terminal emulation.
In development, but very usable.
Index ¶
- Constants
- Variables
- func ResizePty(pty *os.File, cols, rows int) error
- type BufferSource
- type ChangeFlag
- type Color
- type Cursor
- type Glyph
- type ModeFlag
- type State
- func (t *State) Cell(x, y int) Glyph
- func (t *State) Changed(change ChangeFlag) bool
- func (t *State) Cursor() Cursor
- func (t *State) CursorVisible() bool
- func (t *State) History(offset int) []*style.Text
- func (t *State) HistoryBufferLength() int
- func (t *State) Lock()
- func (t *State) Mode() ModeFlag
- func (t *State) Size() (cols, rows int)
- func (t *State) String() string
- func (t *State) Text(bufferSource BufferSource, rowNum int) *style.Text
- func (t *State) TextRows() []*style.Text
- func (t *State) Title() string
- func (t *State) Unlock()
- type Terminal
- type TerminalInfo
- type TerminalOption
- type View
Constants ¶
const DefaultHistoryBufferSize int = 10000
const MaxLen = 1000
Variables ¶
var ( RGBPattern = regexp.MustCompile(`^([\da-f]{1})\/([\da-f]{1})\/([\da-f]{1})$|^([\da-f]{2})\/([\da-f]{2})\/([\da-f]{2})$|^([\da-f]{3})\/([\da-f]{3})\/([\da-f]{3})$|^([\da-f]{4})\/([\da-f]{4})\/([\da-f]{4})$`) HashPattern = regexp.MustCompile(`[\da-f]`) )
Functions ¶
Types ¶
type BufferSource ¶ added in v0.0.6
type BufferSource int
const ( BufferSourceHistory BufferSource = iota BufferSourceTerminal )
type ChangeFlag ¶
type ChangeFlag uint32
ChangeFlag represents possible state changes of the terminal.
const ( ChangedScreen ChangeFlag = 1 << iota ChangedTitle )
Terminal changes to occur in VT.ReadState
type Color ¶
type Color uint32
Color maps to the ANSI colors [0, 16) and the xterm colors [16, 256).
type ModeFlag ¶
type ModeFlag uint32
ModeFlag represents various terminal mode states.
const ( ModeWrap ModeFlag = 1 << iota ModeInsert ModeAppKeypad ModeAltScreen ModeCRLF ModeMouseButton ModeMouseMotion ModeReverse ModeKeyboardLock ModeHide ModeEcho ModeAppCursor ModeMouseSgr Mode8bit ModeBlink ModeFBlink ModeFocus ModeMouseX10 ModeMouseMany ModeMouseMask = ModeMouseButton | ModeMouseMotion | ModeMouseX10 | ModeMouseMany )
Terminal modes
type State ¶
State represents the terminal emulation state. Use Lock/Unlock methods to synchronize data access with VT.
func (*State) Cell ¶
Cell returns the glyph containing the character code, foreground color, and background color at position (x, y) relative to the top left of the terminal. When y is a negative number, it will be pulled from the history buffer a -y rows from the current row.
func (*State) Changed ¶
func (t *State) Changed(change ChangeFlag) bool
Changed returns true if change has occured.
func (*State) CursorVisible ¶
CursorVisible returns the visible state of the cursor.
func (*State) History ¶ added in v0.0.4
History returns the history buffer starting from a negative offset point from the present moment. An offset of zero represents the current moment in time, which will represent the last row in the returned array. The returned array will contain one vertical terminal worth of rows.
func (*State) HistoryBufferLength ¶ added in v0.0.4
HistoryBufferLength returns the length of the history buffer, including the active termninal height
func (*State) Text ¶ added in v0.0.10
func (t *State) Text(bufferSource BufferSource, rowNum int) *style.Text
type Terminal ¶
type Terminal interface {
// View displays the virtual terminal.
View
// Write parses input and writes terminal changes to state.
io.Writer
// Parse blocks on read on pty or io.Reader, then parses sequences until
// buffer empties. State is locked as soon as first rune is read, and unlocked
// when buffer is empty.
Parse(bf *bufio.Reader) error
}
Terminal represents the virtual terminal emulator.
type TerminalInfo ¶
type TerminalInfo struct {
// contains filtered or unexported fields
}
type TerminalOption ¶
type TerminalOption func(*TerminalInfo)
func WithHistoryBuffer ¶ added in v0.0.4
func WithHistoryBuffer(historyLength int) TerminalOption
func WithSize ¶
func WithSize(cols, rows int) TerminalOption
func WithWriter ¶
func WithWriter(w io.Writer) TerminalOption
type View ¶
type View interface {
// String dumps the virtual terminal contents.
fmt.Stringer
// Size returns the size of the virtual terminal.
Size() (cols, rows int)
// Resize changes the size of the virtual terminal.
Resize(cols, rows int)
// Mode returns the current terminal mode.//
Mode() ModeFlag
// Title represents the title of the console window.
Title() string
// Cell returns the glyph containing the character code, foreground color, and
// background color at position (x, y) relative to the top left of the terminal.
Cell(x, y int) Glyph
// TextRows returns the contents as a list of *style.Text items
TextRows() []*style.Text
// History returns a viewport sized array of lines representing the scrollback history, starting from offset.
// An offset of zero represents the current moment in time
History(offset int) []*style.Text
// HistoryBufferLength returns the length of the history buffer, including the active termninal height
HistoryBufferLength() int
// Cursor returns the current position of the cursor.
Cursor() Cursor
// CursorVisible returns the visible state of the cursor.
CursorVisible() bool
// Lock locks the state object's mutex.
Lock()
// Unlock resets change flags and unlocks the state object's mutex.
Unlock()
}
View represents the view of the virtual terminal emulator.