Documentation ¶
Index ¶
- Constants
- Variables
- func GetEnvIdentifiers() map[string]string
- func GetTtyPath(pF *os.File) (string, error)
- func IsSixelCapable() (bool, error)
- func IsTermItermWez() bool
- func IsTermKitty() bool
- func IsTmuxScreen() bool
- func RequestTermAttributes() (sAttrs []int, E error)
- func TermRequestResponse(fileIN, fileOUT *os.File, sRq string) (sRsp []byte, E error)
- func TmuxOscOpenClose(opn, cls string) (string, string)
- type CustomWriFunc
- type Settings
- func (S Settings) ItermCopyFileInline(out io.Writer, in io.Reader, nLen int64) (E error)
- func (S Settings) ItermWriteImage(out io.Writer, iImg image.Image) error
- func (S Settings) KittyCopyPNGInline(out io.Writer, in io.Reader, nLen int64) (E error)
- func (S Settings) KittyWriteImage(out io.Writer, iImg image.Image) error
- func (S Settings) SixelWriteImage(out io.Writer, pI *image.Paletted) (E error)
- type WriteChunker
Constants ¶
const ( ITERM_IMG_HDR = "\x1b]1337;File=inline=1" ITERM_IMG_FTR = "\a" )
const ( KITTY_IMG_HDR = "\x1b_G" KITTY_IMG_FTR = "\x1b\\" )
const ( SIXEL_MIN byte = 0x3f SIXEL_MAX byte = 0x7e )
NOTE: valid sixel encodeds are in range 0x3F (?) TO 0x7E (~)
Variables ¶
var ( ESC_ERASE_DISPLAY = "\x1b[2J\x1b[0;0H" E_NON_TTY = errors.New("NON TTY") E_TIMED_OUT = errors.New("TERM RESPONSE TIMED OUT") )
Functions ¶
func GetEnvIdentifiers ¶
func IsSixelCapable ¶
func IsTermItermWez ¶
func IsTermItermWez() bool
NOTE: uses $TERM_PROGRAM, which isn't passed through
tmux or ssh
func IsTmuxScreen ¶
func IsTmuxScreen() bool
func RequestTermAttributes ¶
func TermRequestResponse ¶
Handles request/response terminal control sequences like <ESC>[0c
STDIN & STDOUT are parameterized for special cases. os.Stdin & os.Stdout are usually sufficient.
`sRq` should be the request control sequence to the terminal.
NOTE: only captures up to 1KB of response
NOTE: when println debugging the response, probably want to go-escape it, like:
fmt.Printf("%#v\n", sRsp)
since most responses begin with <ESC>, which the terminal treats as another control sequence rather than text to output.
func TmuxOscOpenClose ¶
transforms given open/close terminal escapes to pass through tmux to parent terminal
Types ¶
type CustomWriFunc ¶
Used by WriteChunker to optionally transform chunks before sending them on to the underlying io.Writer.
type Settings ¶
func (Settings) ItermCopyFileInline ¶
func (Settings) ItermWriteImage ¶
Encode image using the iTerm2/WezTerm terminal image protocol: https://iterm2.com/documentation-images.html
func (Settings) KittyCopyPNGInline ¶
Encode raw PNG data into Kitty terminal format
func (Settings) KittyWriteImage ¶
Encode image using the Kitty terminal graphics protocol: https://sw.kovidgoyal.net/kitty/graphics-protocol.html
func (Settings) SixelWriteImage ¶
Encodes a paletted image into DECSIXEL format. Forked & heavily modified from https://github.com/mattn/go-sixel/
This does not support transparency. Alpha values in the palette will be ignored.
SIXEL is a paletted format. To keep dependencies to a minimum, this only supports paletted images. To handle non-paletted images, please pre-dither from the caller.
For more information on DECSIXEL format:
https://www.vt100.net/docs/vt3xx-gp/chapter14.html https://saitoha.github.io/libsixel/
type WriteChunker ¶
type WriteChunker struct { CustomWriFunc // contains filtered or unexported fields }
Wraps an io.Writer interface to buffer/flush in chunks that are `chunkSize` bytes long. Optional `CustomWriFunc` in struct allows for additional []byte processing before sending each chunk to the underlying writer. Currently used for encoding to Kitty terminal's image format.
func NewWriteChunker ¶
func NewWriteChunker(iWri io.Writer, chunkSize int) WriteChunker
func (*WriteChunker) Flush ¶
func (pC *WriteChunker) Flush() (E error)