aboutsummaryrefslogtreecommitdiffstats
path: root/zellij-server/src/tab/layout_applier.rs
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2026-07-31 19:19:49 +0200
committerGitHub <noreply@github.com>2026-07-31 19:19:49 +0200
commit0e6e4404027a187f1399a43bf91bdbd13d9636e1 (patch)
treeb334f14704939620e846caa30ab925fefca34d70 /zellij-server/src/tab/layout_applier.rs
parentfix(build): remove manpage, honor CARGO_TARGET_DIR, add cargo argument passth... (diff)
downloadsl0ppij-0e6e4404027a187f1399a43bf91bdbd13d9636e1.tar.gz
sl0ppij-0e6e4404027a187f1399a43bf91bdbd13d9636e1.tar.xz
sl0ppij-0e6e4404027a187f1399a43bf91bdbd13d9636e1.zip
Support the Kitty Image Protocol (#5428)
* initial implementation - kinda working * tests and fixes * fix bounds * tests and compatibility fixes * fix: cursor scroll, clears, deletes, key tolerance, and host id range * fix: keep images alive across resize, relayout and history scroll * anchor to lines, not pixels * fix image/text alignments * config to allow disabling * fix pinned pane issue * never let host graphics replies reach the keyboard parser * fix nested session * properly handle fullscreening a pane * rustfmt * cleanup of ignored test * add pr
Diffstat (limited to 'zellij-server/src/tab/layout_applier.rs')
-rw-r--r--zellij-server/src/tab/layout_applier.rs9
1 files changed, 9 insertions, 0 deletions
diff --git a/zellij-server/src/tab/layout_applier.rs b/zellij-server/src/tab/layout_applier.rs
index 1c3a604d..44e100a4 100644
--- a/zellij-server/src/tab/layout_applier.rs
+++ b/zellij-server/src/tab/layout_applier.rs
@@ -5,6 +5,7 @@ use crate::tab::{get_next_terminal_position, HoldForCommand, Pane};
use crate::{
os_input_output::ServerOsApi,
+ panes::kitty_graphics::KittyImageStore,
panes::sixel::SixelImageStore,
panes::{FloatingPanes, TiledPanes},
panes::{LinkHandler, PaneId, PluginPane, TerminalPane},
@@ -27,6 +28,7 @@ pub struct LayoutApplier<'a> {
viewport: Rc<RefCell<Viewport>>, // includes all non-UI panes
senders: ThreadSenders,
sixel_image_store: Rc<RefCell<SixelImageStore>>,
+ kitty_image_store: Rc<RefCell<KittyImageStore>>,
link_handler: Rc<RefCell<LinkHandler>>,
terminal_emulator_colors: Rc<RefCell<Palette>>,
terminal_emulator_color_codes: Rc<RefCell<HashMap<usize, String>>>,
@@ -52,6 +54,7 @@ impl<'a> LayoutApplier<'a> {
viewport: &Rc<RefCell<Viewport>>,
senders: &ThreadSenders,
sixel_image_store: &Rc<RefCell<SixelImageStore>>,
+ kitty_image_store: &Rc<RefCell<KittyImageStore>>,
link_handler: &Rc<RefCell<LinkHandler>>,
terminal_emulator_colors: &Rc<RefCell<Palette>>,
terminal_emulator_color_codes: &Rc<RefCell<HashMap<usize, String>>>,
@@ -74,6 +77,7 @@ impl<'a> LayoutApplier<'a> {
let viewport = viewport.clone();
let senders = senders.clone();
let sixel_image_store = sixel_image_store.clone();
+ let kitty_image_store = kitty_image_store.clone();
let link_handler = link_handler.clone();
let terminal_emulator_colors = terminal_emulator_colors.clone();
let terminal_emulator_color_codes = terminal_emulator_color_codes.clone();
@@ -86,6 +90,7 @@ impl<'a> LayoutApplier<'a> {
viewport,
senders,
sixel_image_store,
+ kitty_image_store,
link_handler,
terminal_emulator_colors,
terminal_emulator_color_codes,
@@ -529,6 +534,7 @@ impl<'a> LayoutApplier<'a> {
pane_title,
layout.name.clone().unwrap_or_default(),
self.sixel_image_store.clone(),
+ self.kitty_image_store.clone(),
self.terminal_emulator_colors.clone(),
self.terminal_emulator_color_codes.clone(),
self.link_handler.clone(),
@@ -578,6 +584,7 @@ impl<'a> LayoutApplier<'a> {
pane_title,
floating_pane_layout.name.clone().unwrap_or_default(),
self.sixel_image_store.clone(),
+ self.kitty_image_store.clone(),
self.terminal_emulator_colors.clone(),
self.terminal_emulator_color_codes.clone(),
self.link_handler.clone(),
@@ -634,6 +641,7 @@ impl<'a> LayoutApplier<'a> {
self.link_handler.clone(),
self.character_cell_size.clone(),
self.sixel_image_store.clone(),
+ self.kitty_image_store.clone(),
self.terminal_emulator_colors.clone(),
self.terminal_emulator_color_codes.clone(),
initial_title,
@@ -710,6 +718,7 @@ impl<'a> LayoutApplier<'a> {
self.link_handler.clone(),
self.character_cell_size.clone(),
self.sixel_image_store.clone(),
+ self.kitty_image_store.clone(),
self.terminal_emulator_colors.clone(),
self.terminal_emulator_color_codes.clone(),
initial_title,