aterm imagery: Alacritty has no background image and no graphics protocol, so the answer is a launch splash in half-blocks #1261

Open
opened 2026-08-26 02:56:42 +00:00 by coilyco-ops · 1 comment
Member

Part of #1245. Blocked on coilyco-flight-deck/agent-compose#358 by choice, and constrained by what Alacritty can actually do.

What Alacritty 0.17.0 supports

Checked against the installed binary rather than from memory:

config keys                window.opacity, colors.transparent_background_colors
background_image           absent
sixel                      absent from the binary
kitty graphics protocol    absent from the binary

There is no background image and there is no in-band graphics protocol. This is not a config we have failed to set, it is a long-standing upstream position. aterm also currently forces window.opacity=1.0 in buildLaunchPlan, matching the opaque treatment the base config and docs/warp-host-setup.md both commit to.

What that leaves

  • Transparency to the desktop. Drop opacity and let whatever is behind the window show through. Gives you an image, but not a per-role one, and text legibility becomes a function of what happens to be underneath. Wrong for a branded identity system.
  • A different terminal. Kitty, WezTerm, and Ghostty all support real background images. Terminal adapters were deliberately cut, so this is the first concrete cost of that decision. Recording it as a cost, not reopening it.
  • Text-cell imagery. Half-blocks give two vertical pixels per cell, sextants give more. An 80x24 window is a 160x48 canvas, which is plenty for a recognizable emblem. This is the only route that works on the terminal we chose.

So the shape is a splash, not a wallpaper

Anything drawn as cells scrolls away, so imagery in aterm is necessarily a moment rather than a background. That is a real constraint and it collapses this into #1255, which already wants to draw an identity figure at launch. Instead of deriving geometry from form.geometry as ASCII, render the personality's emblem as a small colored bitmap decoded into half-block cells.

Assets do not need hand-drawing. Ten emblems across the roster: grapnel, cairn, shears, spyglass, kaleidoscope, ferris-wheel, hearth, shield, burette, diving-bell. The ComfyUI mark and banner system already exists for exactly this kind of per-product mark, and pre-rendering at build time matches the decision already taken for the sound samples in #1256.

Why it waits for the color solve

Not tidiness. The solve produces the constraint the imagery has to obey.

agent-compose#358 fixes background lightness and chroma at L 0.235 and C 0.055 so text contrast is predictable across every role. Any imagery sharing the window competes with that, and the rule for how much it may deviate can only be written once those values exist. Adding an image first means tuning two variables against each other while one of them is known broken.

There is also a redundancy question that only answers itself in that order. If per-role background separation lands and works, a per-role image may have no job left to do. Cheap channel first, then re-ask.

Sequencing

  1. agent-compose#358, the separation solve
  2. #1251, widen the overlay struct
  3. #1255, the identity card, which is where imagery lands if it lands
  4. re-ask this issue with the constraint in hand
Part of #1245. Blocked on coilyco-flight-deck/agent-compose#358 by choice, and constrained by what Alacritty can actually do. ## What Alacritty 0.17.0 supports Checked against the installed binary rather than from memory: ``` config keys window.opacity, colors.transparent_background_colors background_image absent sixel absent from the binary kitty graphics protocol absent from the binary ``` There is no background image and there is no in-band graphics protocol. This is not a config we have failed to set, it is a long-standing upstream position. aterm also currently forces `window.opacity=1.0` in `buildLaunchPlan`, matching the opaque treatment the base config and `docs/warp-host-setup.md` both commit to. ## What that leaves - **Transparency to the desktop.** Drop opacity and let whatever is behind the window show through. Gives you an image, but not a per-role one, and text legibility becomes a function of what happens to be underneath. Wrong for a branded identity system. - **A different terminal.** Kitty, WezTerm, and Ghostty all support real background images. Terminal adapters were deliberately cut, so this is the first concrete cost of that decision. Recording it as a cost, not reopening it. - **Text-cell imagery.** Half-blocks give two vertical pixels per cell, sextants give more. An 80x24 window is a 160x48 canvas, which is plenty for a recognizable emblem. This is the only route that works on the terminal we chose. ## So the shape is a splash, not a wallpaper Anything drawn as cells scrolls away, so imagery in aterm is necessarily **a moment rather than a background**. That is a real constraint and it collapses this into #1255, which already wants to draw an identity figure at launch. Instead of deriving geometry from `form.geometry` as ASCII, render the personality's `emblem` as a small colored bitmap decoded into half-block cells. Assets do not need hand-drawing. Ten emblems across the roster: grapnel, cairn, shears, spyglass, kaleidoscope, ferris-wheel, hearth, shield, burette, diving-bell. The ComfyUI mark and banner system already exists for exactly this kind of per-product mark, and pre-rendering at build time matches the decision already taken for the sound samples in #1256. ## Why it waits for the color solve Not tidiness. The solve **produces the constraint the imagery has to obey.** agent-compose#358 fixes background lightness and chroma at L 0.235 and C 0.055 so text contrast is predictable across every role. Any imagery sharing the window competes with that, and the rule for how much it may deviate can only be written once those values exist. Adding an image first means tuning two variables against each other while one of them is known broken. There is also a redundancy question that only answers itself in that order. If per-role background separation lands and works, a per-role image may have no job left to do. Cheap channel first, then re-ask. ## Sequencing 1. agent-compose#358, the separation solve 2. #1251, widen the overlay struct 3. #1255, the identity card, which is where imagery lands if it lands 4. re-ask this issue with the constraint in hand
Author
Member

