Michael Grant
efbd09e101
sixel: add sixel-region-scrolling to trust the terminal on scroll
...
There is no way to query a terminal for whether it moves SIXEL image
content along with the rest of a scrolling region, so tmux always
redrew the image after every scroll rather than assuming the terminal
did it for free the way Kitty placements already are (IMAGE_BACKEND_
SCROLLS). Add a server option, default on, that lets sixel opt into the
same trust; image_backend_flags() now ORs SCROLLS in for the sixel
backend when it's set.
Splitting SCROLLS out surfaced a second, unrelated property the two
image_backend_flags() checks had been conflating: whether a backend
also respects its own cell boundaries rather than bleeding pixels onto
neighbouring rows, which is what the "redraw a pane's border-status
after a GRAPHICAL-only redraw" guard in screen-redraw.c was actually
testing for. Give that its own IMAGE_BACKEND_CLIPPED flag (kitty only)
so turning sixel-region-scrolling on doesn't also disable that
unrelated border-status protection.
Includes a regress test proving the scroll-skip decision is wired
correctly with the option on and off, and a manual visual test
(tools/sixel-scroll-region-test.sh + tools/sixel-ruler.six, a numbered
colour-band SIXEL image) for checking real terminals by eye, since nothing
here can verify what a given terminal actually renders.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com >
2026-09-20 22:39:43 +01:00
..
2026-07-05 14:36:47 +01:00
2026-09-11 11:17:35 +01:00
2026-09-20 09:19:35 +01:00
2026-07-06 11:50:58 +01:00
2026-07-06 11:50:58 +01:00
2026-08-28 08:56:12 +01:00
2026-07-06 11:50:58 +01:00
2026-07-06 11:50:58 +01:00
2026-09-08 08:32:05 +01:00
2026-09-01 20:52:44 +01:00
2026-09-20 22:38:57 +01:00
2026-07-06 11:50:58 +01:00
2026-07-06 11:50:58 +01:00
2026-09-02 11:16:47 +01:00
2026-09-02 12:32:29 +01:00
2026-09-01 21:55:50 +01:00
2026-09-02 11:16:47 +01:00
2026-07-17 09:29:59 +01:00
2026-09-20 09:11:24 +01:00
2025-12-07 22:11:45 +00:00
2026-07-06 11:50:58 +01:00
2026-07-06 11:50:58 +01:00
2026-07-12 22:03:16 +01:00
2026-07-12 22:03:16 +01:00
2026-09-02 11:16:47 +01:00
2026-09-01 20:52:44 +01:00
2026-07-10 07:54:21 -07:00
2026-09-08 11:27:25 +01:00
2026-09-01 21:55:50 +01:00
2026-09-03 22:39:09 +01:00
2026-09-10 12:00:01 +01:00
2026-07-17 09:37:50 +01:00
2026-07-10 16:45:58 +01:00
2026-07-13 10:23:38 +01:00
2026-09-01 20:52:44 +01:00
2026-07-06 11:50:58 +01:00
2026-09-02 11:16:47 +01:00
2026-07-14 12:05:06 +01:00
2026-07-09 08:56:06 +01:00
2026-09-01 21:55:50 +01:00
2026-07-13 11:32:28 +01:00
2026-07-06 11:50:58 +01:00
2026-08-03 09:53:50 +01:00
2021-05-13 08:49:58 +01:00
2026-09-01 20:52:44 +01:00
2019-04-02 09:44:28 +01:00
2026-07-06 11:50:58 +01:00
2019-04-02 09:44:28 +01:00
2026-07-06 11:50:58 +01:00
2019-04-02 09:44:28 +01:00
2026-07-06 11:50:58 +01:00
2019-04-02 09:44:28 +01:00
2026-07-06 11:50:58 +01:00
2019-04-02 09:44:28 +01:00
2026-07-28 11:36:03 +01:00
2026-07-06 11:50:58 +01:00
2026-07-19 20:58:20 +01:00
2026-07-06 11:50:58 +01:00
2026-07-06 11:50:58 +01:00
2026-09-02 11:16:47 +01:00
2026-08-22 16:53:08 +01:00
2026-08-22 16:53:08 +01:00
2026-09-11 09:16:55 +01:00
2026-08-25 10:14:49 +01:00
2026-07-22 14:17:22 +01:00
2026-07-06 11:50:58 +01:00
2026-07-08 12:36:19 +01:00
2026-07-06 11:50:58 +01:00
2026-07-06 11:50:58 +01:00
2026-07-06 11:50:58 +01:00
2026-09-01 21:55:50 +01:00
2026-07-06 11:50:58 +01:00
2026-07-13 10:23:38 +01:00
2026-07-13 10:23:38 +01:00
2026-09-03 20:12:44 +01:00
2026-07-28 08:08:26 +01:00
2026-07-06 11:50:58 +01:00
2026-07-06 11:50:58 +01:00
2026-07-06 11:50:58 +01:00
2026-08-31 16:49:32 +01:00
2026-08-25 11:23:52 +01:00
2026-08-25 11:24:14 +01:00
2026-08-25 11:24:14 +01:00
2026-08-25 11:24:14 +01:00
2026-09-20 22:39:43 +01:00
2026-08-25 11:23:52 +01:00
2026-07-26 10:02:31 +01:00
2026-07-02 10:26:25 +01:00
2026-07-02 10:26:25 +01:00
2026-07-06 11:50:58 +01:00
2026-07-02 10:26:25 +01:00
2026-07-21 08:00:39 +01:00
2026-07-26 10:21:01 +01:00
2026-07-02 10:26:25 +01:00
2026-07-02 10:26:25 +01:00
2026-07-02 10:26:25 +01:00
2026-07-02 10:26:25 +01:00
2026-07-02 10:26:25 +01:00
2026-07-02 10:26:25 +01:00
2026-07-02 10:26:25 +01:00
2026-07-02 10:26:25 +01:00
2026-07-02 10:26:25 +01:00
2026-07-09 09:39:44 +01:00
2026-09-20 22:39:09 +01:00
2026-07-06 11:50:58 +01:00
2026-07-02 10:26:25 +01:00
2026-07-02 10:26:25 +01:00
2026-07-26 10:02:31 +01:00
2026-09-08 09:36:26 +01:00
2026-07-06 11:50:58 +01:00
2026-09-20 08:44:56 +01:00
2026-09-20 09:37:59 +01:00
2026-09-09 10:01:32 +01:00
2026-09-02 11:16:47 +01:00
2026-07-06 11:50:58 +01:00
2026-09-02 11:16:47 +01:00
2026-07-12 20:59:11 +01:00
2026-07-28 14:18:18 +01:00
2026-09-11 09:10:14 +01:00
2026-09-01 20:52:44 +01:00
2026-08-17 08:06:31 +01:00
2026-08-25 11:22:26 +01:00
2026-07-22 20:24:21 +01:00
2026-07-06 11:50:58 +01:00
2026-07-06 11:50:58 +01:00
2026-07-06 11:50:58 +01:00
2026-07-06 11:50:58 +01:00
2026-07-12 22:03:16 +01:00
2026-07-06 11:50:58 +01:00
2026-07-23 08:06:09 +01:00
2026-07-06 11:50:58 +01:00
2026-09-11 11:17:35 +01:00
2026-07-06 11:50:58 +01:00
2026-09-10 12:00:01 +01:00
2026-08-05 08:26:10 +01:00
2026-08-25 10:14:49 +01:00
2026-08-25 10:14:49 +01:00
2026-08-25 10:14:49 +01:00
2026-08-25 10:14:49 +01:00
2026-09-09 08:53:51 +01:00
2026-07-13 10:23:38 +01:00
2026-09-02 11:16:47 +01:00
2026-08-25 10:14:49 +01:00
2026-08-25 10:14:49 +01:00
2026-08-25 10:14:49 +01:00
2026-08-18 08:45:11 +01:00
2026-09-20 09:11:24 +01:00
2026-07-26 16:08:58 +01:00
2026-07-12 23:18:47 +01:00
2026-07-06 11:50:58 +01:00
2026-07-23 10:38:27 +01:00
2026-09-11 11:17:35 +01:00
2026-07-06 11:50:58 +01:00
2026-07-14 22:09:52 +01:00
2026-09-09 09:32:14 +01:00
2026-07-12 22:03:16 +01:00
2026-09-02 08:43:21 +01:00
2026-07-06 11:50:58 +01:00
2026-07-06 11:50:58 +01:00
2026-07-13 07:08:05 +01:00
2026-07-06 11:50:58 +01:00
2026-09-01 22:07:08 +01:00
2026-09-01 20:52:44 +01:00
2026-07-06 11:50:58 +01:00
2026-07-08 09:16:50 +01:00
2026-07-28 08:08:26 +01:00
2026-09-01 20:52:44 +01:00
2026-07-06 11:50:58 +01:00
2026-07-23 08:06:09 +01:00
2026-07-06 11:50:58 +01:00
2026-08-25 10:14:49 +01:00
2026-09-01 22:07:08 +01:00
2026-08-18 08:23:16 +01:00
2026-09-01 20:51:20 +01:00
2026-09-01 20:52:44 +01:00
2026-09-07 13:05:38 +01:00
2026-09-07 13:05:38 +01:00
2026-09-01 21:55:50 +01:00
2026-09-01 20:52:44 +01:00
2026-08-21 10:54:29 +01:00
2026-09-20 08:44:56 +01:00
2026-07-01 18:43:01 +01:00
2026-07-06 11:50:58 +01:00
2026-07-01 18:43:01 +01:00
2026-07-13 10:23:38 +01:00
2026-09-03 22:04:34 +01:00