diff options
| author | blasty <blasty@local> | 2026-08-06 16:01:57 +0200 |
|---|---|---|
| committer | blasty <blasty@local> | 2026-08-06 16:12:13 +0200 |
| commit | 6978c38b8bcc2dc7fb631a2223475a3164add22b (patch) | |
| tree | 39869e6da1ca29ee95d04d853ffbf90c2d984fa4 /docs | |
| parent | add the logo source image (diff) | |
| download | ida-tui-6978c38b8bcc2dc7fb631a2223475a3164add22b.tar.gz ida-tui-6978c38b8bcc2dc7fb631a2223475a3164add22b.tar.xz ida-tui-6978c38b8bcc2dc7fb631a2223475a3164add22b.zip | |
splash: draw the real logo on terminals that can
logo.ans is 60x33 cells of half-blocks -- a 60x66 pixel image. logo.png is
474x516. On a terminal that speaks the kitty graphics protocol we now send the
real thing, in the same cell footprint (fit() lands on exactly 60x33, so the
layout is unchanged), and fall back to the block art everywhere else.
Three findings, each of which cost a round of "it renders nothing":
Support cannot be sniffed from the environment. Under a multiplexer that passes
the protocol through, TERM is xterm-256color and KITTY_WINDOW_ID, TERM_PROGRAM
and COLORTERM are all empty while the protocol answers OK -- detection by
terminal name would disable graphics on exactly the terminal that supports them.
So we ask: a 1x1 graphics query plus a Primary Device Attributes request, with
DA1 as the sync point.
Unicode placeholders are not usable. The tidy way to put an image in a TUI is a
virtual placement plus U+10EEEE cells that the compositor clips and moves like
text -- and it is what every Textual image library builds on -- but this
terminal answers ENOTSUPPORTED for placeholders while supporting everything
else. So the image is placed directly, anchored to screen cells Textual knows
nothing about. The splash therefore owns its lifetime: place after layout,
re-anchor when the note repaints (throttled; a placement is one short escape
with no image data), delete on unmount, or a leftover would sit on top of the
disassembly forever.
The query and the upload go on OPPOSITE sides of the alternate screen. The query
must run before Textual starts, which reads stdin on its own thread and would
eat the reply. The image must be uploaded after Textual has switched to the
alternate screen: an image uploaded to the primary screen cannot be placed from
the alternate one, and the placement reports success while drawing nothing. That
silent failure is why detection lives in launch.py and upload lives in the
splash's on_mount.
$IDATUI_KITTY_LOG traces the decisions, since none of this is visible to a test
-- correct escape sequences and visible pixels are not the same thing here.
Off-tty (the pilot suite, a pipe) detection returns False and the block art is
used, so the tests are unaffected.
Diffstat (limited to 'docs')
0 files changed, 0 insertions, 0 deletions
