Commit Graph
20 Commits
Author SHA1 Message Date
Michael Grant c0e38f3748 Cleanup and simplification. 2026-08-25 11:23:52 +01:00
Michael Grant 45f32d71ef Fix indents. 2026-08-25 11:23:52 +01:00
Michael Grant c2426fcf08 image: preserve fractional cell extents 2026-08-25 11:23:52 +01:00
Michael Grant 047308b156 image: retain ordered placements in the grid
Replace the per-cell image marker with sparse placement spans attached to
grid lines. A placement owns all of its spans and records the input
protocol, application image and placement IDs, z-index, and creation order.

This retains overlapping image layers without storing a list in every grid
cell. Grid operations move, split, clip, and remove only the affected spans.

Use the input protocol to determine image/text interaction: later text
damages SIXEL spans, while Kitty placements remain and are ordered by their
z-index. Rendering then adapts that one logical scene for each client,
rather than changing its semantics according to whether the outer terminal
uses Kitty or SIXEL.
2026-08-25 11:23:52 +01:00
Michael Grant cf80845be7 Change some names of things for clarity. 2026-08-25 11:23:52 +01:00
Michael Grant ed63826b15 Cleanup. 2026-08-25 11:22:26 +01:00
Michael Grant b89f8b0624 Update Kitty image names 2026-08-25 11:22:26 +01:00
Michael Grant d53f8eff9e Add comments to image functions 2026-08-25 11:22:26 +01:00
Michael Grant 03efb5e293 Preserve text behind transparent Kitty images. 2026-08-25 11:22:26 +01:00
Michael Grant ae0fa8068c Preserve Kitty image crop width after cell rounding. 2026-08-25 11:22:26 +01:00
Michael Grant 596de59d11 Make image types opaque 2026-08-25 11:22:26 +01:00
Michael Grant 75b606c3df The two Chawan symptoms now have matching fixes:
- Layout corruption: C=1 is respected.
  - Lingering remnants: tmux now tracks Kitty’s (image ID, placement ID) identity, replaces moved placements, and honors
    placement-specific d=i,...,p=... deletion.
2026-08-25 11:22:26 +01:00
Michael Grant d674f34f25 Support Kitty Unicode placeholder image transmission
- Parse Kitty graphics commands wrapped in tmux passthrough sequences.
  - Accept unpadded base64 payloads emitted by icat.
  - Handle chunked transfers whose final chunk omits m.
  - Track virtual image placements.
  - Convert Unicode placeholders into shared image cells for Kitty and SIXEL clients.
  - Add regression coverage for wrapped, chunked, unpadded input.
2026-08-25 11:22:26 +01:00
Michael Grant 52e2e2b0c0 C=1 is parsed and stored as an image-placement flag, suppressing cursor movement and scrolling as required by the Kitty protocol. 2026-08-25 11:22:26 +01:00
Michael Grant 260cde9f48 Remove obsolete Kitty diacritics comment 2026-08-25 11:22:26 +01:00
Michael Grant c8fe307682 Support Kitty source rectangle placements 2026-08-25 11:22:26 +01:00
Michael Grant d8da527882 Refactor to centralize image-specific rendering and lifecycle code in image.c and the image-* backends. 2026-08-25 11:22:26 +01:00
Michael Grant 0852a39e31 Move image-diacritics.h into image-kitty.c. 2026-08-25 11:22:26 +01:00
Michael Grant 825b2c39b8 Fix copyrights. 2026-08-25 11:22:26 +01:00
Michael Grant 3e6e0a2860 New image related files. 2026-08-25 11:22:26 +01:00