The premise of this issue is gone. Every capability finding in the body is measured against Alacritty 0.17.0, and aterm no longer opens Alacritty. #1264 landed kitty in #1266 (bc5c9863).

What that does to each branch:

  • "background_image absent" - kitty has background_image, background_image_layout, background_image_linear, background_tint.
  • "kitty graphics protocol absent" - kitty implements it natively, so the emblem does not have to be half-blocks.
  • "window title bar background" - kitty has window_title_bar_active_background, a per-role channel Alacritty never had.
  • "A different terminal ... recording it as a cost, not reopening it" - reopened and resolved. The cost was paid.

So the title of this issue is now wrong and the conclusion it reaches, a launch splash in half-blocks, is no longer forced. The #1264 comment already notes this: unblocked on the terminal side, still correctly waiting on agent-compose#358.

What survives, and it is the important half. The sequencing argument does not depend on the terminal at all:

  1. agent-compose#358 fixes background lightness and chroma at L 0.235, C 0.055. That is the contrast constraint any imagery has to obey, and it cannot be written before those values exist.
  2. The redundancy question stands too. If per-role background separation lands and works, a per-role image may have no job left. Cheap channel first, then re-ask.

Recommendation: retitle and re-scope rather than implement. The honest state is "aterm imagery: re-ask once agent-compose#358 lands, now that kitty removes the capability ceiling". Whether it stays a launch moment or becomes a real background is exactly the thing to decide with the color solve in hand, and half-blocks are now one option rather than the only one.

**The premise of this issue is gone.** Every capability finding in the body is measured against Alacritty 0.17.0, and aterm no longer opens Alacritty. #1264 landed kitty in #1266 (`bc5c9863`). What that does to each branch: * "background_image absent" - kitty has `background_image`, `background_image_layout`, `background_image_linear`, `background_tint`. * "kitty graphics protocol absent" - kitty implements it natively, so the emblem does not have to be half-blocks. * "window title bar background" - kitty has `window_title_bar_active_background`, a per-role channel Alacritty never had. * "A different terminal ... recording it as a cost, not reopening it" - reopened and resolved. The cost was paid. So the title of this issue is now wrong and the conclusion it reaches, a launch splash in half-blocks, is no longer forced. The #1264 comment already notes this: **unblocked on the terminal side, still correctly waiting on agent-compose#358.** **What survives, and it is the important half.** The sequencing argument does not depend on the terminal at all: 1. agent-compose#358 fixes background lightness and chroma at L 0.235, C 0.055. That is the contrast constraint any imagery has to obey, and it cannot be written before those values exist. 2. The redundancy question stands too. If per-role background separation lands and works, a per-role image may have no job left. Cheap channel first, then re-ask. **Recommendation: retitle and re-scope rather than implement.** The honest state is "aterm imagery: re-ask once agent-compose#358 lands, now that kitty removes the capability ceiling". Whether it stays a launch moment or becomes a real background is exactly the thing to decide with the color solve in hand, and half-blocks are now one option rather than the only one.
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
coilyco-flight-deck/agentic-os#1261
No description provided.