aboutsummaryrefslogtreecommitdiff
path: root/src/ghostty/mod.rs
diff options
context:
space:
mode:
authorCan Celik <ogulcancelik@gmail.com>2026-08-13 17:21:26 +0300
committerGitHub <noreply@github.com>2026-08-13 17:21:26 +0300
commitb7dca4bb2a2cf488407ae051b40782f03fcabc62 (patch)
tree12ba75991215634676b49f0feb6eafa1d31ac230 /src/ghostty/mod.rs
parent952729ee03e0939d7a9d893f87f24179cf0eb7cb (diff)
fix(graphics): support high-dpi direct file frames (#2680)
Diffstat (limited to 'src/ghostty/mod.rs')
-rw-r--r--src/ghostty/mod.rs37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/ghostty/mod.rs b/src/ghostty/mod.rs
index 4dead632..cea7c283 100644
--- a/src/ghostty/mod.rs
+++ b/src/ghostty/mod.rs
@@ -3488,6 +3488,43 @@ mod tests {
let _ = std::fs::remove_dir_all(dir);
}
+ #[cfg(unix)]
+ #[test]
+ fn kitty_graphics_file_upload_can_be_placed_later() {
+ let dir = std::env::temp_dir().join(format!(
+ "herdr-kitty-file-upload-test-{}",
+ std::process::id()
+ ));
+ std::fs::create_dir_all(&dir).unwrap();
+ let path = dir.join("pixel.rgba");
+ std::fs::write(&path, [255, 0, 0, 255]).unwrap();
+
+ let mut terminal = Terminal::new(10, 5, 0).unwrap();
+ terminal.enable_kitty_graphics().unwrap();
+ terminal.resize(10, 5, 8, 16).unwrap();
+ let mut upload = Vec::new();
+ crate::kitty_graphics::encode_kitty_regular_file(
+ &mut upload,
+ &[],
+ "a=t,f=32,s=1,v=1,i=10,q=0",
+ path.to_str().unwrap(),
+ );
+ terminal.write(&upload);
+ assert!(terminal.kitty_image_placements().unwrap().is_empty());
+
+ terminal.write(b"\x1b_Ga=p,i=10,p=5,c=10,r=5,C=1,q=2\x1b\\");
+ let placements = terminal.kitty_image_placements().unwrap();
+ assert_eq!(placements.len(), 1);
+ assert_eq!(placements[0].image_id, 10);
+ assert_eq!(placements[0].placement_id, 5);
+ assert_eq!(placements[0].image_width, 1);
+ assert_eq!(placements[0].image_height, 1);
+ assert_eq!(placements[0].format, KittyImageFormat::Rgba);
+ assert_eq!(placements[0].data, [255, 0, 0, 255]);
+
+ let _ = std::fs::remove_dir_all(dir);
+ }
+
#[test]
fn kitty_graphics_unicode_placeholder_placement_is_queryable() {
let mut terminal = Terminal::new(10, 5, 0).unwrap();