Repository navigation
In kitty and Ghostty, About shows ASCII art instead of the artwork #164
Description
Opportunity
In kitty and Ghostty, two of the terminals we recommend, About (tui) shows ASCII art instead of the artwork.
The About dialog is the one place TuiCode shows its own face, and today which version you see depends on your terminal. It's not a daily-driver gap, but it's a visible rough edge in terminals the vision's user is likely to use.
Evidence
- AGENTS.md, About dialog: the image is drawn as a sixel, so it shows in WezTerm, iTerm2, tmux 3.6, Windows Terminal and foot. kitty and Ghostty don't speak sixel, and Terminal.Gui 2.1.0 has no kitty graphics, so they get the ASCII art. So does Alacritty, which speaks neither.
- Terminal.Gui 2.5 adds
ImageView(docs, source). It draws through the kitty graphics protocol first, then sixel, and otherwise falls back to one coloured space per cell. kitty support is detected fromKITTY_WINDOW_IDorTERM_PROGRAM=kitty|ghostty. - The driver in 2.5 also lets the app set what it detected (
SetSixelSupport,SetKittyGraphicsSupport), so our own probe can keep doing what TG's gets wrong: iTerm2's Retina cell size (About's image fills the dialog on a Retina screen #333) and tmux's DA1 reply. - TuiCode is on 2.5.0 now (Move TuiCode to Terminal.Gui 2.5 and MentalDesk.Tui 0.2.0 #442 is done), so
ImageViewis available today.
Options considered
- Do nothing. ASCII art is a fine fallback and costs nothing. But kitty and Ghostty users never see the artwork, and the dialog says nothing about why.
- Our own kitty graphics encoder. Full control over placement, but it's a protocol encoder we'd own when TG 2.5, which we're now on, ships one.
- ImageView everywhere, including its cell fallback (your suggestion, taken literally). One code path, and every terminal shows something in colour. But at the About dialog's size (about 60 × 12 cells) the cell fallback is a blurry mosaic, a step down from the ASCII art, which at least reads as a logo.
- ImageView for the image, ASCII art where there's no image protocol. ← proposed. kitty and Ghostty get the artwork through kitty graphics, sixel terminals keep it, and Alacritty, Terminal.app and SSH sessions without either keep the ASCII art. We drop our own sixel drawing code in favour of TG's, but keep our probe, which knows things TG's doesn't.
Proposal
About shows the artwork in kitty and Ghostty too, drawn by Terminal.Gui's ImageView.
- In kitty and Ghostty,
tuishows the same image WezTerm and iTerm2 show today. - Sixel terminals look exactly as they do now: right size on Retina, no dark band under the image in iTerm2, and it works inside tmux 3.6.
- Terminals with neither protocol keep the ASCII art, unchanged.
- The image still appears straight away on a second open, and nothing is left on screen after closing.
- F12 Diagnostics says which way the image is drawn:
kitty graphics,sixelornone (ASCII art).
Mockup
tui in Ghostty, before:
┌ About ───────────────────────────────────────────────────────────┐
│ _.--._ │
│ ,' o `==- ████████╗ ██╗ ██╗ ██╗ │
│ / ,--. ╚══██╔══╝ ██║ ██║ ██║ │
│ / ( @@ ) ██║ ██║ ██║ ██║ │
│ … │
│ Version 0.x.y │
│ https://github.com/mentaldesk/TuiCode │
│ Esc · Enter close │
└──────────────────────────────────────────────────────────────────┘
After (the artwork, drawn as a kitty graphics image):
┌ About ───────────────────────────────────────────────────────────┐
│ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ │
│ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ image ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ │
│ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ │
│ Version 0.x.y │
│ https://github.com/mentaldesk/TuiCode │
│ Esc · Enter close │
└──────────────────────────────────────────────────────────────────┘
F12 Diagnostics gains one line:
│ Image protocol kitty graphics │
Scope
In
- About drawn with
ImageView: kitty graphics where detected, sixel where our probe finds it, ASCII art otherwise. - Feeding our probe's sixel result and cell size to the driver, so TG's own detection doesn't regress iTerm2 or tmux.
- The Diagnostics line.
- Removing the sixel drawing code
ImageViewreplaces.
Out
ImageView's cell fallback (option 3).- Kitty graphics inside tmux (it needs passthrough set up in tmux; tmux users keep sixel or the ASCII art).
- Images anywhere else, such as previewing image files from the explorer. That would be an idea of its own.
ImageView's pan and zoom keys. About is a picture, not a viewer.
Delivery
One PR: About on ImageView for both protocols and the Diagnostics line, with the sixel terminals checked for regressions.
Decided
All of these were the Lead's calls, accepted when you approved; you didn't need to answer anything.
- ASCII art stays the fallback, not
ImageView's cell mosaic. At the dialog's size the mosaic doesn't read as the logo; the ASCII art does. If you'd rather see colour everywhere, say so and the fallback becomesImageView's. - TG's kitty graphics, not our own. We're on 2.5 now, so building it ourselves means owning code TG already ships.
- Our probe stays. TG's sixel detector waits a second on iTerm2 and gets its Retina cell size wrong (AGENTS.md, About dialog), so we tell the driver what we found instead.
- Over SSH, kitty and Ghostty usually fall back to ASCII art, because the variables TG detects them by aren't forwarded. That's the same as today, and not worth a probe of our own.
Original idea
We currently fall back to ASCII art if the Terminal doesn't support Sixel.
It looks like Terminal.Gui has an Image component that would allow rendering images in all terminals... possibly a better solution?
Activity
[-]Improved image rendering in the About dialog[/-][+]In kitty and Ghostty, About shows ASCII art instead of the artwork[/+]a-team-app commentedon Oct 8, 2026
Now in front of you. Two small changes since drafting: it notes the Terminal.Gui 2.5 move (#442) is now in progress as #472, and the breakdown is now a Delivery section, still one PR that waits on #442.
a-team-app commentedon Oct 8, 2026
Back to Exploring: #467 (file history, High) took this slot. It keeps its priority and comes back on its own once a slot frees. I won't comment on it moving again unless it changes.
a-team-app commentedon Oct 13, 2026
Pitched again. One thing changed since the draft: #442 has landed and we're on Terminal.Gui 2.5.0, so
ImageViewis available now. I dropped "waits on #442" from Delivery and Scope, and reworded the matching Assumed line. The proposal itself is the same.a-team-app commentedon Oct 13, 2026
Building, as one task: #537. Nothing I had to settle beyond what you approved; the Assumed list is now Decided.
a-team-app commentedon Oct 14, 2026
Tried on
origin/main(a37ee7a), through tuirec. It says it's kitty, soKITTY_WINDOW_IDis set. About sends the artwork as a kitty graphics image (522×280) with no sixel, and F12 Diagnostics shows Image protocol: kitty graphics. tuirec can't take the kitty variable away, so I couldn't try the ASCII-art and sixel fallbacks by hand.AboutImageHostTestscovers which protocol gets picked. Closing.