Commit Graph

42 Commits

Author SHA1 Message Date
Matsumoto Kotaro
89946ebc07 graphics: make N a transient usage-hints bitmask
Change the graphics protocol N key from a boolean into a usage-hints
bitmask. Define the first bit as a transient hint, allowing the terminal
to treat the image data as short-lived and apply optimizations such as
skipping disk cache writes.

Propagate the transient hint through frame coalescing and composition, so
a composed frame is transient if any contributing frame is transient.
2026-06-19 13:22:01 +09:00
Matsumoto Kotaro
cc2d7a1789 graphics: add memory-only storage for graphics data
Add a new graphics protocol key, N=1, to request that transmitted
image/frame data is kept only in memory and not written to the graphics
disk cache file.

This is useful for transient high-frequency updates such as video-like
streams, where the latest frame is the only useful data and persisting
each frame to the disk cache causes unnecessary write traffic.

The implementation keeps the existing graphics cache abstraction intact:
memory-only entries can still be read back by animation, composition, and
frame coalescing paths. Only persistence to the disk cache file is skipped.

The default behavior is unchanged when N is omitted or set to zero.
2026-05-30 18:46:24 +09:00
Kovid Goyal
3d8a2fbb4f Use SIMD base64 everywhere 2026-04-21 11:56:55 +05:30
Kovid Goyal
744ad7438c Use SIMD base64 encoding for graphics transmission 2026-04-21 10:01:28 +05:30
Kovid Goyal
1d19942811 Store more metadata about pixel data shape when serializing 2025-11-15 12:23:56 +05:30
Kovid Goyal
d19fc375ba Switch to external shm package 2025-11-10 12:01:05 +05:30
Kovid Goyal
1e6d67b975 Update to the latest version of imaging
Gives us a bunch of new features and allows us to move a bunch of code
into imaging
2025-11-06 22:31:31 +05:30
Kovid Goyal
f067e9cd92 Make various goroutines panic-safe 2025-10-09 07:17:53 +05:30
Kovid Goyal
c861259e3b Rename go module from kitty -> github.com/kovidgoyal/kitty
Makes the code more easily re-useable in other projects
2025-05-16 08:43:39 +05:30
Kovid Goyal
405f5ce148 Use stdlib maps/slices 2024-06-24 07:54:13 +05:30
Kovid Goyal
c19488f3be Graphics protocol: Add a new delete mode for deleting images whose ids fall within a range
Useful for bulk deletion. See #7080
2024-02-25 09:57:44 +05:30
Kovid Goyal
93430cd5f4 Images benchmark should not measure speed of zlib 2024-02-25 09:57:29 +05:30
Kovid Goyal
47a493c090 Increase chunk size for graphics protocol since the VT parser now supports it 2024-02-25 09:57:25 +05:30
Kovid Goyal
38be3e98a1 More linter fixes 2023-09-24 09:16:27 +05:30
Kovid Goyal
54a1cfc380 Autogen enum <-> string boilerplate for Go 2023-05-28 11:48:32 +05:30
Kovid Goyal
5e6d020275 Show proper error message in diff when failing to load image 2023-05-24 22:47:14 +05:30
Kovid Goyal
5b199b28c3 Fix a panic when failing to load some images in a diff 2023-05-24 22:41:51 +05:30
Kovid Goyal
9919767aef Remove unused code 2023-03-30 10:26:39 +05:30
Kovid Goyal
94db6053d5 Turn off atomic update during direct transmission 2023-03-27 20:54:03 +05:30
Kovid Goyal
fb9d95038d Free images in kitty when quitting diff kitten 2023-03-27 11:13:04 +05:30
Kovid Goyal
a3f1d3e132 Get image display working 2023-03-27 11:00:21 +05:30
Kovid Goyal
d66da811db More work on getting images to display in diff 2023-03-27 07:53:57 +05:30
Kovid Goyal
cece795b16 More work on image support for diff 2023-03-27 07:53:57 +05:30
Kovid Goyal
9eedcc1d2a Better struct name 2023-03-27 07:53:57 +05:30
Kovid Goyal
508a61bd1c More work on diffing images 2023-03-27 07:53:57 +05:30
Kovid Goyal
defac0c061 Implement automatic tmux passthrough for icat 2023-03-04 13:01:23 +05:30
Kovid Goyal
1218a152bf Implement unicode placeholders in icat 2023-03-04 11:54:22 +05:30
Kovid Goyal
5eaa935ede icat: Dont try to further compress PNG images when using stream based transmission 2023-02-01 11:45:01 +05:30
Kovid Goyal
092dc3d01f ... 2023-02-01 11:28:52 +05:30
Kovid Goyal
5c0d477a18 icat kitten: Fix transmission of frame data in direct mode
Sometimes frame data is > 2048 but does not compress smaller, which
broke the if statement checking for first loop.

Fixes #5958
2023-02-01 10:51:59 +05:30
Kovid Goyal
c317c934f3 More work on ImageMagick 2023-01-05 19:15:13 +05:30
Kovid Goyal
73a055fe12 Fix failing test 2023-01-05 19:15:12 +05:30
Kovid Goyal
24db38ba7e Set data size for SHM transmission as on some platforms the actual SHM size is not equal to the requested size 2023-01-05 19:15:11 +05:30
Kovid Goyal
d694f48c91 Get the other two transmission modes working as well 2023-01-05 19:15:11 +05:30
Kovid Goyal
5562a4d52f Get file mode transmission working for unmodified PNG 2023-01-05 19:15:11 +05:30
Kovid Goyal
7a1140cd03 Start work on porting icat to Go 2023-01-05 19:15:10 +05:30
Kovid Goyal
40093a4702 Add tests for GraphicsCommand serialization 2022-12-18 11:56:30 +05:30
Kovid Goyal
3815cba8f3 Add stringer interface to GraphicsCommand 2022-12-17 15:34:43 +05:30
Kovid Goyal
7410cd62f9 remove unused code 2022-12-17 09:00:44 +05:30
Kovid Goyal
ae0a8e73d2 ... 2022-12-17 08:59:56 +05:30
Kovid Goyal
8f3a8c828f Add an APC to GraphicsCommand parser 2022-12-16 21:05:17 +05:30
Kovid Goyal
bb33f6c0ac Start work on graphics support in kitty-tool 2022-12-16 18:06:52 +05:30