Documentation
¶
Index ¶
- Constants
- Variables
- func GetEnvIdentifiers() map[string]string
- func IsItermCapable() bool
- func IsKittyCapable() bool
- func IsSixelCapable() (bool, error)
- func IsTmuxScreen() bool
- func ItermCopyFileInline(out io.Writer, in io.Reader, nLen int64) (E error)
- func ItermWriteImage(out io.Writer, iImg image.Image) error
- func KittyCopyPNGInline(out io.Writer, in io.Reader, opts KittyImgOpts) error
- func KittyWriteImage(out io.Writer, iImg image.Image, opts KittyImgOpts) error
- func KittyWritePNGLocal(out io.Writer, pngFileName string, opts KittyImgOpts) error
- func RequestTermAttributes() (sAttrs []int, E error)
- func SixelWriteImage(out io.Writer, pI *image.Paletted) (E error)
- func TermRequestResponse(fileIN, fileOUT *os.File, sRq string) (sRsp []byte, E error)
- type KittyImgOpts
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 (~)
const (
ESC_ERASE_DISPLAY = "\x1b[2J\x1b[0;0H"
)
Variables ¶
var ( E_NON_TTY = errors.New("NON TTY") E_TIMED_OUT = errors.New("TERM RESPONSE TIMED OUT") )
Functions ¶
func GetEnvIdentifiers ¶ added in v1.1.0
func IsItermCapable ¶ added in v1.1.0
func IsItermCapable() bool
NOTE: uses $TERM_PROGRAM, which isn't passed through tmux or ssh checks if iterm inline image protocol is supported
func IsKittyCapable ¶ added in v1.1.0
func IsKittyCapable() bool
checks if terminal supports kitty image protocols
func IsSixelCapable ¶
func IsTmuxScreen ¶
func IsTmuxScreen() bool
func ItermCopyFileInline ¶ added in v1.1.0
func ItermWriteImage ¶ added in v1.1.0
Encode image using the iTerm2/WezTerm terminal image protocol:
https://iterm2.com/documentation-images.html
func KittyCopyPNGInline ¶ added in v1.1.0
Serialize PNG image from io.Reader into Kitty terminal in-band format.
func KittyWriteImage ¶ added in v1.1.0
Serialize image.Image into Kitty terminal in-band format.
func KittyWritePNGLocal ¶ added in v1.1.0
func KittyWritePNGLocal(out io.Writer, pngFileName string, opts KittyImgOpts) error
Display local PNG file - pngFileName must be directly accesssible from Kitty instance - pngFileName must be an absolute path
func RequestTermAttributes ¶
func SixelWriteImage ¶ added in v1.1.0
Encodes a paletted image into DECSIXEL format. Forked & heavily modified from https://github.com/mattn/go-sixel/
Since SIXEL does not support alpha transparency, any alpha > 0 will be treated as fully opaque.
SIXEL is a paletted format. To keep dependencies to a minimum, this only supports paletted images. Palette entries beyond index 255 are ignored. 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/
func TermRequestResponse ¶ added in v1.0.3
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.
Types ¶
type KittyImgOpts ¶ added in v1.1.0
type KittyImgOpts struct { SrcX uint32 // x= SrcY uint32 // y= SrcWidth uint32 // w= SrcHeight uint32 // h= CellOffsetX uint32 // X= (pixel x-offset inside terminal cell) CellOffsetY uint32 // Y= (pixel y-offset inside terminal cell) DstCols uint32 // c= (display width in terminal columns) DstRows uint32 // r= (display height in terminal rows) ZIndex int32 // z= ImageId uint32 // i= ImageNo uint32 // I= PlacementId uint32 // p= }
func (KittyImgOpts) ToHeader ¶ added in v1.1.0
func (o KittyImgOpts) ToHeader(opts ...string) string