feat: add per-pane default foreground/background color support (#4737)

* feat: add per-pane default foreground/background color support

Add per-pane default foreground and background colors, configurable
through four surfaces:

- OSC 10/11 escape sequences (set/query) and OSC 110/111 (reset)
- CLI action: zellij action set-pane-color --pane-id <id> --fg/--bg
- Layout config: default_fg/default_bg properties on pane nodes
- Plugin API: set_pane_color() SDK function and PaneInfo read-side

Colors are applied at render time as a fallback when cells have no
explicit foreground/background, without mutating stored grid data.

Closes #4712

* refactor: address review feedback for pane color support

- Extract adjust_styles_for_custom_bg_fg in output/mod.rs
- Move color parsing (xparse_color) from tab into Grid
- Move color serialization (ansi_code_to_color_string) into Grid
- Pane trait now uses Option<String> for color getters/setters
- Add colors to session serialization (dump-layout)
- Add default_fg/default_bg to protobuf IPC schema to fix
  layout-in-session color loss
- Update example layout with tab-bar and status-bar

* fix stack overflow and ordering

* rustfmt

* update e2e snapshots

---------

Co-authored-by: Karl Bunch <[email protected]>
Co-authored-by: Aram Drevekenin <[email protected]>
This commit is contained in:
Karl Bunch
2026-03-04 14:26:26 +01:00
committed by GitHub
co-authored by Karl Bunch Aram Drevekenin
parent d7a5de9eae
commit f77cdec298
84 changed files with 1825 additions and 163 deletions
+3
View File
@@ -88,6 +88,8 @@ Each node has following fields:
* __plugin: /path/to/plugin.wasm__ - optional path to a compiled Zellij plugin.
If indicated loads a plugin into the created space. For more information see
PLUGINS section.
* __default_fg: \<color\>__ - set the default foreground color for a pane (e.g. `"#00e000"`).
* __default_bg: \<color\>__ - set the default background color for a pane (e.g. `"#001a3a"`).
KEYBINDINGS
===========
@@ -176,6 +178,7 @@ ACTIONS
on the current tab and normal mode.
* __UndoRenameTab__ - undoes the changed tab name and reverts to the previous name.
* __UndoRenamePane__ - undoes the changed pane name and reverts to the previous name.
* __SetPaneColor__ - sets the default foreground and/or background color of a pane.
KEYS
+13
View File
@@ -0,0 +1,13 @@
layout {
pane size=1 borderless=true {
plugin location="tab-bar"
}
pane split_direction="Vertical" {
pane name="dark-blue-bg" default_bg="#001a3a"
pane name="green-on-black" default_fg="#00e000" default_bg="#0a0a0a"
}
pane name="default-colors"
pane size=1 borderless=true {
plugin location="status-bar"
}
}
+2 -2
View File
@@ -21,8 +21,8 @@ fn main() {
{
let config = Config::try_from(&opts).ok();
if let Some(Command::Sessions(Sessions::Action(cli_action))) = opts.command {
commands::send_action_to_session(cli_action, opts.session, config);
if let Some(Command::Action(cli_action)) = opts.command {
commands::send_action_to_session(*cli_action, opts.session, config);
std::process::exit(0);
}
if let Some(Command::Sessions(Sessions::Run {
+3
View File
@@ -77,6 +77,7 @@ pub fn build(sh: &Shell, flags: flags::Build) -> anyhow::Result<()> {
}
}
}
proto_files.sort();
if needs_regeneration {
prost
.compile_protos(&proto_files, &[protobuf_source_dir])
@@ -122,6 +123,7 @@ pub fn build(sh: &Shell, flags: flags::Build) -> anyhow::Result<()> {
}
}
}
proto_files.sort();
if needs_regeneration {
prost
.compile_protos(&proto_files, &[client_server_contract_dir])
@@ -166,6 +168,7 @@ pub fn build(sh: &Shell, flags: flags::Build) -> anyhow::Result<()> {
}
}
}
proto_files.sort();
if needs_regeneration {
prost
.compile_protos(&proto_files, &[web_server_contract_dir])
+52 -10
View File
@@ -61,6 +61,27 @@ fn adjust_styles_for_possible_selection(
.unwrap_or(character_styles)
}
fn adjust_styles_for_custom_bg_fg(
character_styles: CharacterStyles,
pane_default_fg: Option<AnsiCode>,
pane_default_bg: Option<AnsiCode>,
) -> CharacterStyles {
let mut character_styles = character_styles;
if character_styles.foreground.is_none() || character_styles.foreground == Some(AnsiCode::Reset)
{
if let Some(fg) = pane_default_fg {
character_styles.foreground = Some(fg);
}
}
if character_styles.background.is_none() || character_styles.background == Some(AnsiCode::Reset)
{
if let Some(bg) = pane_default_bg {
character_styles.background = Some(bg);
}
}
character_styles
}
fn write_changed_styles(
character_styles: &mut CharacterStyles,
current_character_styles: CharacterStyles,
@@ -113,6 +134,8 @@ fn serialize_chunks_with_newlines(
}
let chunk_changed_colors = character_chunk.changed_colors();
let pane_default_fg = character_chunk.pane_default_fg;
let pane_default_bg = character_chunk.pane_default_bg;
let mut character_styles = DEFAULT_STYLES.enable_styled_underlines(styled_underlines);
vte_output.push_str("\n\r");
let mut chunk_width = character_chunk.x;
@@ -124,11 +147,15 @@ fn serialize_chunks_with_newlines(
}
}
let current_character_styles = adjust_styles_for_possible_selection(
character_chunk.selection_and_colors(),
*t_character.styles,
character_chunk.y,
chunk_width,
let current_character_styles = adjust_styles_for_custom_bg_fg(
adjust_styles_for_possible_selection(
character_chunk.selection_and_colors(),
*t_character.styles,
character_chunk.y,
chunk_width,
),
pane_default_fg,
pane_default_bg,
);
write_changed_styles(
&mut character_styles,
@@ -171,6 +198,8 @@ fn serialize_chunks(
}
let chunk_changed_colors = character_chunk.changed_colors();
let pane_default_fg = character_chunk.pane_default_fg;
let pane_default_bg = character_chunk.pane_default_bg;
let mut character_styles = DEFAULT_STYLES.enable_styled_underlines(styled_underlines);
vte_goto_instruction(character_chunk.x, character_chunk.y, &mut vte_output)
.with_context(err_context)?;
@@ -183,11 +212,15 @@ fn serialize_chunks(
}
}
let current_character_styles = adjust_styles_for_possible_selection(
character_chunk.selection_and_colors(),
*t_character.styles,
character_chunk.y,
chunk_width,
let current_character_styles = adjust_styles_for_custom_bg_fg(
adjust_styles_for_possible_selection(
character_chunk.selection_and_colors(),
*t_character.styles,
character_chunk.y,
chunk_width,
),
pane_default_fg,
pane_default_bg,
);
write_changed_styles(
&mut character_styles,
@@ -745,6 +778,9 @@ impl FloatingPanesStack {
let right_chunk_x = pane_right_edge + 1;
let mut left_chunk =
CharacterChunk::new(left_chunk_characters, left_chunk_x, c_chunk.y);
left_chunk.pane_default_fg = c_chunk.pane_default_fg;
left_chunk.pane_default_bg = c_chunk.pane_default_bg;
left_chunk.changed_colors = c_chunk.changed_colors;
if !c_chunk.selection_and_colors.is_empty() {
left_chunk.selection_and_colors = c_chunk.selection_and_colors.clone();
}
@@ -947,6 +983,8 @@ pub struct CharacterChunk {
pub y: usize,
pub changed_colors: Option<[Option<AnsiCode>; 256]>,
selection_and_colors: Vec<(Selection, AnsiCode, Option<AnsiCode>)>, // Selection, background color, optional foreground color
pub pane_default_fg: Option<AnsiCode>,
pub pane_default_bg: Option<AnsiCode>,
}
#[derive(Debug, Clone, Copy, Default)]
@@ -990,6 +1028,10 @@ impl CharacterChunk {
pub fn add_changed_colors(&mut self, changed_colors: Option<[Option<AnsiCode>; 256]>) {
self.changed_colors = changed_colors;
}
pub fn add_pane_defaults(&mut self, fg: Option<AnsiCode>, bg: Option<AnsiCode>) {
self.pane_default_fg = fg;
self.pane_default_bg = bg;
}
pub fn changed_colors(&self) -> Option<[Option<AnsiCode>; 256]> {
self.changed_colors
}
@@ -1,5 +1,6 @@
use super::super::{CharacterChunk, FloatingPanesStack, Output, OutputBuffer, SixelImageChunk};
use crate::panes::sixel::SixelImageStore;
use crate::panes::terminal_character::AnsiCode;
use crate::panes::{LinkHandler, Row, TerminalCharacter};
use crate::ClientId;
use std::cell::RefCell;
@@ -1033,3 +1034,80 @@ fn test_output_buffer_changed_chunks_in_viewport_partial() {
assert_eq!(chunks[1].y, 5, "Second chunk should be at line 5");
assert_eq!(chunks[2].y, 7, "Third chunk should be at line 7");
}
#[test]
fn test_pane_defaults_preserved_when_middle_covered() {
let pane_geom = create_pane_geom(5, 5, 3, 1);
let stack = FloatingPanesStack {
layers: vec![pane_geom],
};
let pane_bg = Some(AnsiCode::RgbCode((0, 26, 58)));
let pane_fg = Some(AnsiCode::RgbCode((0, 224, 0)));
let mut chunk = create_character_chunk_from_str("0123456789", 0, 5);
chunk.pane_default_bg = pane_bg;
chunk.pane_default_fg = pane_fg;
let visible = stack
.visible_character_chunks(vec![chunk], Some(0))
.unwrap();
assert_eq!(visible.len(), 2, "Middle split should produce two chunks");
for (i, chunk) in visible.iter().enumerate() {
assert_eq!(
chunk.pane_default_bg, pane_bg,
"Chunk {i} should preserve pane_default_bg"
);
assert_eq!(
chunk.pane_default_fg, pane_fg,
"Chunk {i} should preserve pane_default_fg"
);
}
}
#[test]
fn test_pane_defaults_preserved_when_left_covered() {
let pane_geom = create_pane_geom(0, 5, 5, 1);
let stack = FloatingPanesStack {
layers: vec![pane_geom],
};
let pane_bg = Some(AnsiCode::RgbCode((0, 26, 58)));
let mut chunk = create_character_chunk_from_str("0123456789", 0, 5);
chunk.pane_default_bg = pane_bg;
let visible = stack
.visible_character_chunks(vec![chunk], Some(0))
.unwrap();
assert_eq!(visible.len(), 1, "Left-covered should produce one chunk");
assert_eq!(
visible[0].pane_default_bg, pane_bg,
"Remaining chunk should preserve pane_default_bg"
);
}
#[test]
fn test_pane_defaults_preserved_when_right_covered() {
let pane_geom = create_pane_geom(5, 5, 10, 1);
let stack = FloatingPanesStack {
layers: vec![pane_geom],
};
let pane_bg = Some(AnsiCode::RgbCode((0, 26, 58)));
let mut chunk = create_character_chunk_from_str("0123456789", 0, 5);
chunk.pane_default_bg = pane_bg;
let visible = stack
.visible_character_chunks(vec![chunk], Some(0))
.unwrap();
assert_eq!(visible.len(), 1, "Right-covered should produce one chunk");
assert_eq!(
visible[0].pane_default_bg, pane_bg,
"Remaining chunk should preserve pane_default_bg"
);
}
+65 -23
View File
@@ -404,6 +404,31 @@ pub struct Grid {
// disabled by user config?
click: Click,
hyperlink_tracker: HyperlinkTracker,
pub pane_default_fg: Option<AnsiCode>,
pub pane_default_bg: Option<AnsiCode>,
}
impl Grid {
pub fn set_pane_default_colors(&mut self, fg: Option<String>, bg: Option<String>) {
self.pane_default_fg = fg.as_ref().and_then(|s| xparse_color(s.as_bytes()));
self.pane_default_bg = bg.as_ref().and_then(|s| xparse_color(s.as_bytes()));
self.output_buffer.update_all_lines();
}
pub fn get_pane_default_color_strings(&self) -> (Option<String>, Option<String>) {
(
self.pane_default_fg.and_then(ansi_code_to_color_string),
self.pane_default_bg.and_then(ansi_code_to_color_string),
)
}
}
fn ansi_code_to_color_string(code: AnsiCode) -> Option<String> {
match code {
AnsiCode::RgbCode((r, g, b)) => Some(format!("#{:02x}{:02x}{:02x}", r, g, b)),
AnsiCode::ColorIndex(idx) => Some(format!("{}", idx)),
AnsiCode::NamedColor(named) => Some(format!("{:?}", named).to_lowercase()),
_ => None,
}
}
const CLICK_TIME_THRESHOLD: u128 = 400; // Doherty Threshold
@@ -594,6 +619,8 @@ impl Grid {
explicitly_disable_kitty_keyboard_protocol,
click: Click::default(),
hyperlink_tracker: HyperlinkTracker::new(),
pane_default_fg: None,
pane_default_bg: None,
}
}
pub fn render_full_viewport(&mut self) {
@@ -1174,6 +1201,7 @@ impl Grid {
let (mut character_chunks, sixel_image_chunks) = self.read_changes(content_x, content_y);
for character_chunk in character_chunks.iter_mut() {
character_chunk.add_changed_colors(self.changed_colors);
character_chunk.add_pane_defaults(self.pane_default_fg, self.pane_default_bg);
if self
.selection
.contains_row(character_chunk.y.saturating_sub(content_y))
@@ -1814,6 +1842,8 @@ impl Grid {
self.cursor_is_hidden = false;
self.supports_kitty_keyboard_protocol = false;
self.set_scroll_region_to_viewport_size();
self.pane_default_fg = None;
self.pane_default_bg = None;
if let Some(images_to_reap) = self.sixel_grid.clear() {
self.sixel_grid.reap_images(images_to_reap);
}
@@ -2702,34 +2732,44 @@ impl Perform for Grid {
if params.len() >= 2 {
if let Some(mut dynamic_code) = parse_number(params[0]) {
for param in &params[1..] {
// currently only getting the color sequence is supported,
// setting still isn't
if param == b"?" {
let saved_terminal_color = if dynamic_code == 10 {
Some(self.terminal_emulator_colors.borrow().fg)
// Query: respond with pane default if set, else terminal default
let color_rgb = if dynamic_code == 10 {
match self.pane_default_fg {
Some(AnsiCode::RgbCode((r, g, b))) => Some((r, g, b)),
_ => match self.terminal_emulator_colors.borrow().fg {
PaletteColor::Rgb((r, g, b)) => Some((r, g, b)),
_ => None,
},
}
} else if dynamic_code == 11 {
Some(self.terminal_emulator_colors.borrow().bg)
match self.pane_default_bg {
Some(AnsiCode::RgbCode((r, g, b))) => Some((r, g, b)),
_ => match self.terminal_emulator_colors.borrow().bg {
PaletteColor::Rgb((r, g, b)) => Some((r, g, b)),
_ => None,
},
}
} else {
None
};
let color_response_message = match saved_terminal_color {
Some(PaletteColor::Rgb((r, g, b))) => {
format!(
"\u{1b}]{};rgb:{1:02x}{1:02x}/{2:02x}{2:02x}/{3:02x}{3:02x}{4}",
// dynamic_code, color.r, color.g, color.b, terminator
dynamic_code, r, g, b, terminator
)
},
_ => {
format!(
"\u{1b}]{};rgb:{1:02x}{1:02x}/{2:02x}{2:02x}/{3:02x}{3:02x}{4}",
// dynamic_code, color.r, color.g, color.b, terminator
dynamic_code, 0, 0, 0, terminator
)
},
};
let (r, g, b) = color_rgb.unwrap_or((0, 0, 0));
let color_response_message = format!(
"\u{1b}]{};rgb:{1:02x}{1:02x}/{2:02x}{2:02x}/{3:02x}{3:02x}{4}",
dynamic_code, r, g, b, terminator
);
self.pending_messages_to_pty
.push(color_response_message.as_bytes().to_vec());
} else {
// Set: parse color and store as pane default
if let Some(color) = xparse_color(param) {
if dynamic_code == 10 {
self.pane_default_fg = Some(color);
} else if dynamic_code == 11 {
self.pane_default_bg = Some(color);
}
self.output_buffer.update_all_lines();
}
}
dynamic_code += 1;
}
@@ -2813,12 +2853,14 @@ impl Perform for Grid {
// Reset foreground color.
b"110" => {
// TBD - reset foreground color - currently unimplemented
self.pane_default_fg = None;
self.output_buffer.update_all_lines();
},
// Reset background color.
b"111" => {
// TBD - reset background color - currently unimplemented
self.pane_default_bg = None;
self.output_buffer.update_all_lines();
},
// Reset text cursor color.
+7
View File
@@ -317,6 +317,13 @@ impl Pane for TerminalPane {
fn set_selectable(&mut self, selectable: bool) {
self.selectable = selectable;
}
fn set_pane_default_colors(&mut self, fg: Option<String>, bg: Option<String>) {
self.grid.set_pane_default_colors(fg, bg);
self.set_should_render(true);
}
fn get_pane_default_colors(&self) -> (Option<String>, Option<String>) {
self.grid.get_pane_default_color_strings()
}
fn render(
&mut self,
_client_id: Option<ClientId>,
+194
View File
@@ -4362,3 +4362,197 @@ fn single_click_drag_selection_preserved_after_scroll() {
assert_eq!(grid.selection.start.column, start_before.column);
assert_eq!(grid.selection.end.column, end_before.column);
}
#[test]
fn osc_11_set_and_query_pane_default_bg() {
use crate::panes::terminal_character::AnsiCode;
let mut vte_parser = vte::Parser::new();
let sixel_image_store = Rc::new(RefCell::new(SixelImageStore::default()));
let terminal_emulator_color_codes = Rc::new(RefCell::new(HashMap::new()));
let mut grid = Grid::new(
10,
20,
Rc::new(RefCell::new(Palette::default())),
terminal_emulator_color_codes,
Rc::new(RefCell::new(LinkHandler::new())),
Rc::new(RefCell::new(None)),
sixel_image_store,
Style::default(),
false,
true,
true,
true,
false,
);
// Set background via OSC 11
let set_bg = b"\x1b]11;#001a3a\x07";
for byte in set_bg.iter() {
vte_parser.advance(&mut grid, *byte);
}
assert_eq!(grid.pane_default_bg, Some(AnsiCode::RgbCode((0, 26, 58))));
// Query background via OSC 11
let query_bg = b"\x1b]11;?\x07";
for byte in query_bg.iter() {
vte_parser.advance(&mut grid, *byte);
}
assert_eq!(grid.pending_messages_to_pty.len(), 1);
let response = String::from_utf8(grid.pending_messages_to_pty[0].clone()).unwrap();
assert!(
response.contains("11;rgb:0000/1a1a/3a3a"),
"Response was: {}",
response
);
}
#[test]
fn osc_10_set_and_query_pane_default_fg() {
use crate::panes::terminal_character::AnsiCode;
let mut vte_parser = vte::Parser::new();
let sixel_image_store = Rc::new(RefCell::new(SixelImageStore::default()));
let terminal_emulator_color_codes = Rc::new(RefCell::new(HashMap::new()));
let mut grid = Grid::new(
10,
20,
Rc::new(RefCell::new(Palette::default())),
terminal_emulator_color_codes,
Rc::new(RefCell::new(LinkHandler::new())),
Rc::new(RefCell::new(None)),
sixel_image_store,
Style::default(),
false,
true,
true,
true,
false,
);
// Set foreground via OSC 10
let set_fg = b"\x1b]10;#00e000\x07";
for byte in set_fg.iter() {
vte_parser.advance(&mut grid, *byte);
}
assert_eq!(grid.pane_default_fg, Some(AnsiCode::RgbCode((0, 224, 0))));
// Query foreground via OSC 10
let query_fg = b"\x1b]10;?\x07";
for byte in query_fg.iter() {
vte_parser.advance(&mut grid, *byte);
}
assert_eq!(grid.pending_messages_to_pty.len(), 1);
let response = String::from_utf8(grid.pending_messages_to_pty[0].clone()).unwrap();
assert!(
response.contains("10;rgb:0000/e0e0/0000"),
"Response was: {}",
response
);
}
#[test]
fn osc_110_111_reset_pane_default_colors() {
use crate::panes::terminal_character::AnsiCode;
let mut vte_parser = vte::Parser::new();
let sixel_image_store = Rc::new(RefCell::new(SixelImageStore::default()));
let terminal_emulator_color_codes = Rc::new(RefCell::new(HashMap::new()));
let mut grid = Grid::new(
10,
20,
Rc::new(RefCell::new(Palette::default())),
terminal_emulator_color_codes,
Rc::new(RefCell::new(LinkHandler::new())),
Rc::new(RefCell::new(None)),
sixel_image_store,
Style::default(),
false,
true,
true,
true,
false,
);
// Set both fg and bg
let set_fg = b"\x1b]10;#00e000\x07";
for byte in set_fg.iter() {
vte_parser.advance(&mut grid, *byte);
}
let set_bg = b"\x1b]11;#001a3a\x07";
for byte in set_bg.iter() {
vte_parser.advance(&mut grid, *byte);
}
assert_eq!(grid.pane_default_fg, Some(AnsiCode::RgbCode((0, 224, 0))));
assert_eq!(grid.pane_default_bg, Some(AnsiCode::RgbCode((0, 26, 58))));
// Reset foreground via OSC 110
let reset_fg = b"\x1b]110\x07";
for byte in reset_fg.iter() {
vte_parser.advance(&mut grid, *byte);
}
assert_eq!(grid.pane_default_fg, None);
assert_eq!(grid.pane_default_bg, Some(AnsiCode::RgbCode((0, 26, 58))));
// Reset background via OSC 111
let reset_bg = b"\x1b]111\x07";
for byte in reset_bg.iter() {
vte_parser.advance(&mut grid, *byte);
}
assert_eq!(grid.pane_default_fg, None);
assert_eq!(grid.pane_default_bg, None);
}
#[test]
fn osc_11_set_bg_produces_ansi_in_render_output() {
use crate::panes::terminal_character::AnsiCode;
let mut vte_parser = vte::Parser::new();
let sixel_image_store = Rc::new(RefCell::new(SixelImageStore::default()));
let terminal_emulator_color_codes = Rc::new(RefCell::new(HashMap::new()));
let mut grid = Grid::new(
5,
10,
Rc::new(RefCell::new(Palette::default())),
terminal_emulator_color_codes,
Rc::new(RefCell::new(LinkHandler::new())),
Rc::new(RefCell::new(None)),
sixel_image_store,
Style::default(),
false,
true,
true,
true,
false,
);
// Set background via OSC 11
let set_bg = b"\x1b]11;#001a3a\x07";
for byte in set_bg.iter() {
vte_parser.advance(&mut grid, *byte);
}
assert_eq!(grid.pane_default_bg, Some(AnsiCode::RgbCode((0, 26, 58))));
// Render the grid and check that the pane defaults are stamped on chunks
let style = Style::default();
let render_result = grid.render(0, 0, &style).unwrap();
assert!(render_result.is_some(), "Expected render output");
let (chunks, _, _) = render_result.unwrap();
assert!(!chunks.is_empty(), "Expected at least one character chunk");
// All chunks should carry the pane default bg
for chunk in &chunks {
assert_eq!(
chunk.pane_default_bg,
Some(AnsiCode::RgbCode((0, 26, 58))),
"Chunk should carry pane default background"
);
}
}
@@ -26,6 +26,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -42,6 +44,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -55,6 +59,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
),
[],
@@ -26,6 +26,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -42,6 +44,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -55,6 +59,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
),
[],
@@ -29,6 +29,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -66,6 +68,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -79,6 +83,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
floating_layouts: [],
swap_tiled_layouts: Some(
@@ -114,6 +120,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -132,6 +140,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -145,6 +155,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -158,6 +170,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -195,6 +209,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -208,6 +224,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
MaxPanes(
7,
@@ -240,6 +258,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -260,6 +280,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -276,6 +298,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -292,6 +316,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -308,6 +334,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -321,6 +349,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -334,6 +364,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -347,6 +379,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -384,6 +418,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -397,6 +433,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
MaxPanes(
11,
@@ -429,6 +467,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -449,6 +489,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -465,6 +507,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -481,6 +525,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -497,6 +543,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -510,6 +558,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -530,6 +580,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -546,6 +598,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -562,6 +616,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -578,6 +634,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -591,6 +649,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -604,6 +664,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -617,6 +679,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -654,6 +718,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -667,6 +733,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
},
Some(
@@ -700,6 +768,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -716,6 +786,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -729,6 +801,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -766,6 +840,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -779,6 +855,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
MaxPanes(
7,
@@ -811,6 +889,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Vertical,
@@ -831,6 +911,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -847,6 +929,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -863,6 +947,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -879,6 +965,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -892,6 +980,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -905,6 +995,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -918,6 +1010,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -955,6 +1049,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -968,6 +1064,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
MaxPanes(
11,
@@ -1000,6 +1098,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Vertical,
@@ -1020,6 +1120,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -1036,6 +1138,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -1052,6 +1156,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -1068,6 +1174,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -1081,6 +1189,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Vertical,
@@ -1101,6 +1211,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -1117,6 +1229,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -1133,6 +1247,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -1149,6 +1265,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -1162,6 +1280,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -1175,6 +1295,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -1188,6 +1310,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -1225,6 +1349,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -1238,6 +1364,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
},
Some(
@@ -1275,6 +1403,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -1293,6 +1423,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -1306,6 +1438,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -1319,6 +1453,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -1356,6 +1492,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -1369,6 +1507,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
},
Some(
@@ -1421,6 +1561,8 @@ Some(
already_running: false,
pane_initial_contents: None,
logical_position: None,
default_fg: None,
default_bg: None,
},
FloatingPaneLayout {
name: None,
@@ -1451,6 +1593,8 @@ Some(
already_running: false,
pane_initial_contents: None,
logical_position: None,
default_fg: None,
default_bg: None,
},
FloatingPaneLayout {
name: None,
@@ -1481,6 +1625,8 @@ Some(
already_running: false,
pane_initial_contents: None,
logical_position: None,
default_fg: None,
default_bg: None,
},
FloatingPaneLayout {
name: None,
@@ -1511,6 +1657,8 @@ Some(
already_running: false,
pane_initial_contents: None,
logical_position: None,
default_fg: None,
default_bg: None,
},
FloatingPaneLayout {
name: None,
@@ -1541,6 +1689,8 @@ Some(
already_running: false,
pane_initial_contents: None,
logical_position: None,
default_fg: None,
default_bg: None,
},
FloatingPaneLayout {
name: None,
@@ -1571,6 +1721,8 @@ Some(
already_running: false,
pane_initial_contents: None,
logical_position: None,
default_fg: None,
default_bg: None,
},
FloatingPaneLayout {
name: None,
@@ -1601,6 +1753,8 @@ Some(
already_running: false,
pane_initial_contents: None,
logical_position: None,
default_fg: None,
default_bg: None,
},
FloatingPaneLayout {
name: None,
@@ -1631,6 +1785,8 @@ Some(
already_running: false,
pane_initial_contents: None,
logical_position: None,
default_fg: None,
default_bg: None,
},
FloatingPaneLayout {
name: None,
@@ -1661,6 +1817,8 @@ Some(
already_running: false,
pane_initial_contents: None,
logical_position: None,
default_fg: None,
default_bg: None,
},
FloatingPaneLayout {
name: None,
@@ -1691,6 +1849,8 @@ Some(
already_running: false,
pane_initial_contents: None,
logical_position: None,
default_fg: None,
default_bg: None,
},
],
},
@@ -1724,6 +1884,8 @@ Some(
already_running: false,
pane_initial_contents: None,
logical_position: None,
default_fg: None,
default_bg: None,
},
],
MaxPanes(
@@ -1754,6 +1916,8 @@ Some(
already_running: false,
pane_initial_contents: None,
logical_position: None,
default_fg: None,
default_bg: None,
},
FloatingPaneLayout {
name: None,
@@ -1780,6 +1944,8 @@ Some(
already_running: false,
pane_initial_contents: None,
logical_position: None,
default_fg: None,
default_bg: None,
},
],
MaxPanes(
@@ -1810,6 +1976,8 @@ Some(
already_running: false,
pane_initial_contents: None,
logical_position: None,
default_fg: None,
default_bg: None,
},
FloatingPaneLayout {
name: None,
@@ -1836,6 +2004,8 @@ Some(
already_running: false,
pane_initial_contents: None,
logical_position: None,
default_fg: None,
default_bg: None,
},
FloatingPaneLayout {
name: None,
@@ -1862,6 +2032,8 @@ Some(
already_running: false,
pane_initial_contents: None,
logical_position: None,
default_fg: None,
default_bg: None,
},
],
MaxPanes(
@@ -1896,6 +2068,8 @@ Some(
already_running: false,
pane_initial_contents: None,
logical_position: None,
default_fg: None,
default_bg: None,
},
FloatingPaneLayout {
name: None,
@@ -1926,6 +2100,8 @@ Some(
already_running: false,
pane_initial_contents: None,
logical_position: None,
default_fg: None,
default_bg: None,
},
FloatingPaneLayout {
name: None,
@@ -1956,6 +2132,8 @@ Some(
already_running: false,
pane_initial_contents: None,
logical_position: None,
default_fg: None,
default_bg: None,
},
FloatingPaneLayout {
name: None,
@@ -1986,6 +2164,8 @@ Some(
already_running: false,
pane_initial_contents: None,
logical_position: None,
default_fg: None,
default_bg: None,
},
],
},
@@ -596,6 +596,9 @@ fn host_run_plugin_command(mut caller: Caller<'_, PluginEnv>) {
PluginCommand::SetPaneBorderless(pane_id, borderless) => {
set_pane_borderless(env, pane_id.into(), borderless)
},
PluginCommand::SetPaneColor(pane_id, fg, bg) => {
set_pane_color(env, pane_id.into(), fg, bg)
},
PluginCommand::OpenFileNearPlugin(file_to_open, context) => {
open_file_near_plugin(env, file_to_open, context)
},
@@ -3602,6 +3605,12 @@ fn set_pane_borderless(env: &PluginEnv, pane_id: PaneId, borderless: bool) {
));
}
fn set_pane_color(env: &PluginEnv, pane_id: PaneId, fg: Option<String>, bg: Option<String>) {
let _ = env
.senders
.send_to_screen(ScreenInstruction::SetPaneColor(pane_id, fg, bg, None));
}
fn scan_host_folder(env: &PluginEnv, folder_to_scan: PathBuf) {
if !folder_to_scan.starts_with("/host") {
log::error!(
@@ -5061,6 +5070,7 @@ fn check_command_permission(
| PluginCommand::ChangeFloatingPanesCoordinates(..)
| PluginCommand::TogglePaneBorderless(..)
| PluginCommand::SetPaneBorderless(..)
| PluginCommand::SetPaneColor(..)
| PluginCommand::GroupAndUngroupPanes(..)
| PluginCommand::HighlightAndUnhighlightPanes(..)
| PluginCommand::CloseMultiplePanes(..)
+10
View File
@@ -277,6 +277,16 @@ pub(crate) fn route_action(
))
.with_context(err_context)?;
},
Action::SetPaneColor { pane_id, fg, bg } => {
senders
.send_to_screen(ScreenInstruction::SetPaneColor(
pane_id.into(),
fg,
bg,
Some(NotificationEnd::new(completion_tx)),
))
.with_context(err_context)?;
},
Action::SwitchToMode { input_mode } => {
let attrs = &client_attributes;
senders
+23
View File
@@ -600,6 +600,12 @@ pub enum ScreenInstruction {
ResizePaneWithId(ResizeStrategy, PaneId),
EditScrollbackForPaneWithId(PaneId, Option<NotificationEnd>),
WriteToPaneId(Vec<u8>, PaneId, Option<NotificationEnd>),
SetPaneColor(
PaneId,
Option<String>,
Option<String>,
Option<NotificationEnd>,
),
WriteKeyToPaneId(
Option<KeyWithModifier>,
Vec<u8>,
@@ -865,6 +871,7 @@ impl From<&ScreenInstruction> for ScreenContext {
ScreenContext::EditScrollbackForPaneWithId
},
ScreenInstruction::WriteToPaneId(..) => ScreenContext::WriteToPaneId,
ScreenInstruction::SetPaneColor(..) => ScreenContext::SetPaneColor,
ScreenInstruction::WriteKeyToPaneId(..) => ScreenContext::WriteKeyToPaneId,
ScreenInstruction::CopyTextToClipboard(..) => ScreenContext::CopyTextToClipboard,
ScreenInstruction::MovePaneWithPaneId(..) => ScreenContext::MovePaneWithPaneId,
@@ -3939,6 +3946,7 @@ impl Screen {
p_id.and_then(|p_id| if p_id == pane_id { Some(*c_id) } else { None })
})
.collect();
let (default_fg, default_bg) = p.get_pane_default_colors();
PaneLayoutMetadata::new(
pane_id,
p.position_and_size(),
@@ -3952,6 +3960,8 @@ impl Screen {
None
},
focused_clients,
default_fg,
default_bg,
)
})
.collect();
@@ -3977,6 +3987,7 @@ impl Screen {
p_id.and_then(|p_id| if p_id == pane_id { Some(*c_id) } else { None })
})
.collect();
let (default_fg, default_bg) = p.get_pane_default_colors();
PaneLayoutMetadata::new(
pane_id,
p.position_and_size(),
@@ -3990,6 +4001,8 @@ impl Screen {
None
},
focused_clients,
default_fg,
default_bg,
)
})
.collect();
@@ -7127,6 +7140,16 @@ pub(crate) fn screen_thread_main(
}
screen.render(None)?;
},
ScreenInstruction::SetPaneColor(pane_id, fg, bg, _completion) => {
let all_tabs = screen.get_tabs_mut();
for tab in all_tabs.values_mut() {
if tab.has_pane_with_pid(&pane_id) {
tab.set_pane_color(pane_id, fg, bg).non_fatal();
break;
}
}
screen.render(None)?;
},
ScreenInstruction::WriteKeyToPaneId(
key_with_modifier,
bytes,
@@ -533,6 +533,8 @@ impl Into<PaneLayoutManifest> for PaneLayoutMetadata {
title: self.title,
is_focused: self.is_focused,
pane_contents: self.pane_contents,
default_fg: self.default_fg,
default_bg: self.default_bg,
}
}
}
@@ -557,6 +559,8 @@ pub struct PaneLayoutMetadata {
is_focused: bool,
pane_contents: Option<String>,
focused_clients: Vec<ClientId>,
default_fg: Option<String>,
default_bg: Option<String>,
}
impl PaneLayoutMetadata {
@@ -569,6 +573,8 @@ impl PaneLayoutMetadata {
is_focused: bool,
pane_contents: Option<String>,
focused_clients: Vec<ClientId>,
default_fg: Option<String>,
default_bg: Option<String>,
) -> Self {
PaneLayoutMetadata {
id,
@@ -580,6 +586,8 @@ impl PaneLayoutMetadata {
is_focused,
pane_contents,
focused_clients,
default_fg,
default_bg,
}
}
fn to_pane_metadata(&self) -> PaneMetadata {
@@ -693,6 +701,8 @@ mod tests {
false,
None,
vec![],
None,
None,
)
}
@@ -710,6 +720,8 @@ mod tests {
false,
None,
vec![],
None,
None,
)
}
+9
View File
@@ -653,6 +653,12 @@ impl<'a> LayoutApplier<'a> {
} else {
new_pane.set_borderless(false);
}
if floating_pane_layout.default_fg.is_some() || floating_pane_layout.default_bg.is_some() {
new_pane.set_pane_default_colors(
floating_pane_layout.default_fg.clone(),
floating_pane_layout.default_bg.clone(),
);
}
if let Some(held_command) = hold_for_command {
new_pane.hold(None, true, held_command.clone());
}
@@ -722,6 +728,9 @@ impl<'a> LayoutApplier<'a> {
if let Some(exclude_from_sync) = layout.exclude_from_sync {
new_pane.set_exclude_from_sync(exclude_from_sync);
}
if layout.default_fg.is_some() || layout.default_bg.is_some() {
new_pane.set_pane_default_colors(layout.default_fg.clone(), layout.default_bg.clone());
}
if let Some(held_command) = hold_for_command {
new_pane.hold(None, true, held_command.clone());
}
+24
View File
@@ -323,6 +323,10 @@ pub trait Pane {
fn get_selected_text(&self, _client_id: ClientId) -> Option<String> {
None
}
fn set_pane_default_colors(&mut self, _fg: Option<String>, _bg: Option<String>) {}
fn get_pane_default_colors(&self) -> (Option<String>, Option<String>) {
(None, None)
}
fn right_boundary_x_coords(&self) -> usize {
self.x() + self.cols()
@@ -2540,6 +2544,22 @@ impl Tab {
.values()
.any(|s_p| s_p.1.pid() == PaneId::Plugin(plugin_id))
}
pub fn set_pane_color(
&mut self,
pane_id: PaneId,
fg: Option<String>,
bg: Option<String>,
) -> Result<()> {
let pane = self
.floating_panes
.get_mut(&pane_id)
.or_else(|| self.tiled_panes.get_pane_mut(pane_id))
.or_else(|| self.suppressed_panes.get_mut(&pane_id).map(|p| &mut p.1));
if let Some(pane) = pane {
pane.set_pane_default_colors(fg, bg);
}
Ok(())
}
pub fn has_pane_with_pid(&self, pid: &PaneId) -> bool {
self.tiled_panes.panes_contain(pid)
|| self.floating_panes.panes_contain(pid)
@@ -5597,6 +5617,10 @@ pub fn pane_info_for_pane(
.collect();
pane_info.index_in_pane_group = index_in_pane_group;
let (default_fg, default_bg) = pane.get_pane_default_colors();
pane_info.default_fg = default_fg;
pane_info.default_bg = default_bg;
match pane_id {
PaneId::Terminal(terminal_id) => {
pane_info.id = *terminal_id;
@@ -1,5 +1,6 @@
---
source: zellij-server/src/./unit/screen_tests.rs
assertion_line: 3515
expression: "format!(\"{:#?}\", new_tab_action)"
---
Some(
@@ -26,6 +27,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -42,6 +45,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -55,6 +60,8 @@ Some(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
),
[],
@@ -1,5 +1,6 @@
---
source: zellij-server/src/./unit/screen_tests.rs
assertion_line: 3568
expression: "format!(\"{:#?}\", new_tab_instruction)"
---
NewTab(
@@ -29,6 +30,8 @@ NewTab(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -49,6 +52,8 @@ NewTab(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -69,6 +74,8 @@ NewTab(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -86,6 +93,8 @@ NewTab(
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
),
[],
+13
View File
@@ -2392,6 +2392,19 @@ pub fn set_pane_borderless(pane_id: PaneId, borderless: bool) {
unsafe { host_run_plugin_command() };
}
/// Set the default foreground and/or background color of a pane
///
/// # Arguments
/// * `pane_id` - The ID of the pane (PaneId::Terminal or PaneId::Plugin)
/// * `fg` - Optional foreground color string (e.g. "#00e000"), None to leave unchanged
/// * `bg` - Optional background color string (e.g. "#001a3a"), None to leave unchanged
pub fn set_pane_color(pane_id: PaneId, fg: Option<String>, bg: Option<String>) {
let plugin_command = PluginCommand::SetPaneColor(pane_id, fg, bg);
let protobuf_plugin_command: ProtobufPluginCommand = plugin_command.try_into().unwrap();
object_to_stdout(&protobuf_plugin_command.encode_to_vec());
unsafe { host_run_plugin_command() };
}
pub fn start_web_server() {
let plugin_command = PluginCommand::StartWebServer;
let protobuf_plugin_command: ProtobufPluginCommand = plugin_command.try_into().unwrap();
+4
View File
@@ -543,6 +543,10 @@ pub struct PaneInfo {
pub is_selectable: bool,
#[prost(message, repeated, tag="23")]
pub index_in_pane_group: ::prost::alloc::vec::Vec<IndexInPaneGroup>,
#[prost(string, optional, tag="24")]
pub default_fg: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag="25")]
pub default_bg: ::core::option::Option<::prost::alloc::string::String>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
@@ -3,7 +3,7 @@
pub struct PluginCommand {
#[prost(enumeration="CommandName", tag="1")]
pub name: i32,
#[prost(oneof="plugin_command::Payload", tags="2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156")]
#[prost(oneof="plugin_command::Payload", tags="2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157")]
pub payload: ::core::option::Option<plugin_command::Payload>,
}
/// Nested message and enum types in `PluginCommand`.
@@ -295,6 +295,8 @@ pub mod plugin_command {
HideFloatingPanesPayload(super::HideFloatingPanesPayload),
#[prost(message, tag="156")]
ShowFloatingPanesPayload(super::ShowFloatingPanesPayload),
#[prost(message, tag="157")]
SetPaneColorPayload(super::SetPaneColorPayload),
}
}
#[allow(clippy::derive_partial_eq_without_eq)]
@@ -1768,6 +1770,16 @@ pub mod hide_floating_panes_response {
Error(::prost::alloc::string::String),
}
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SetPaneColorPayload {
#[prost(message, optional, tag="1")]
pub pane_id: ::core::option::Option<PaneId>,
#[prost(string, optional, tag="2")]
pub fg: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag="3")]
pub bg: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum CommandName {
@@ -1956,6 +1968,7 @@ pub enum CommandName {
OpenEditPaneInPlaceOfPaneId = 203,
HideFloatingPanes = 204,
ShowFloatingPanes = 205,
SetPaneColor = 206,
}
impl CommandName {
/// String value of the enum field names used in the ProtoBuf definition.
@@ -2149,6 +2162,7 @@ impl CommandName {
CommandName::OpenEditPaneInPlaceOfPaneId => "OpenEditPaneInPlaceOfPaneId",
CommandName::HideFloatingPanes => "HideFloatingPanes",
CommandName::ShowFloatingPanes => "ShowFloatingPanes",
CommandName::SetPaneColor => "SetPaneColor",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
@@ -2339,6 +2353,7 @@ impl CommandName {
"OpenEditPaneInPlaceOfPaneId" => Some(Self::OpenEditPaneInPlaceOfPaneId),
"HideFloatingPanes" => Some(Self::HideFloatingPanes),
"ShowFloatingPanes" => Some(Self::ShowFloatingPanes),
"SetPaneColor" => Some(Self::SetPaneColor),
_ => None,
}
}
@@ -119,7 +119,7 @@ pub struct RgbColor {
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Action {
#[prost(oneof="action::ActionType", tags="1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107")]
#[prost(oneof="action::ActionType", tags="1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108")]
pub action_type: ::core::option::Option<action::ActionType>,
}
/// Nested message and enum types in `Action`.
@@ -341,6 +341,8 @@ pub mod action {
ShowFloatingPanes(super::ShowFloatingPanesAction),
#[prost(message, tag="107")]
HideFloatingPanes(super::HideFloatingPanesAction),
#[prost(message, tag="108")]
SetPaneColor(super::SetPaneColorAction),
}
}
// Action message definitions (all 92 variants)
@@ -1127,6 +1129,16 @@ pub struct SetPaneBorderlessAction {
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SetPaneColorAction {
#[prost(message, optional, tag="1")]
pub pane_id: ::core::option::Option<PaneId>,
#[prost(string, optional, tag="2")]
pub fg: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag="3")]
pub bg: ::core::option::Option<::prost::alloc::string::String>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Position {
/// Changed from uint32 to int32 to support negative line numbers
#[prost(int32, tag="1")]
@@ -1409,9 +1421,13 @@ pub struct TiledPaneLayout {
pub is_expanded_in_stack: bool,
#[prost(bool, tag="12")]
pub hide_floating_panes: bool,
/// NOTE: run_instructions_to_ignore is not represented here because it's a field used only inside the server itself and not part of the server/client contract
#[prost(string, optional, tag="13")]
pub pane_initial_contents: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag="14")]
pub default_fg: ::core::option::Option<::prost::alloc::string::String>,
/// NOTE: run_instructions_to_ignore is not represented here because it's a field used only inside the server itself and not part of the server/client contract
#[prost(string, optional, tag="15")]
pub default_bg: ::core::option::Option<::prost::alloc::string::String>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
@@ -1440,6 +1456,10 @@ pub struct FloatingPaneLayout {
pub logical_position: ::core::option::Option<u32>,
#[prost(bool, optional, tag="12")]
pub borderless: ::core::option::Option<bool>,
#[prost(string, optional, tag="13")]
pub default_fg: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag="14")]
pub default_bg: ::core::option::Option<::prost::alloc::string::String>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
@@ -2562,122 +2582,6 @@ impl WebSharing {
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ServerToClientMsg {
#[prost(oneof="server_to_client_msg::Message", tags="1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13")]
pub message: ::core::option::Option<server_to_client_msg::Message>,
}
/// Nested message and enum types in `ServerToClientMsg`.
pub mod server_to_client_msg {
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum Message {
#[prost(message, tag="1")]
Render(super::RenderMsg),
#[prost(message, tag="2")]
UnblockInputThread(super::UnblockInputThreadMsg),
#[prost(message, tag="3")]
Exit(super::ExitMsg),
#[prost(message, tag="4")]
Connected(super::ConnectedMsg),
#[prost(message, tag="5")]
Log(super::LogMsg),
#[prost(message, tag="6")]
LogError(super::LogErrorMsg),
#[prost(message, tag="7")]
SwitchSession(super::SwitchSessionMsg),
#[prost(message, tag="8")]
UnblockCliPipeInput(super::UnblockCliPipeInputMsg),
#[prost(message, tag="9")]
CliPipeOutput(super::CliPipeOutputMsg),
#[prost(message, tag="10")]
QueryTerminalSize(super::QueryTerminalSizeMsg),
#[prost(message, tag="11")]
StartWebServer(super::StartWebServerMsg),
#[prost(message, tag="12")]
RenamedSession(super::RenamedSessionMsg),
#[prost(message, tag="13")]
ConfigFileUpdated(super::ConfigFileUpdatedMsg),
}
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RenderMsg {
#[prost(string, tag="1")]
pub content: ::prost::alloc::string::String,
}
/// Empty message
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UnblockInputThreadMsg {
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ExitMsg {
#[prost(enumeration="ExitReason", tag="1")]
pub exit_reason: i32,
#[prost(string, optional, tag="2")]
pub payload: ::core::option::Option<::prost::alloc::string::String>,
}
/// Empty message
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ConnectedMsg {
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LogMsg {
#[prost(string, repeated, tag="1")]
pub lines: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LogErrorMsg {
#[prost(string, repeated, tag="1")]
pub lines: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SwitchSessionMsg {
#[prost(message, optional, tag="1")]
pub connect_to_session: ::core::option::Option<ConnectToSession>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UnblockCliPipeInputMsg {
#[prost(string, tag="1")]
pub pipe_name: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CliPipeOutputMsg {
#[prost(string, tag="1")]
pub pipe_name: ::prost::alloc::string::String,
#[prost(string, tag="2")]
pub output: ::prost::alloc::string::String,
}
/// Empty message
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct QueryTerminalSizeMsg {
}
/// Empty message
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StartWebServerMsg {
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RenamedSessionMsg {
#[prost(string, tag="1")]
pub name: ::prost::alloc::string::String,
}
/// Empty message
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ConfigFileUpdatedMsg {
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ClientToServerMsg {
#[prost(oneof="client_to_server_msg::Message", tags="1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16")]
pub message: ::core::option::Option<client_to_server_msg::Message>,
@@ -2834,3 +2738,119 @@ pub struct FailedToStartWebServerMsg {
#[prost(string, tag="1")]
pub error: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ServerToClientMsg {
#[prost(oneof="server_to_client_msg::Message", tags="1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13")]
pub message: ::core::option::Option<server_to_client_msg::Message>,
}
/// Nested message and enum types in `ServerToClientMsg`.
pub mod server_to_client_msg {
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum Message {
#[prost(message, tag="1")]
Render(super::RenderMsg),
#[prost(message, tag="2")]
UnblockInputThread(super::UnblockInputThreadMsg),
#[prost(message, tag="3")]
Exit(super::ExitMsg),
#[prost(message, tag="4")]
Connected(super::ConnectedMsg),
#[prost(message, tag="5")]
Log(super::LogMsg),
#[prost(message, tag="6")]
LogError(super::LogErrorMsg),
#[prost(message, tag="7")]
SwitchSession(super::SwitchSessionMsg),
#[prost(message, tag="8")]
UnblockCliPipeInput(super::UnblockCliPipeInputMsg),
#[prost(message, tag="9")]
CliPipeOutput(super::CliPipeOutputMsg),
#[prost(message, tag="10")]
QueryTerminalSize(super::QueryTerminalSizeMsg),
#[prost(message, tag="11")]
StartWebServer(super::StartWebServerMsg),
#[prost(message, tag="12")]
RenamedSession(super::RenamedSessionMsg),
#[prost(message, tag="13")]
ConfigFileUpdated(super::ConfigFileUpdatedMsg),
}
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RenderMsg {
#[prost(string, tag="1")]
pub content: ::prost::alloc::string::String,
}
/// Empty message
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UnblockInputThreadMsg {
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ExitMsg {
#[prost(enumeration="ExitReason", tag="1")]
pub exit_reason: i32,
#[prost(string, optional, tag="2")]
pub payload: ::core::option::Option<::prost::alloc::string::String>,
}
/// Empty message
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ConnectedMsg {
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LogMsg {
#[prost(string, repeated, tag="1")]
pub lines: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LogErrorMsg {
#[prost(string, repeated, tag="1")]
pub lines: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SwitchSessionMsg {
#[prost(message, optional, tag="1")]
pub connect_to_session: ::core::option::Option<ConnectToSession>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UnblockCliPipeInputMsg {
#[prost(string, tag="1")]
pub pipe_name: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CliPipeOutputMsg {
#[prost(string, tag="1")]
pub pipe_name: ::prost::alloc::string::String,
#[prost(string, tag="2")]
pub output: ::prost::alloc::string::String,
}
/// Empty message
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct QueryTerminalSizeMsg {
}
/// Empty message
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StartWebServerMsg {
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RenamedSessionMsg {
#[prost(string, tag="1")]
pub name: ::prost::alloc::string::String,
}
/// Empty message
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ConfigFileUpdatedMsg {
}
+21 -4
View File
@@ -111,6 +111,11 @@ pub enum Command {
#[clap(name = "web", value_parser)]
Web(WebCli),
/// Send actions to a specific session
#[clap(visible_alias = "ac")]
#[clap(subcommand)]
Action(Box<CliAction>),
/// Explore existing zellij sessions
#[clap(flatten)]
Sessions(Sessions),
@@ -333,10 +338,6 @@ pub enum Sessions {
force: bool,
},
/// Send actions to a specific session
#[clap(visible_alias = "ac")]
#[clap(subcommand)]
Action(CliAction),
/// Run a command in a new pane
/// Returns: Created pane ID (format: terminal_<id>)
#[clap(visible_alias = "r")]
@@ -1355,4 +1356,20 @@ tail -f /tmp/my-live-logfile | zellij action pipe --name logs --plugin https://e
#[clap(short, long, value_parser)]
cwd: Option<PathBuf>,
},
/// Set the default foreground/background color of a pane
SetPaneColor {
/// The pane_id of the pane, eg. terminal_1, plugin_2 or 3 (equivalent to terminal_3).
/// Defaults to $ZELLIJ_PANE_ID if not provided.
#[clap(short, long, value_parser)]
pane_id: Option<String>,
/// Foreground color (e.g. "#00e000", "rgb:00/e0/00")
#[clap(long, value_parser)]
fg: Option<String>,
/// Background color (e.g. "#001a3a", "rgb:00/1a/3a")
#[clap(long, value_parser)]
bg: Option<String>,
/// Reset pane colors to terminal defaults
#[clap(long, value_parser, conflicts_with_all(&["fg", "bg"]))]
reset: bool,
},
}
@@ -243,6 +243,7 @@ message Action {
CurrentTabInfoAction current_tab_info = 105;
ShowFloatingPanesAction show_floating_panes = 106;
HideFloatingPanesAction hide_floating_panes = 107;
SetPaneColorAction set_pane_color = 108;
}
}
@@ -651,6 +652,12 @@ message SetPaneBorderlessAction {
bool borderless = 2;
}
message SetPaneColorAction {
PaneId pane_id = 1;
optional string fg = 2;
optional string bg = 3;
}
// Supporting enums and messages
enum InputMode {
INPUT_MODE_UNSPECIFIED = 0;
@@ -856,6 +863,8 @@ message TiledPaneLayout {
bool is_expanded_in_stack = 11;
bool hide_floating_panes = 12;
optional string pane_initial_contents = 13;
optional string default_fg = 14;
optional string default_bg = 15;
// NOTE: run_instructions_to_ignore is not represented here because it's a field used only inside the server itself and not part of the server/client contract
}
@@ -872,6 +881,8 @@ message FloatingPaneLayout {
optional string pane_initial_contents = 10;
optional uint32 logical_position = 11;
optional bool borderless = 12;
optional string default_fg = 13;
optional string default_bg = 14;
}
message SwapTiledLayout {
+5
View File
@@ -2264,6 +2264,10 @@ pub struct PaneInfo {
/// Grouped panes (usually through an explicit user action) that are staged for a bulk action
/// the index is kept track of in order to preserve the pane group order
pub index_in_pane_group: BTreeMap<ClientId, usize>,
/// The default foreground color of this pane, if set (e.g. "#00e000")
pub default_fg: Option<String>,
/// The default background color of this pane, if set (e.g. "#001a3a")
pub default_bg: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
@@ -3471,6 +3475,7 @@ pub enum PluginCommand {
ShowFloatingPanes {
tab_id: Option<usize>,
},
SetPaneColor(PaneId, Option<String>, Option<String>), // (pane_id, fg, bg)
}
// Response type for plugin API methods that open a pane in a new tab
+1
View File
@@ -372,6 +372,7 @@ pub enum ScreenContext {
ResizePaneWithId,
EditScrollbackForPaneWithId,
WriteToPaneId,
SetPaneColor,
WriteKeyToPaneId,
CopyTextToClipboard,
MovePaneWithPaneId,
+38
View File
@@ -327,6 +327,12 @@ pub enum Action {
command: RunCommandAction,
near_current_pane: bool,
},
/// Set pane default foreground/background color
SetPaneColor {
pane_id: PaneId,
fg: Option<String>,
bg: Option<String>,
},
/// Detach session and exit
Detach,
/// Switch to a different session
@@ -1492,6 +1498,38 @@ impl Action {
}
}
},
CliAction::SetPaneColor {
pane_id,
fg,
bg,
reset,
} => {
let pane_id_str = match pane_id {
Some(id) => id,
None => std::env::var("ZELLIJ_PANE_ID").map_err(|_| {
"No --pane-id provided and ZELLIJ_PANE_ID is not set".to_string()
})?,
};
let parsed_pane_id = PaneId::from_str(&pane_id_str);
match parsed_pane_id {
Ok(parsed_pane_id) => {
let (fg, bg) = if reset {
(None, None)
} else {
(fg, bg)
};
Ok(vec![Action::SetPaneColor {
pane_id: parsed_pane_id,
fg,
bg,
}])
},
Err(_e) => Err(format!(
"Malformed pane id: {}, expecting either a bare integer (eg. 1), a terminal pane id (eg. terminal_1) or a plugin pane id (eg. plugin_1)",
pane_id_str
)),
}
},
CliAction::Detach => Ok(vec![Action::Detach]),
CliAction::SwitchSession {
name,
+6
View File
@@ -794,6 +794,8 @@ pub struct FloatingPaneLayout {
pub already_running: bool,
pub pane_initial_contents: Option<String>,
pub logical_position: Option<usize>,
pub default_fg: Option<String>,
pub default_bg: Option<String>,
}
impl FloatingPaneLayout {
@@ -811,6 +813,8 @@ impl FloatingPaneLayout {
already_running: false,
pane_initial_contents: None,
logical_position: None,
default_fg: None,
default_bg: None,
}
}
pub fn add_cwd_to_layout(&mut self, cwd: &PathBuf) {
@@ -855,6 +859,8 @@ pub struct TiledPaneLayout {
pub run_instructions_to_ignore: Vec<Option<Run>>,
pub hide_floating_panes: bool, // only relevant if this is the base layout
pub pane_initial_contents: Option<String>,
pub default_fg: Option<String>,
pub default_bg: Option<String>,
}
impl TiledPaneLayout {
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 1410
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -38,6 +39,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -69,6 +72,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -82,6 +87,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 1375
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -41,6 +42,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -72,6 +75,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -85,6 +90,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 1984
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -30,6 +31,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -46,6 +49,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -62,6 +67,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -75,6 +82,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -88,6 +97,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 1952
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -30,6 +31,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -46,6 +49,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -59,6 +64,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -72,6 +79,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 1969
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -34,6 +35,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -50,6 +53,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -63,6 +68,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -76,6 +83,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -89,6 +98,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 1938
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -26,6 +27,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -39,6 +42,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -91,6 +96,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -115,6 +122,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -133,6 +142,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -146,6 +157,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -159,6 +172,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -198,6 +213,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -211,6 +228,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
MaxPanes(
8,
@@ -256,6 +275,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -282,6 +303,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -302,6 +325,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -318,6 +343,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -334,6 +361,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -350,6 +379,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -363,6 +394,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -376,6 +409,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -389,6 +424,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -428,6 +465,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -441,6 +480,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
MaxPanes(
12,
@@ -486,6 +527,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -512,6 +555,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -532,6 +577,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -548,6 +595,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -564,6 +613,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -580,6 +631,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -593,6 +646,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -613,6 +668,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -629,6 +686,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -645,6 +704,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -661,6 +722,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -674,6 +737,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -687,6 +752,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -700,6 +767,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -739,6 +808,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -752,6 +823,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
},
Some(
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 1033
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -36,6 +37,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -56,6 +59,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -72,6 +77,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -85,6 +92,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -98,6 +107,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -114,6 +125,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -127,6 +140,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -151,6 +166,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -166,6 +183,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -182,6 +201,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -195,6 +216,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -208,6 +231,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 985
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -31,6 +32,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -51,6 +54,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -67,6 +72,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -80,6 +87,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -93,6 +102,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -109,6 +120,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -122,6 +135,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -150,6 +165,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -165,6 +182,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -181,6 +200,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -194,6 +215,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -216,6 +239,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 1427
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -38,6 +39,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -66,6 +69,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -79,6 +84,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 1393
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -38,6 +39,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -66,6 +69,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -79,6 +84,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 1085
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -31,6 +32,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -53,6 +56,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -66,6 +71,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -82,6 +89,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -95,6 +104,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -115,6 +126,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -131,6 +144,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -144,6 +159,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -157,6 +174,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -185,6 +204,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -207,6 +228,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -220,6 +243,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -236,6 +261,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -249,6 +276,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -265,6 +294,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -278,6 +309,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -300,6 +333,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 1462
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -38,6 +39,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -68,6 +71,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -81,6 +86,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 1445
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -40,6 +41,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -70,6 +73,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -83,6 +88,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 2230
expression: "format!(\"{layout:#?}\")"
---
Layout {
@@ -29,6 +30,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -49,6 +52,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -69,6 +74,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -89,6 +96,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -119,6 +128,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -143,6 +154,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -167,6 +180,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -197,6 +212,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -221,6 +238,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -238,6 +257,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -268,6 +289,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -288,6 +311,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -308,6 +333,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -328,6 +355,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -358,6 +387,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -382,6 +413,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -406,6 +439,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -436,6 +471,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -460,6 +497,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -477,6 +516,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 1847
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -29,6 +30,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -59,6 +62,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -76,6 +81,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -98,6 +105,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 1868
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -33,6 +34,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -63,6 +66,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -87,6 +92,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -104,6 +111,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -121,6 +130,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -138,6 +149,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -160,6 +173,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 1887
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -29,6 +30,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -59,6 +62,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -83,6 +88,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -100,6 +107,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -117,6 +126,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -139,6 +150,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 1732
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -29,6 +30,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -59,6 +62,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -76,6 +81,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -106,6 +113,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -136,6 +145,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -153,6 +164,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 1765
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -30,6 +31,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -60,6 +63,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -77,6 +82,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 1786
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -29,6 +30,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -59,6 +62,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -76,6 +81,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -106,6 +113,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -136,6 +145,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -153,6 +164,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 1745
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -29,6 +30,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -59,6 +62,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -76,6 +81,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -106,6 +113,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -136,6 +145,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -153,6 +164,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 1802
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -29,6 +30,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -59,6 +62,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -76,6 +81,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -98,6 +105,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 511
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -38,6 +39,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -51,6 +54,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 524
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -38,6 +39,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -51,6 +54,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 819
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -27,6 +28,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Vertical,
@@ -47,6 +50,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -63,6 +68,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -76,6 +83,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -92,6 +101,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -105,6 +116,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -131,6 +144,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -151,6 +166,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -167,6 +184,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -180,6 +199,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -196,6 +217,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -209,6 +232,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -233,6 +258,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -249,6 +276,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -265,6 +294,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -278,6 +309,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -304,6 +337,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -320,6 +355,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -336,6 +373,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -349,6 +388,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 939
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -30,6 +31,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -46,6 +49,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -66,6 +71,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -82,6 +89,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -95,6 +104,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -115,6 +126,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -131,6 +144,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -147,6 +162,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -160,6 +177,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -173,6 +192,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -186,6 +207,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 913
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -30,6 +31,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -46,6 +49,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -66,6 +71,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -82,6 +89,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -95,6 +104,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -111,6 +122,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -124,6 +137,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -137,6 +152,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 844
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -27,6 +28,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -43,6 +46,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -56,6 +61,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -82,6 +89,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -98,6 +107,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -111,6 +122,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -131,6 +144,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -161,6 +176,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -177,6 +194,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -190,6 +209,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -203,6 +224,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 1096
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -28,6 +29,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -41,6 +44,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 871
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -30,6 +31,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -50,6 +53,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -63,6 +68,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -79,6 +86,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -92,6 +101,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Vertical,
@@ -112,6 +123,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -132,6 +145,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -148,6 +163,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -161,6 +178,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -177,6 +196,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -190,6 +211,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Vertical,
@@ -210,6 +233,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Vertical,
@@ -230,6 +255,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -246,6 +273,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -259,6 +288,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -275,6 +306,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -288,6 +321,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Vertical,
@@ -308,6 +343,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -324,6 +361,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -340,6 +379,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -353,6 +394,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -366,6 +409,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 892
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -29,6 +30,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -61,6 +64,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -74,6 +79,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -90,6 +97,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -103,6 +112,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -116,6 +127,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -138,6 +151,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 305
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -25,6 +26,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -38,6 +41,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[
FloatingPaneLayout {
@@ -53,6 +58,8 @@ Layout {
already_running: false,
pane_initial_contents: None,
logical_position: None,
default_fg: None,
default_bg: None,
},
],
),
@@ -77,6 +84,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -90,6 +99,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[
FloatingPaneLayout {
@@ -105,6 +116,8 @@ Layout {
already_running: false,
pane_initial_contents: None,
logical_position: None,
default_fg: None,
default_bg: None,
},
FloatingPaneLayout {
name: None,
@@ -119,6 +132,8 @@ Layout {
already_running: false,
pane_initial_contents: None,
logical_position: None,
default_fg: None,
default_bg: None,
},
],
),
@@ -141,6 +156,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 1616
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -39,6 +40,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -56,6 +59,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -96,6 +101,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -113,6 +120,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 1562
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -39,6 +40,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -56,6 +59,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -96,6 +101,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -113,6 +120,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 1579
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -39,6 +40,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -56,6 +59,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -96,6 +101,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -113,6 +120,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 1597
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -39,6 +40,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -56,6 +59,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -96,6 +101,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -113,6 +120,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 1634
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -39,6 +40,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -56,6 +59,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -96,6 +101,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -113,6 +120,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 1652
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -29,6 +30,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -46,6 +49,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -76,6 +81,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -93,6 +100,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 1686
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -39,6 +40,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -56,6 +59,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -96,6 +101,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -113,6 +120,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 1668
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -39,6 +40,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -56,6 +59,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -96,6 +101,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -113,6 +120,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 1702
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -33,6 +34,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -50,6 +53,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -84,6 +89,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -101,6 +108,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 1718
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -33,6 +34,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -50,6 +53,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -84,6 +89,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -101,6 +108,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 1817
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -29,6 +30,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -59,6 +62,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -76,6 +81,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -98,6 +105,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -1,5 +1,6 @@
---
source: zellij-utils/src/input/./unit/layout_test.rs
assertion_line: 1832
expression: "format!(\"{:#?}\", layout)"
---
Layout {
@@ -29,6 +30,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
TiledPaneLayout {
children_split_direction: Horizontal,
@@ -59,6 +62,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
],
split_size: None,
@@ -76,6 +81,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
@@ -98,6 +105,8 @@ Layout {
run_instructions_to_ignore: [],
hide_floating_panes: false,
pane_initial_contents: None,
default_fg: None,
default_bg: None,
},
[],
),
+26 -1
View File
@@ -740,7 +740,7 @@ impl From<crate::input::actions::Action>
ResizeAction, RunAction, SaveSessionAction, ScrollDownAction, ScrollDownAtAction,
ScrollToBottomAction, ScrollToTopAction, ScrollUpAction, ScrollUpAtAction,
SearchAction, SearchInputAction, SearchToggleOptionAction, SetPaneBorderlessAction,
ShowFloatingPanesAction, SkipConfirmAction, StackPanesAction,
SetPaneColorAction, ShowFloatingPanesAction, SkipConfirmAction, StackPanesAction,
StartOrReloadPluginAction, SwitchFocusAction, SwitchModeForAllClientsAction,
SwitchSessionAction, SwitchToModeAction, TabNameInputAction, ToggleActiveSyncTabAction,
ToggleFloatingPanesAction, ToggleFocusFullscreenAction, ToggleGroupMarkingAction,
@@ -1391,6 +1391,13 @@ impl From<crate::input::actions::Action>
crate::input::actions::Action::CurrentTabInfo { output_json } => {
ActionType::CurrentTabInfo(CurrentTabInfoAction { output_json })
},
crate::input::actions::Action::SetPaneColor { pane_id, fg, bg } => {
ActionType::SetPaneColor(SetPaneColorAction {
pane_id: Some(pane_id.into()),
fg,
bg,
})
},
};
Self {
@@ -2079,6 +2086,16 @@ impl TryFrom<crate::client_server_contract::client_server_contract::Action>
ActionType::ToggleGroupMarking(_) => {
Ok(crate::input::actions::Action::ToggleGroupMarking)
},
ActionType::SetPaneColor(set_pane_color_action) => {
Ok(crate::input::actions::Action::SetPaneColor {
pane_id: set_pane_color_action
.pane_id
.ok_or_else(|| anyhow!("SetPaneColor missing pane_id"))?
.try_into()?,
fg: set_pane_color_action.fg,
bg: set_pane_color_action.bg,
})
},
}
}
}
@@ -3129,6 +3146,8 @@ impl From<crate::input::layout::TiledPaneLayout>
is_expanded_in_stack: layout.is_expanded_in_stack,
hide_floating_panes: layout.hide_floating_panes,
pane_initial_contents: layout.pane_initial_contents,
default_fg: layout.default_fg,
default_bg: layout.default_bg,
}
}
}
@@ -3150,6 +3169,8 @@ impl From<crate::input::layout::FloatingPaneLayout>
pane_initial_contents: layout.pane_initial_contents,
logical_position: layout.logical_position.map(|l| l as u32),
borderless: layout.borderless,
default_fg: layout.default_fg,
default_bg: layout.default_bg,
}
}
}
@@ -3558,6 +3579,8 @@ impl TryFrom<crate::client_server_contract::client_server_contract::TiledPaneLay
run_instructions_to_ignore: vec![], // not represented in protobuf
hide_floating_panes: layout.hide_floating_panes,
pane_initial_contents: layout.pane_initial_contents,
default_fg: layout.default_fg,
default_bg: layout.default_bg,
})
}
}
@@ -3590,6 +3613,8 @@ impl TryFrom<crate::client_server_contract::client_server_contract::FloatingPane
pane_initial_contents: layout.pane_initial_contents,
logical_position: layout.logical_position.map(|p| p as usize),
borderless: layout.borderless,
default_fg: layout.default_fg,
default_bg: layout.default_bg,
})
}
}
@@ -1976,6 +1976,8 @@ fn test_client_messages() {
already_running: true,
pane_initial_contents: Some("pane_initial_contents".to_owned()),
logical_position: Some(15),
default_fg: None,
default_bg: None,
},
FloatingPaneLayout {
name: Some("third floating layout".to_owned()),
@@ -2721,6 +2723,26 @@ fn test_client_messages() {
client_id: Some(100),
is_cli_client: true,
});
test_client_roundtrip!(ClientToServerMsg::Action {
action: Action::SetPaneColor {
pane_id: PaneId::Terminal(0),
fg: Some("#00e000".to_owned()),
bg: Some("#001a3a".to_owned()),
},
terminal_id: Some(1),
client_id: Some(100),
is_cli_client: true,
});
test_client_roundtrip!(ClientToServerMsg::Action {
action: Action::SetPaneColor {
pane_id: PaneId::Plugin(2),
fg: None,
bg: None,
},
terminal_id: Some(1),
client_id: Some(100),
is_cli_client: true,
});
test_client_roundtrip!(ClientToServerMsg::Key {
key: KeyWithModifier {
bare_key: BareKey::PageDown,
@@ -3130,3 +3152,41 @@ fn test_server_messages() {
}
});
}
#[test]
fn set_pane_color_wire_roundtrip() {
// Test actual byte-level encode/decode, not just struct conversion
use prost::Message;
let original = ClientToServerMsg::Action {
action: Action::SetPaneColor {
pane_id: PaneId::Terminal(0),
fg: Some("#00e000".to_owned()),
bg: Some("#001a3a".to_owned()),
},
terminal_id: Some(1),
client_id: Some(100),
is_cli_client: true,
};
// Rust -> proto struct
let proto: crate::client_server_contract::client_server_contract::ClientToServerMsg =
original.clone().into();
// proto struct -> bytes (what goes over the wire)
let bytes = proto.encode_to_vec();
// bytes -> proto struct (what the server does)
let decoded_proto =
crate::client_server_contract::client_server_contract::ClientToServerMsg::decode(
&bytes[..],
)
.expect("Failed to decode protobuf bytes");
// proto struct -> Rust
let roundtrip: ClientToServerMsg = decoded_proto
.try_into()
.expect("Failed to convert decoded protobuf back to Rust");
assert_eq!(original, roundtrip);
}
+16
View File
@@ -106,6 +106,8 @@ impl<'a> KdlLayoutParser<'a> {
|| property_name == "expanded"
|| property_name == "exclude_from_sync"
|| property_name == "contents_file"
|| property_name == "default_fg"
|| property_name == "default_bg"
}
fn is_a_valid_floating_pane_property(&self, property_name: &str) -> bool {
property_name == "borderless"
@@ -124,6 +126,8 @@ impl<'a> KdlLayoutParser<'a> {
|| property_name == "height"
|| property_name == "pinned"
|| property_name == "contents_file"
|| property_name == "default_fg"
|| property_name == "default_bg"
}
fn is_a_valid_tab_property(&self, property_name: &str) -> bool {
property_name == "focus"
@@ -563,6 +567,10 @@ impl<'a> KdlLayoutParser<'a> {
kdl_node.span().len(),
));
}
let default_fg = kdl_get_string_property_or_child_value_with_error!(kdl_node, "default_fg")
.map(|s| s.to_string());
let default_bg = kdl_get_string_property_or_child_value_with_error!(kdl_node, "default_bg")
.map(|s| s.to_string());
self.assert_no_mixed_children_and_properties(kdl_node)?;
let pane_initial_contents = contents_file.and_then(|contents_file| {
self.file_name
@@ -585,6 +593,8 @@ impl<'a> KdlLayoutParser<'a> {
children_are_stacked,
is_expanded_in_stack,
pane_initial_contents,
default_fg,
default_bg,
..Default::default()
})
}
@@ -605,6 +615,10 @@ impl<'a> KdlLayoutParser<'a> {
.map(|name| name.to_string());
let contents_file =
kdl_get_string_property_or_child_value_with_error!(kdl_node, "contents_file");
let default_fg = kdl_get_string_property_or_child_value_with_error!(kdl_node, "default_fg")
.map(|s| s.to_string());
let default_bg = kdl_get_string_property_or_child_value_with_error!(kdl_node, "default_bg")
.map(|s| s.to_string());
self.assert_no_mixed_children_and_properties(kdl_node)?;
let pane_initial_contents = contents_file.and_then(|contents_file| {
self.file_name
@@ -625,6 +639,8 @@ impl<'a> KdlLayoutParser<'a> {
pinned,
borderless,
pane_initial_contents,
default_fg,
default_bg,
..Default::default()
})
}
+6
View File
@@ -5927,6 +5927,8 @@ impl PaneInfo {
plugin_url,
is_selectable,
index_in_pane_group: Default::default(), // we don't serialize this
default_fg: None,
default_bg: None,
};
Ok((tab_position, pane_info))
}
@@ -6075,6 +6077,8 @@ fn serialize_and_deserialize_session_info_with_data() {
plugin_url: None,
is_selectable: true,
index_in_pane_group: Default::default(), // we don't serialize this
default_fg: None,
default_bg: None,
},
PaneInfo {
id: 1,
@@ -6100,6 +6104,8 @@ fn serialize_and_deserialize_session_info_with_data() {
plugin_url: Some("i_am_a_fake_plugin".to_owned()),
is_selectable: true,
index_in_pane_group: Default::default(), // we don't serialize this
default_fg: None,
default_bg: None,
},
];
let mut panes = HashMap::new();
+6 -1
View File
@@ -1836,7 +1836,8 @@ impl TryFrom<Action> for ProtobufAction {
| Action::SwitchSession { .. }
| Action::SaveSession
| Action::ListTabs { .. }
| Action::CurrentTabInfo { .. } => Err("Unsupported action"),
| Action::CurrentTabInfo { .. }
| Action::SetPaneColor { .. } => Err("Unsupported action"),
}
}
}
@@ -2916,6 +2917,8 @@ impl TryFrom<ProtobufTiledPaneLayout> for TiledPaneLayout {
run_instructions_to_ignore,
hide_floating_panes: protobuf.hide_floating_panes,
pane_initial_contents: protobuf.pane_initial_contents,
default_fg: None,
default_bg: None,
})
}
}
@@ -2972,6 +2975,8 @@ impl TryFrom<ProtobufFloatingPaneLayout> for FloatingPaneLayout {
pane_initial_contents: protobuf.pane_initial_contents,
logical_position: protobuf.logical_position.map(|p| p as usize),
borderless: protobuf.borderless,
default_fg: None,
default_bg: None,
})
}
}
+2
View File
@@ -406,6 +406,8 @@ message PaneInfo {
optional string plugin_url = 21;
bool is_selectable = 22;
repeated IndexInPaneGroup index_in_pane_group = 23;
optional string default_fg = 24;
optional string default_bg = 25;
}
message IndexInPaneGroup {
+8
View File
@@ -1560,6 +1560,8 @@ impl TryFrom<ProtobufPaneInfo> for PaneInfo {
)
})
.collect(),
default_fg: protobuf_pane_info.default_fg,
default_bg: protobuf_pane_info.default_bg,
})
}
}
@@ -1603,6 +1605,8 @@ impl TryFrom<PaneInfo> for ProtobufPaneInfo {
index: index as u32,
})
.collect(),
default_fg: pane_info.default_fg,
default_bg: pane_info.default_bg,
})
}
}
@@ -2511,6 +2515,8 @@ fn serialize_session_update_event_with_non_default_values() {
plugin_url: None,
is_selectable: true,
index_in_pane_group: index_in_pane_group_1,
default_fg: None,
default_bg: None,
},
PaneInfo {
id: 1,
@@ -2536,6 +2542,8 @@ fn serialize_session_update_event_with_non_default_values() {
plugin_url: Some("i_am_a_fake_plugin".to_owned()),
is_selectable: true,
index_in_pane_group: index_in_pane_group_2,
default_fg: None,
default_bg: None,
},
];
panes.insert(0, panes_list);
@@ -198,6 +198,7 @@ enum CommandName {
OpenEditPaneInPlaceOfPaneId = 203;
HideFloatingPanes = 204;
ShowFloatingPanes = 205;
SetPaneColor = 206;
}
message PluginCommand {
@@ -345,6 +346,7 @@ message PluginCommand {
OpenEditPaneInPlaceOfPaneIdPayload open_edit_pane_in_place_of_pane_id_payload = 154;
HideFloatingPanesPayload hide_floating_panes_payload = 155;
ShowFloatingPanesPayload show_floating_panes_payload = 156;
SetPaneColorPayload set_pane_color_payload = 157;
}
}
@@ -1212,3 +1214,9 @@ message HideFloatingPanesResponse {
string error = 2;
}
}
message SetPaneColorPayload {
PaneId pane_id = 1;
optional string fg = 2;
optional string bg = 3;
}
+20 -1
View File
@@ -102,7 +102,7 @@ pub use super::generated_api::api::{
SaveLayoutPayload, SaveLayoutResponse as ProtobufSaveLayoutResponse, SaveSessionPayload,
SaveSessionResponse as ProtobufSaveSessionResponse, ScrollDownInPaneIdPayload,
ScrollToBottomInPaneIdPayload, ScrollToTopInPaneIdPayload, ScrollUpInPaneIdPayload,
SetFloatingPanePinnedPayload, SetPaneBorderlessPayload,
SetFloatingPanePinnedPayload, SetPaneBorderlessPayload, SetPaneColorPayload,
SetSelfMouseSelectionSupportPayload, SetTimeoutPayload, ShowCursorPayload,
ShowFloatingPanesPayload as ProtobufShowFloatingPanesPayload,
ShowFloatingPanesResponse as ProtobufShowFloatingPanesResponse, ShowPaneWithIdPayload,
@@ -2423,6 +2423,17 @@ impl TryFrom<ProtobufPluginCommand> for PluginCommand {
None => Ok(PluginCommand::ShowFloatingPanes { tab_id: None }),
_ => Err("Mismatched payload for ShowFloatingPanes"),
},
Some(CommandName::SetPaneColor) => match protobuf_plugin_command.payload {
Some(Payload::SetPaneColorPayload(payload)) => match payload.pane_id {
Some(pane_id) => Ok(PluginCommand::SetPaneColor(
pane_id.try_into()?,
payload.fg,
payload.bg,
)),
None => Err("Malformed SetPaneColor payload"),
},
_ => Err("Mismatched payload for SetPaneColor"),
},
None => Err("Unrecognized plugin command"),
}
}
@@ -3975,6 +3986,14 @@ impl TryFrom<PluginCommand> for ProtobufPluginCommand {
},
)),
}),
PluginCommand::SetPaneColor(pane_id, fg, bg) => Ok(ProtobufPluginCommand {
name: CommandName::SetPaneColor as i32,
payload: Some(Payload::SetPaneColorPayload(SetPaneColorPayload {
pane_id: Some(pane_id.try_into()?),
fg,
bg,
})),
}),
}
}
}
+39 -2
View File
@@ -36,6 +36,8 @@ pub struct PaneLayoutManifest {
pub title: Option<String>,
pub is_focused: bool,
pub pane_contents: Option<String>,
pub default_fg: Option<String>,
pub default_bg: Option<String>,
}
pub fn serialize_session_layout(
@@ -182,6 +184,16 @@ fn serialize_tiled_pane(
);
serialize_tiled_layout_attributes(&layout, ignore_size, &mut tiled_pane_node);
if let Some(ref fg) = layout.default_fg {
tiled_pane_node
.entries_mut()
.push(KdlEntry::new_prop("default_fg", fg.to_owned()));
}
if let Some(ref bg) = layout.default_bg {
tiled_pane_node
.entries_mut()
.push(KdlEntry::new_prop("default_bg", bg.to_owned()));
}
let has_child_attributes = !layout.children.is_empty()
|| layout.external_children_index.is_some()
|| !args.is_empty()
@@ -659,6 +671,16 @@ fn serialize_floating_pane(
has_children,
&mut floating_pane_node,
);
if let Some(ref fg) = layout.default_fg {
floating_pane_node
.entries_mut()
.push(KdlEntry::new_prop("default_fg", fg.to_owned()));
}
if let Some(ref bg) = layout.default_bg {
floating_pane_node
.entries_mut()
.push(KdlEntry::new_prop("default_bg", bg.to_owned()));
}
serialize_start_suspended(&command, &mut floating_pane_node_children);
serialize_floating_layout_attributes(&layout, &mut floating_pane_node_children);
serialize_args(args, &mut floating_pane_node_children);
@@ -709,7 +731,16 @@ fn tiled_pane_layout_from_manifest(
manifest: Option<&PaneLayoutManifest>,
split_size: Option<SplitSize>,
) -> TiledPaneLayout {
let (run, borderless, is_expanded_in_stack, name, focus, pane_initial_contents) = manifest
let (
run,
borderless,
is_expanded_in_stack,
name,
focus,
pane_initial_contents,
default_fg,
default_bg,
) = manifest
.map(|g| {
let mut run = g.run.clone();
if let Some(cwd) = &g.cwd {
@@ -726,9 +757,11 @@ fn tiled_pane_layout_from_manifest(
g.title.clone(),
Some(g.is_focused),
g.pane_contents.clone(),
g.default_fg.clone(),
g.default_bg.clone(),
)
})
.unwrap_or((None, None, false, None, None, None));
.unwrap_or((None, None, false, None, None, None, None, None));
TiledPaneLayout {
split_size,
run,
@@ -737,6 +770,8 @@ fn tiled_pane_layout_from_manifest(
name,
focus,
pane_initial_contents,
default_fg,
default_bg,
..Default::default()
}
}
@@ -845,6 +880,8 @@ fn get_floating_panes_layout_from_panegeoms(
pane_initial_contents: m.pane_contents.clone(),
logical_position: None,
borderless: Some(m.is_borderless),
default_fg: m.default_fg.clone(),
default_bg: m.default_bg.clone(),
}
})
.collect()