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 ¶
- Variables
- func ResizePty(pty *os.File, cols, rows int) error
- 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) Lock()
- func (t *State) Mode() ModeFlag
- func (t *State) Size() (cols, rows int)
- func (t *State) String() string
- func (t *State) Title() string
- func (t *State) Unlock()
- type Terminal
- type TerminalInfo
- type TerminalOption
- type View
Constants ¶
This section is empty.
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 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).
const ( Black Color = iota Red Green Yellow Blue Magenta Cyan LightGrey DarkGrey LightRed LightGreen LightYellow LightBlue LightMagenta LightCyan White )
ANSI color values
Default colors are potentially distinct to allow for special behavior. For example, a transparent background. Otherwise, the simple case is to map default colors to another color.
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.
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.
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 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
// 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.