Skip to content

encode images to iTerm / Kitty / SIXEL (terminal) inline graphics protocols

License

Notifications You must be signed in to change notification settings

BourgeoisBear/rasterm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

4bdb036 · Jan 6, 2025

History

44 Commits
Mar 15, 2021
Mar 16, 2021
Mar 13, 2021
Jan 6, 2025
Apr 3, 2024
Apr 3, 2024
Jan 6, 2025
Jan 3, 2025
Apr 3, 2024
Apr 7, 2024
Mar 16, 2021
Apr 7, 2024
Apr 7, 2024
Apr 7, 2024

Repository files navigation

rasterm

Encodes images to iTerm / Kitty / SIXEL (terminal) inline graphics protocols.

GoDoc

rasterm sample output

Supported Image Encodings

  • Kitty
  • iTerm2 / WezTerm
  • Sixel

TODO

TESTING

Notes

terminal features matrix

terminal sixel iTerm2 format kitty format
ghostty Y
iterm2 Y Y
kitty Y
rio Y Y
mintty Y Y
mlterm Y Y
putty
rlogin Y Y
wezterm Y Y
xterm Y

known responses

CSI 0 c

terminal response
apple terminal \x1b[?1;2c
ghostty \x1b[?62;22c
guake \x1b[?65;1;9c
iterm2 \x1b[?62;4c
kitty \x1b[?62;c
rio \x1b[?62;4;6;22c
mintty \x1b[?64;1;2;4;6;9;15;21;22;28;29c
mlterm \x1b[?63;1;2;3;4;7;29c
putty \x1b[?6c
rlogin \x1b[?65;1;2;3;4;6;7;8;9;15;18;21;22;29;39;42;44c
st \x1b[?6c
terminology \x1b[?64;1;9;15;18;21;22c
vimterm \x1b[?1;2c
wez \x1b[?65;4;6;18;22c
xfce \x1b[?65;1;9c
xterm \x1b[?63;1;2;4;6;9;15;22c

CSI > 0 c

terminal response
apple terminal \x1b[>1;95;0c
ghostty \x1b[>1;10;0c
guake \x1b[>65;5402;1c
iterm2 \x1b[>0;95;0c
rio \x1b[>0;95;0c
kitty \x1b[>1;4000;19c
mintty \x1b[>77;30104;0c
mlterm \x1b[>24;279;0c
putty \x1b[>0;136;0c
rlogin \x1b[>65;331;0c
st NO RESPONSE
vimterm \x1b[>0;100;0c
wez \x1b[>0;0;0c
xfce \x1b[>65;5402;1c
xterm \x1b[>19;344;0c

identifications

terminal values
apple terminal TERM_PROGRAM="Apple_Terminal"
apple terminal __CFBundleIdentifier="com.apple.Terminal"
ghostty TERM="xterm-ghostty"
rio TERM="rio"
guake
iterm2 LC_TERMINAL="iTerm2"
kitty TERM="xterm-kitty"
mintty TERM="mintty"
mlterm
putty
rlogin
st
terminology TERM_PROGRAM=terminology
vimterm VIM_TERMINAL is set
wez TERM_PROGRAM="wezterm"
xfce
xterm

opinions

  • Sixel is a primitive and wasteful format. Most sixel terminals also support the iTerm2 format--fewer bytes, full color instead of paletted, and no pixel re-processing required. Much better!

go stuff

go tool pprof -http=:8080 ./name.prof
godoc -http=:8099 -goroot="$HOME/go"
go test -v
go mod tidy
https://blog.golang.org/pprof

more reading