[GH-ISSUE #92] Support for rendering images (Kitty Graphics, SIXEL, iterm2 image) #23

Open
opened 2026-03-02 23:43:55 +03:00 by kerem · 11 comments
Owner

Originally created by @remorses on GitHub (Aug 27, 2025).
Original GitHub issue: https://github.com/anomalyco/opentui/issues/92

Originally assigned to: @msmps on GitHub.

SIXEL allows you to render images in the terminal, this would be great for a project I am working on, Termcast: reimplementing Raycast in the terminal, to show extensions icons.

Most popular terminals already support SIXEL:

Terminal SIXEL? Notes
xterm Yes Native SIXEL + XTSMGRAPHICS to query max geometry.
WezTerm Yes Also supports iTerm2/kitty image protocols; default max ~25M px/image via imgcat.
iTerm2 (macOS) Yes Supported since 3.3; includes a SIXEL feature test (e.g., print snake.six). Also supports IIP.
GNOME Terminal (VTE) No (varies) Upstream VTE has work/flags; many distro builds ship without SIXEL. Some Flatpaks/bundles may enable it.
Konsole (KDE) Yes Since KDE Gear 22.04.
Windows Terminal Yes Added in Preview 1.22, mainline in 1.23.
VS Code (integrated terminal) Yes Uses xterm.js addon; supports SIXEL & IIP. Enabled since v1.80 (toggle: terminal.integrated.enableImages).
kitty No Won’t implement SIXEL; uses its own graphics protocol instead.
Alacritty No No built-in SIXEL (there are third-party/fork experiments).
foot (Wayland) Yes Supported (e.g., since 1.2.0).

Here is a website with more in depth support for SIXEL: https://www.arewesixelyet.com/

Also Alacritty has an active PR to add support for it here

Ghostty still does not support SIXEL but it supports Kitty graphics protocol

Originally created by @remorses on GitHub (Aug 27, 2025). Original GitHub issue: https://github.com/anomalyco/opentui/issues/92 Originally assigned to: @msmps on GitHub. SIXEL allows you to render images in the terminal, this would be great for a project I am working on, [Termcast](https://github.com/remorses/termcast): reimplementing Raycast in the terminal, to show extensions icons. Most popular terminals already support SIXEL: | Terminal | SIXEL? | Notes | | --------------------------------- | --------------- | ----------------------------------------------------------------------------------------------------------- | | **xterm** | **Yes** | Native SIXEL + XTSMGRAPHICS to query max geometry. | | **WezTerm** | **Yes** | Also supports iTerm2/kitty image protocols; default max ~25M px/image via `imgcat`. | | **iTerm2 (macOS)** | **Yes** | Supported since 3.3; includes a SIXEL feature test (e.g., print `snake.six`). Also supports IIP. | | **GNOME Terminal (VTE)** | **No** (varies) | Upstream VTE has work/flags; many distro builds ship **without** SIXEL. Some Flatpaks/bundles may enable it.| | **Konsole (KDE)** | **Yes** | Since KDE Gear **22.04**. | | **Windows Terminal** | **Yes** | Added in Preview **1.22**, mainline in **1.23**. | | **VS Code (integrated terminal)** | **Yes** | Uses xterm.js addon; supports SIXEL & IIP. Enabled since v**1.80** (toggle: `terminal.integrated.enableImages`). | | **kitty** | **No** | Won’t implement SIXEL; uses its own graphics protocol instead. | | **Alacritty** | **No** | No built-in SIXEL (there are third-party/fork experiments). | | **foot** (Wayland) | **Yes** | Supported (e.g., since 1.2.0). | Here is a website with more in depth support for SIXEL: https://www.arewesixelyet.com/ Also Alacritty has an active PR to add support for it [here](https://github.com/alacritty/alacritty/pull/4763) Ghostty still [does not support SIXEL](https://github.com/ghostty-org/ghostty/discussions/2496#discussioncomment-11353475) but it supports [Kitty graphics protocol](https://sw.kovidgoyal.net/kitty/graphics-protocol/)
Author
Owner

@kevcube commented on GitHub (Sep 19, 2025):

I have a feature in mind which relies on image support, This would be great to have. In my case I am a kitty user now checking out Ghostty, both support kitty's image protocol. I would vote for supporting that protocol over sixel, according to my read of @.kovidgoyal's thoughts kitty's protocol is more modern.

<!-- gh-comment-id:3312176765 --> @kevcube commented on GitHub (Sep 19, 2025): I have a feature in mind which relies on image support, This would be great to have. In my case I am a kitty user now checking out Ghostty, both support kitty's image protocol. I would vote for supporting that protocol over sixel, according to my read of @.kovidgoyal's thoughts kitty's protocol is more modern.
Author
Owner

@lmdevv commented on GitHub (Nov 1, 2025):

I am also building a feature which I would love to have image support, preferably supporting kitty graphics since I am in ghostty and hopefully this could be implemented

<!-- gh-comment-id:3476765897 --> @lmdevv commented on GitHub (Nov 1, 2025): I am also building a feature which I would love to have image support, preferably supporting kitty graphics since I am in ghostty and hopefully this could be implemented
Author
Owner

@kommander commented on GitHub (Nov 2, 2025):

My thought around this was to have an ImageRenderable that takes an url, which can be a local path/url/base64 and uses a fallback system of:

  • if kitty graphics is supported, draw with kitty graphics
  • fallback to sixel
  • fallback to buffer drawing super sampled blocks (what webgpu currently uses)

I am not sure how to support this in the layered buffers though, as in mark a region in a buffer as image data and does kitty graphics allow drawing over the image or would that be highest level etc. Open to suggestions here.

<!-- gh-comment-id:3478080942 --> @kommander commented on GitHub (Nov 2, 2025): My thought around this was to have an `ImageRenderable` that takes an url, which can be a local path/url/base64 and uses a fallback system of: - if kitty graphics is supported, draw with kitty graphics - fallback to sixel - fallback to buffer drawing super sampled blocks (what webgpu currently uses) I am not sure how to support this in the layered buffers though, as in mark a region in a buffer as image data and does kitty graphics allow drawing over the image or would that be highest level etc. Open to suggestions here.
Author
Owner

@tommerty commented on GitHub (Nov 13, 2025):

+1 for this. I have a link in bio platform that we're also planning on building a terminal app for to quickly load users profiles and being able to showcase the profile image or icons via kitty graphics would be incredible

<!-- gh-comment-id:3527394448 --> @tommerty commented on GitHub (Nov 13, 2025): +1 for this. I have a link in bio platform that we're also planning on building a terminal app for to quickly load users profiles and being able to showcase the profile image or icons via kitty graphics would be incredible
Author
Owner

@msmps commented on GitHub (Nov 14, 2025):

I've picked this up and hope to land this soon 👍

Image
<!-- gh-comment-id:3532552575 --> @msmps commented on GitHub (Nov 14, 2025): I've picked this up and hope to land this soon 👍 <img width="1189" height="908" alt="Image" src="https://github.com/user-attachments/assets/5971de4e-a559-41a6-a11e-3c6f2b01447d" />
Author
Owner

@remorses commented on GitHub (Nov 14, 2025):

Wow amazing! Terminals are never going to be the same

<!-- gh-comment-id:3532640803 --> @remorses commented on GitHub (Nov 14, 2025): Wow amazing! Terminals are never going to be the same
Author
Owner

@remorses commented on GitHub (Nov 30, 2025):

I plan to use this feature for creating a video editor in the terminal

I would need shared memory support for this so it is more performant.

@msmps is your branch published? I would love to help

<!-- gh-comment-id:3592864521 --> @remorses commented on GitHub (Nov 30, 2025): I plan to use this feature for creating a video editor in the terminal I would need shared memory support for this so it is more performant. @msmps is your branch published? I would love to help
Author
Owner

@austinm911 commented on GitHub (Dec 23, 2025):

Another +1, this would be awesome for a TUI i'm working on!

<!-- gh-comment-id:3687441774 --> @austinm911 commented on GitHub (Dec 23, 2025): Another +1, this would be awesome for a TUI i'm working on!
Author
Owner

@inakineitor commented on GitHub (Jan 22, 2026):

@msmps Would love to help if you think there's extra work needed to merge this!

<!-- gh-comment-id:3786746755 --> @inakineitor commented on GitHub (Jan 22, 2026): @msmps Would love to help if you think there's extra work needed to merge this!
Author
Owner

@iamlemec commented on GitHub (Feb 5, 2026):

I took a shot at this in #633. Would greatly appreciate any thoughts on it. There's an animated image demo included if folks want to see it in action!

<!-- gh-comment-id:3856653317 --> @iamlemec commented on GitHub (Feb 5, 2026): I took a shot at this in #633. Would greatly appreciate any thoughts on it. There's an animated image demo included if folks want to see it in action!
Author
Owner

@smashah commented on GitHub (Feb 19, 2026):

What's the ETA on this feature?

<!-- gh-comment-id:3930047189 --> @smashah commented on GitHub (Feb 19, 2026): What's the ETA on this feature?
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/opentui#23
No description provided.