Title frames (#5318)

* initial implementation

* improve single line title design

* hint text plugin infra

* add proto regen task

* display alt text in status bar

* don't display text with full frames

* style alt hover text

* fix + style control own pane hover

* make multiplayer indications responsive

* update snapshots

* plugin api

* single pane as tab

* better scroll styling

* fix tests

* tab-bar plus hover

* plugin surface tests

* integration tests

* adjust all integration tests

* reduce hover noise

* add pane id to in place

* more integration tests

* style: rustfmt

* update plugin assets

* update assets and snapshots

* add pr
This commit is contained in:
Aram Drevekenin
2026-06-29 18:10:59 +02:00
committed by GitHub
parent eabb3f5b61
commit 245f5141c9
292 changed files with 5558 additions and 3152 deletions
+3 -3
View File
@@ -18,7 +18,7 @@ pub fn claim_first_terminal_and_wait_for_prompt(zellij: &TestSession) -> FakePty
|grid_snapshot| {
grid_snapshot.tab_bar_appears()
&& grid_snapshot.status_bar_appears()
&& grid_snapshot.cursor_is_at(col(3).row(2))
&& grid_snapshot.cursor_is_at(col(2).row(1))
},
);
terminal
@@ -30,7 +30,7 @@ pub fn split_right_and_wait_for_prompt(zellij: &TestSession) -> FakePtyHandle {
let terminal = zellij.expect_pty_spawn();
terminal.output(PROMPT);
zellij.wait_until("right terminal prompt rendered", |grid_snapshot| {
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(63).row(2))
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(62).row(2))
});
terminal
}
@@ -41,7 +41,7 @@ pub fn split_down_and_wait_for_prompt(zellij: &TestSession) -> FakePtyHandle {
let terminal = zellij.expect_pty_spawn();
terminal.output(PROMPT);
zellij.wait_until("lower terminal prompt rendered", |grid_snapshot| {
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(3).row(13))
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(2).row(13))
});
terminal
}
+1
View File
@@ -127,6 +127,7 @@ fn new_pane_cli_action(
floating,
in_place: false,
close_replaced_pane: false,
pane_id: None,
name: None,
close_on_exit,
start_suspended,
+1
View File
@@ -156,6 +156,7 @@ disable_session_metadata true
visual_bell false
mouse_mode false
advanced_mouse_actions false
pane_frame_style "titles"
theme "default"
"#;
+3 -2
View File
@@ -54,7 +54,7 @@ fn resize_terminal_window() {
zellij.wait_until("app re-rendered at the new window size", |grid_snapshot| {
grid_snapshot.contains("Ctrl +")
&& grid_snapshot.tab_bar_appears()
&& grid_snapshot.cursor_is_at(col(53).row(2))
&& grid_snapshot.cursor_is_at(col(52).row(2))
});
assert_snapshot!(normalized(&grid_snapshot));
zellij.quit();
@@ -70,7 +70,7 @@ fn status_bar_loads_custom_keybindings() {
let grid_snapshot = zellij.wait_until(
"status bar reflects the custom keybindings",
|grid_snapshot| grid_snapshot.cursor_is_at(col(3).row(2)) && grid_snapshot.contains("LOCK"),
|grid_snapshot| grid_snapshot.cursor_is_at(col(2).row(1)) && grid_snapshot.contains("LOCK"),
);
assert_snapshot!(normalized(&grid_snapshot));
}
@@ -91,6 +91,7 @@ fn use_custom_layout_with_relative_path() {
let grid_snapshot = zellij.wait_until("upside-down layout loaded from disk", |grid_snapshot| {
grid_snapshot.tab_bar_appears()
&& grid_snapshot.status_bar_appears()
&& grid_snapshot.contains("Zellij (test")
&& grid_snapshot.cursor.is_some()
});
+4 -4
View File
@@ -23,7 +23,7 @@ fn starts_with_one_terminal() {
let grid_snapshot = zellij.wait_until("steady loaded state", |grid_snapshot| {
grid_snapshot.tab_bar_appears()
&& grid_snapshot.status_bar_appears()
&& grid_snapshot.cursor_is_at(col(3).row(2))
&& grid_snapshot.cursor_is_at(col(2).row(1))
});
assert_snapshot!(normalized(&grid_snapshot));
zellij.quit();
@@ -35,7 +35,7 @@ fn split_terminals_vertically() {
claim_first_terminal_and_wait_for_prompt(&zellij);
split_right_and_wait_for_prompt(&zellij);
let grid_snapshot = zellij.wait_until("split rendered in normal mode", |grid_snapshot| {
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(63).row(2))
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(62).row(2))
});
assert_snapshot!(normalized(&grid_snapshot));
zellij.quit();
@@ -58,7 +58,7 @@ fn resize_pane() {
let cursor_shift_left = (resized_cols.saturating_sub(initial_cols)) as usize;
let grid_snapshot = zellij.wait_until("resized layout in normal mode", |grid_snapshot| {
grid_snapshot.status_bar_appears()
&& grid_snapshot.cursor_is_at(col(63 - cursor_shift_left).row(2))
&& grid_snapshot.cursor_is_at(col(62 - cursor_shift_left).row(2))
});
assert_snapshot!(normalized(&grid_snapshot));
zellij.quit();
@@ -79,7 +79,7 @@ fn command_pane_closes_on_exit() {
zellij.wait_until(
"right terminal closed, focus back on first",
|grid_snapshot| {
!grid_snapshot.contains("about to exit") && grid_snapshot.cursor_is_at(col(3).row(2))
!grid_snapshot.contains("about to exit") && grid_snapshot.cursor_is_at(col(2).row(1))
},
);
zellij.quit();
+5 -5
View File
@@ -75,7 +75,7 @@ fn send_blocking_command_through_the_cli() {
assert_eq!(blocking_command.wait_for_exit(), 42);
let grid_snapshot = zellij.wait_until("floating pane closed on exit", |grid_snapshot| {
!grid_snapshot.contains("PIN") && grid_snapshot.cursor_is_at(col(3).row(2))
!grid_snapshot.contains("PIN") && grid_snapshot.cursor_is_at(col(2).row(1))
});
assert_snapshot!(normalized(&grid_snapshot));
zellij.quit();
@@ -100,7 +100,7 @@ fn watcher_client_functionality() {
let right_terminal = zellij.expect_pty_spawn();
right_terminal.output(PROMPT);
watcher.wait_until("watcher sees the split", |grid_snapshot| {
grid_snapshot.contains("┐┌")
grid_snapshot.contains("│")
});
let ignored_new_tab_from_watcher = [keys::ctrl('t'), keys::key('n')].concat();
@@ -112,7 +112,7 @@ fn watcher_client_functionality() {
"watcher keeps receiving output while no main client is attached",
|grid_snapshot| {
grid_snapshot.contains("WATCHER_DONE")
&& grid_snapshot.contains("┐┌")
&& grid_snapshot.contains("│")
&& !grid_snapshot.contains("Tab #2")
},
);
@@ -123,7 +123,7 @@ fn watcher_client_functionality() {
|grid_snapshot| {
grid_snapshot.status_bar_appears()
&& grid_snapshot.contains("WATCHER_DONE")
&& grid_snapshot.contains("┐┌")
&& grid_snapshot.contains("│")
},
);
assert_snapshot!(normalized(&main_snapshot));
@@ -132,7 +132,7 @@ fn watcher_client_functionality() {
watcher.wait_until("watcher mirrors the re-attached session", |grid_snapshot| {
grid_snapshot.status_bar_appears()
&& grid_snapshot.contains("WATCHER_DONE")
&& grid_snapshot.contains("┐┌")
&& grid_snapshot.contains("│")
&& !grid_snapshot.contains("Tab #2")
});
assert_snapshot!(normalized(&watcher_snapshot));
+19 -11
View File
@@ -21,7 +21,7 @@ fn mirrored_sessions() {
second_client.wait_until("second client loaded on the first tab", |grid_snapshot| {
grid_snapshot.tab_bar_appears()
&& grid_snapshot.status_bar_appears()
&& grid_snapshot.cursor_is_at(col(3).row(2))
&& grid_snapshot.cursor_is_at(col(2).row(1))
});
second_client.send_stdin(&keys::ctrl('p'));
@@ -34,7 +34,7 @@ fn mirrored_sessions() {
&& session_name_rendered(grid_snapshot)
&& grid_snapshot.status_bar_appears()
&& grid_snapshot.contains("Pane #2")
&& grid_snapshot.cursor_is_at(col(63).row(2))
&& grid_snapshot.cursor_is_at(col(62).row(2))
};
let main_grid = zellij.wait_until(
"main client follows the second client's focus into the split it never asked for",
@@ -56,8 +56,16 @@ fn mirrored_sessions() {
#[test]
fn multiple_users_in_same_pane_and_tab() {
let mut zellij = start_zellij();
claim_first_terminal_and_wait_for_prompt(&zellij);
let mut zellij = TestRunner::new(TERMINAL_SIZE)
.with_config("pane_frame_style \"full\"")
.start();
let terminal = zellij.expect_pty_spawn();
terminal.output(PROMPT);
zellij.wait_until("first terminal prompt rendered", |grid_snapshot| {
grid_snapshot.tab_bar_appears()
&& grid_snapshot.status_bar_appears()
&& grid_snapshot.contains("$ ")
});
let second_client = zellij.attach_client(TERMINAL_SIZE);
let second_grid =
@@ -91,7 +99,7 @@ fn multiple_users_in_different_panes_and_same_tab() {
let second_client = zellij.attach_client(TERMINAL_SIZE);
second_client.wait_until("second client loaded on the first tab", |grid_snapshot| {
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(3).row(2))
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(2).row(1))
});
second_client.send_stdin(&keys::ctrl('p'));
@@ -105,7 +113,7 @@ fn multiple_users_in_different_panes_and_same_tab() {
grid_snapshot.tab_bar_appears()
&& session_name_rendered(grid_snapshot)
&& grid_snapshot.status_bar_appears()
&& grid_snapshot.cursor_is_at(col(63).row(2))
&& grid_snapshot.cursor_is_at(col(62).row(2))
},
);
let main_grid = zellij.wait_until(
@@ -115,7 +123,7 @@ fn multiple_users_in_different_panes_and_same_tab() {
&& session_name_rendered(grid_snapshot)
&& grid_snapshot.contains("Pane #2")
&& grid_snapshot.status_bar_appears()
&& grid_snapshot.cursor_is_at(col(3).row(2))
&& grid_snapshot.cursor_is_at(col(2).row(2))
},
);
assert_snapshot!(normalized(&main_grid));
@@ -131,7 +139,7 @@ fn multiple_users_in_different_tabs() {
let second_client = zellij.attach_client(TERMINAL_SIZE);
second_client.wait_until("second client loaded on the first tab", |grid_snapshot| {
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(3).row(2))
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(2).row(1))
});
second_client.send_stdin(&keys::ctrl('t'));
@@ -145,7 +153,7 @@ fn multiple_users_in_different_tabs() {
&& session_name_rendered(grid_snapshot)
&& grid_snapshot.status_bar_appears()
&& grid_snapshot.contains("Tab #2")
&& grid_snapshot.cursor_is_at(col(3).row(2))
&& grid_snapshot.cursor_is_at(col(2).row(1))
});
let main_grid = zellij.wait_until(
"main client sees the new tab while staying on the first tab",
@@ -154,7 +162,7 @@ fn multiple_users_in_different_tabs() {
&& session_name_rendered(grid_snapshot)
&& grid_snapshot.status_bar_appears()
&& grid_snapshot.contains("Tab #2")
&& grid_snapshot.cursor_is_at(col(3).row(2))
&& grid_snapshot.cursor_is_at(col(2).row(1))
},
);
assert_snapshot!(normalized(&main_grid));
@@ -173,7 +181,7 @@ fn detach_and_attach_session() {
let right_terminal = zellij.expect_pty_spawn();
right_terminal.output(PROMPT);
zellij.wait_until("right terminal prompt rendered", |grid_snapshot| {
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(63).row(2))
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(62).row(2))
});
right_terminal.output(b"I am some text");
+1 -1
View File
@@ -48,7 +48,7 @@ fn focus_next_pane_via_tmux_mode() {
zellij.send_stdin(&keys::ENTER);
let grid_snapshot = zellij.wait_until("focus cycled to the other pane", |grid_snapshot| {
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(3).row(2))
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(2).row(2))
});
assert_snapshot!(normalized(&grid_snapshot));
zellij.quit();
+6 -6
View File
@@ -138,7 +138,7 @@ fn return_to_normal_mode() {
zellij.send_stdin(&keys::ENTER);
let grid_snapshot = zellij.wait_until("returned to normal mode", |grid_snapshot| {
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(3).row(2))
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(2).row(1))
});
assert_snapshot!(normalized(&grid_snapshot));
zellij.quit();
@@ -187,7 +187,7 @@ fn tmux_mode() {
right_terminal.output(PROMPT);
let grid_snapshot = zellij.wait_until("right terminal opened via tmux mode", |grid_snapshot| {
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(63).row(2))
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(62).row(2))
});
assert_snapshot!(normalized(&grid_snapshot));
zellij.quit();
@@ -226,14 +226,14 @@ fn scrolling_inside_a_pane() {
let right_terminal = zellij.expect_pty_spawn();
right_terminal.output(PROMPT);
zellij.wait_until("right terminal prompt rendered", |grid_snapshot| {
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(63).row(2))
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(62).row(2))
});
for line in 1..=21 {
for line in 1..=22 {
right_terminal.output(format!("line{}\r\n", line).as_bytes());
}
zellij.wait_until("right terminal filled past its viewport", |grid_snapshot| {
grid_snapshot.contains("line21")
grid_snapshot.contains("line22")
});
zellij.send_stdin(&keys::ctrl('s'));
@@ -242,7 +242,7 @@ fn scrolling_inside_a_pane() {
let grid_snapshot =
zellij.wait_until("scrolled up one line inside the pane", |grid_snapshot| {
grid_snapshot.contains("SCROLL: 2/2") && grid_snapshot.contains("PgDn|PgUp")
grid_snapshot.contains("SCROLL: 2/2") && grid_snapshot.contains("PgDn|PgUp")
});
assert_snapshot!(normalized(&grid_snapshot));
zellij.quit();
+2 -2
View File
@@ -24,7 +24,7 @@ fn focus_pane_with_mouse() {
zellij.send_stdin(&sgr_mouse_report(2, 5, 0));
let grid_snapshot = zellij.wait_until("focus moved back to the left pane", |grid_snapshot| {
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(3).row(2))
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(2).row(2))
});
assert_snapshot!(normalized(&grid_snapshot));
zellij.quit();
@@ -78,7 +78,7 @@ fn pin_floating_panes() {
|grid_snapshot| {
grid_snapshot.status_bar_appears()
&& grid_snapshot.contains("PIN [+]")
&& grid_snapshot.cursor_is_at(col(3).row(2))
&& grid_snapshot.cursor_is_at(col(2).row(1))
},
);
+144 -21
View File
@@ -13,7 +13,7 @@ fn cannot_split_terminals_vertically_when_active_terminal_is_too_small() {
let terminal = zellij.expect_pty_spawn();
terminal.output(PROMPT);
zellij.wait_until("first terminal prompt rendered", |grid_snapshot| {
grid_snapshot.cursor_is_at(col(3).row(2))
grid_snapshot.cursor_is_at(col(2).row(1))
});
let (width_before_split, _) = terminal.wait_for_size("first terminal sized", |_, _| true);
@@ -50,7 +50,7 @@ fn key_after_mode_switch_is_interpreted_in_new_mode_not_leaked_to_pane() {
let second_terminal = zellij.expect_pty_spawn();
second_terminal.output(PROMPT);
zellij.wait_until("split-right interpreted in pane mode", |grid_snapshot| {
grid_snapshot.cursor_is_at(col(63).row(2))
grid_snapshot.cursor_is_at(col(62).row(2))
});
assert!(!first_terminal.stdin_bytes().contains(&keys::key('r')[0]));
@@ -67,7 +67,7 @@ fn toggle_pane_fullscreen() {
zellij.send_stdin(&keys::key('f'));
let grid_snapshot = zellij.wait_until("focused pane is fullscreen", |grid_snapshot| {
grid_snapshot.cursor_is_at(col(3).row(2))
grid_snapshot.cursor_is_at(col(2).row(2))
&& grid_snapshot.contains("LOCK")
&& grid_snapshot.contains("(FULLSCREEN)")
});
@@ -86,7 +86,7 @@ fn close_pane() {
let grid_snapshot =
zellij.wait_until("right pane closed, focus back on first", |grid_snapshot| {
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(3).row(2))
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(2).row(1))
});
assert_snapshot!(normalized(&grid_snapshot));
zellij.quit();
@@ -116,7 +116,7 @@ fn pane_closes_when_its_process_exits() {
let grid_snapshot =
zellij.wait_until("right pane closed, focus back on first", |grid_snapshot| {
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(3).row(2))
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(2).row(1))
});
assert_snapshot!(normalized(&grid_snapshot));
zellij.quit();
@@ -145,6 +145,7 @@ fn toggle_floating_panes() {
fn undo_rename_pane() {
let mut zellij = start_zellij();
claim_first_terminal_and_wait_for_prompt(&zellij);
split_right_and_wait_for_prompt(&zellij);
zellij.send_stdin(&keys::ctrl('p'));
zellij.send_stdin(&keys::key('c'));
@@ -153,7 +154,9 @@ fn undo_rename_pane() {
zellij.send_stdin(&keys::ESC);
let grid_snapshot = zellij.wait_until("pane name reverted to default", |grid_snapshot| {
grid_snapshot.contains("Pane #1") && grid_snapshot.contains("LOCK")
grid_snapshot.contains("Pane #2")
&& !grid_snapshot.contains("aa")
&& grid_snapshot.contains("LOCK")
});
assert_snapshot!(normalized(&grid_snapshot));
zellij.quit();
@@ -200,7 +203,7 @@ fn move_focus_up_in_pane_mode() {
zellij.send_stdin(&keys::ENTER);
let grid_snapshot = zellij.wait_until("focus moved to the upper pane", |grid_snapshot| {
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(3).row(2))
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(2).row(2))
});
assert_snapshot!(normalized(&grid_snapshot));
zellij.quit();
@@ -215,14 +218,14 @@ fn move_focus_down_in_pane_mode() {
zellij.send_stdin(&keys::ctrl('p'));
zellij.send_stdin(&keys::key('k'));
zellij.wait_until("focus moved to the upper pane", |grid_snapshot| {
grid_snapshot.cursor_is_at(col(3).row(2))
grid_snapshot.cursor_is_at(col(2).row(2))
});
zellij.send_stdin(&keys::key('j'));
zellij.send_stdin(&keys::ENTER);
let grid_snapshot = zellij.wait_until("focus moved back to the lower pane", |grid_snapshot| {
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(3).row(13))
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(2).row(13))
});
assert_snapshot!(normalized(&grid_snapshot));
zellij.quit();
@@ -368,7 +371,7 @@ fn move_focus_or_tab_moves_focus_between_panes() {
zellij.send_stdin(&keys::alt('h'));
let grid_snapshot = zellij.wait_until("focus moved to the left pane", |grid_snapshot| {
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(3).row(2))
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(2).row(2))
});
assert_snapshot!(normalized(&grid_snapshot));
zellij.quit();
@@ -408,7 +411,7 @@ fn new_pane_in_pane_mode() {
zellij.send_stdin(&keys::ctrl('p'));
zellij.send_stdin(&keys::key('n'));
let grid_snapshot = spawn_second_pane_and_wait_for_grid(&zellij, col(63).row(2));
let grid_snapshot = spawn_second_pane_and_wait_for_grid(&zellij, col(62).row(2));
assert_snapshot!(normalized(&grid_snapshot));
zellij.quit();
}
@@ -419,7 +422,7 @@ fn new_pane_in_normal_mode() {
claim_first_terminal_and_wait_for_prompt(&zellij);
zellij.send_stdin(&keys::alt('n'));
let grid_snapshot = spawn_second_pane_and_wait_for_grid(&zellij, col(63).row(2));
let grid_snapshot = spawn_second_pane_and_wait_for_grid(&zellij, col(62).row(2));
assert_snapshot!(normalized(&grid_snapshot));
zellij.quit();
}
@@ -431,7 +434,7 @@ fn split_pane_downward() {
zellij.send_stdin(&keys::ctrl('p'));
zellij.send_stdin(&keys::key('d'));
let grid_snapshot = spawn_second_pane_and_wait_for_grid(&zellij, col(3).row(13));
let grid_snapshot = spawn_second_pane_and_wait_for_grid(&zellij, col(2).row(13));
assert_snapshot!(normalized(&grid_snapshot));
zellij.quit();
}
@@ -443,7 +446,7 @@ fn new_stacked_pane() {
zellij.send_stdin(&keys::ctrl('p'));
zellij.send_stdin(&keys::key('s'));
let grid_snapshot = spawn_second_pane_and_wait_for_grid(&zellij, col(3).row(3));
let grid_snapshot = spawn_second_pane_and_wait_for_grid(&zellij, col(2).row(3));
assert_snapshot!(normalized(&grid_snapshot));
zellij.quit();
}
@@ -459,7 +462,7 @@ fn move_focus_left_in_pane_mode() {
zellij.send_stdin(&keys::ENTER);
let grid_snapshot = zellij.wait_until("focus moved to the left pane", |grid_snapshot| {
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(3).row(2))
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(2).row(2))
});
assert_snapshot!(normalized(&grid_snapshot));
zellij.quit();
@@ -474,14 +477,14 @@ fn move_focus_right_in_pane_mode() {
zellij.send_stdin(&keys::ctrl('p'));
zellij.send_stdin(&keys::key('h'));
zellij.wait_until("focus moved to the left pane", |grid_snapshot| {
grid_snapshot.cursor_is_at(col(3).row(2))
grid_snapshot.cursor_is_at(col(2).row(2))
});
zellij.send_stdin(&keys::key('l'));
zellij.send_stdin(&keys::ENTER);
let grid_snapshot = zellij.wait_until("focus moved back to the right pane", |grid_snapshot| {
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(63).row(2))
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(62).row(2))
});
assert_snapshot!(normalized(&grid_snapshot));
zellij.quit();
@@ -498,27 +501,147 @@ fn switch_focus_in_pane_mode() {
zellij.send_stdin(&keys::ENTER);
let grid_snapshot = zellij.wait_until("focus switched to the other pane", |grid_snapshot| {
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(3).row(2))
grid_snapshot.status_bar_appears() && grid_snapshot.cursor_is_at(col(2).row(2))
});
assert_snapshot!(normalized(&grid_snapshot));
zellij.quit();
}
fn cycle_pane_frames(zellij: &TestSession) {
zellij.send_stdin(&keys::ctrl('p'));
zellij.send_stdin(&keys::key('z'));
}
#[test]
fn toggle_pane_frames() {
let mut zellij = start_zellij();
claim_first_terminal_and_wait_for_prompt(&zellij);
split_right_and_wait_for_prompt(&zellij);
zellij.send_stdin(&keys::ctrl('p'));
zellij.send_stdin(&keys::key('z'));
zellij.wait_until("tiled panes start in titles mode", |grid_snapshot| {
grid_snapshot.contains("Pane #1")
&& grid_snapshot.contains("Pane #2")
&& !grid_snapshot.contains("┌")
});
let grid_snapshot = zellij.wait_until("pane frames removed from both panes", |grid_snapshot| {
cycle_pane_frames(&zellij);
zellij.wait_until("titles cycle to frameless", |grid_snapshot| {
grid_snapshot.status_bar_appears()
&& !grid_snapshot.contains("Pane #1")
&& !grid_snapshot.contains("Pane #2")
&& !grid_snapshot.contains("┌")
&& grid_snapshot.cursor_is_at(col(62).row(1))
});
cycle_pane_frames(&zellij);
zellij.wait_until("frameless cycles to full frames", |grid_snapshot| {
grid_snapshot.contains("┌")
&& grid_snapshot.contains("Pane #1")
&& grid_snapshot.contains("Pane #2")
});
cycle_pane_frames(&zellij);
let grid_snapshot = zellij.wait_until("full frames cycle back to titles", |grid_snapshot| {
grid_snapshot.status_bar_appears()
&& grid_snapshot.contains("Pane #1")
&& grid_snapshot.contains("Pane #2")
&& !grid_snapshot.contains("┌")
});
assert_snapshot!(normalized(&grid_snapshot));
zellij.quit();
}
#[test]
fn toggle_frames_with_single_pane() {
let mut zellij = start_zellij();
claim_first_terminal_and_wait_for_prompt(&zellij);
zellij.wait_until(
"lone pane in titles mode omits its title",
|grid_snapshot| {
grid_snapshot.status_bar_appears()
&& !grid_snapshot.contains("Pane #1")
&& !grid_snapshot.contains("┌")
},
);
cycle_pane_frames(&zellij);
zellij.wait_until("lone frameless pane stays untitled", |grid_snapshot| {
grid_snapshot.status_bar_appears()
&& !grid_snapshot.contains("Pane #1")
&& !grid_snapshot.contains("┌")
});
cycle_pane_frames(&zellij);
let grid_snapshot =
zellij.wait_until("lone pane gains a full frame and title", |grid_snapshot| {
grid_snapshot.status_bar_appears()
&& grid_snapshot.contains("┌")
&& grid_snapshot.contains("Pane #1")
});
assert_snapshot!(normalized(&grid_snapshot));
zellij.quit();
}
#[test]
fn toggle_frames_with_floating_pane() {
let mut zellij = start_zellij();
claim_first_terminal_and_wait_for_prompt(&zellij);
zellij.send_stdin(&keys::ctrl('p'));
zellij.send_stdin(&keys::key('w'));
let floating_terminal = zellij.expect_pty_spawn();
floating_terminal.output(PROMPT);
zellij.wait_until("floating pane appeared with a frame", |grid_snapshot| {
grid_snapshot.contains("STAGGERED") && grid_snapshot.contains("┌")
});
cycle_pane_frames(&zellij);
zellij.wait_until(
"floating pane keeps its frame in frameless mode",
|grid_snapshot| grid_snapshot.status_bar_appears() && grid_snapshot.contains("┌"),
);
cycle_pane_frames(&zellij);
let grid_snapshot = zellij.wait_until(
"floating pane keeps its frame in full mode",
|grid_snapshot| {
grid_snapshot.status_bar_appears()
&& grid_snapshot.contains("┌")
&& grid_snapshot.contains("Pane #1")
},
);
assert_snapshot!(normalized(&grid_snapshot));
zellij.quit();
}
#[test]
fn toggle_frames_with_stacked_panes() {
let mut zellij = start_zellij();
claim_first_terminal_and_wait_for_prompt(&zellij);
zellij.send_stdin(&keys::ctrl('p'));
zellij.send_stdin(&keys::key('s'));
spawn_second_pane_and_wait_for_grid(&zellij, col(2).row(3));
zellij.wait_until("stacked panes show their titles", |grid_snapshot| {
grid_snapshot.contains("Pane #1")
&& grid_snapshot.contains("Pane #2")
&& !grid_snapshot.contains("┌")
});
cycle_pane_frames(&zellij);
zellij.wait_until("stacked panes cycle to frameless", |grid_snapshot| {
grid_snapshot.status_bar_appears() && !grid_snapshot.contains("┌")
});
cycle_pane_frames(&zellij);
let grid_snapshot = zellij.wait_until("stacked panes cycle to full frames", |grid_snapshot| {
grid_snapshot.status_bar_appears()
&& grid_snapshot.contains("┌")
&& grid_snapshot.contains("Pane #1")
&& grid_snapshot.contains("Pane #2")
});
assert_snapshot!(normalized(&grid_snapshot));
zellij.quit();
}
+2 -2
View File
@@ -11,7 +11,7 @@ fn focus_left_pane(zellij: &TestSession) {
zellij.send_stdin(&keys::ctrl('p'));
zellij.send_stdin(&keys::key('h'));
zellij.wait_until("focus moved to the left pane", |grid_snapshot| {
grid_snapshot.cursor_is_at(col(3).row(2))
grid_snapshot.cursor_is_at(col(2).row(2))
});
}
@@ -19,7 +19,7 @@ fn focus_upper_pane(zellij: &TestSession) {
zellij.send_stdin(&keys::ctrl('p'));
zellij.send_stdin(&keys::key('k'));
zellij.wait_until("focus moved to the upper pane", |grid_snapshot| {
grid_snapshot.cursor_is_at(col(3).row(2))
grid_snapshot.cursor_is_at(col(2).row(2))
});
}
@@ -50,7 +50,7 @@ fn quit_and_resurrect_session() {
let new_pane = zellij.expect_pty_spawn();
new_pane.output(PROMPT);
zellij.wait_until("new pane opened before serialization", |grid_snapshot| {
grid_snapshot.contains("┐┌")
grid_snapshot.contains("│")
});
zellij.save_session();
@@ -64,7 +64,7 @@ fn quit_and_resurrect_session() {
grid_snapshot.contains("Zellij (test")
&& grid_snapshot.contains("alpha")
&& grid_snapshot.contains("beta")
&& grid_snapshot.contains("┐┌")
&& grid_snapshot.contains("│")
&& grid_snapshot.status_bar_appears()
},
);
+23 -13
View File
@@ -28,7 +28,9 @@ fn page_scroll_up() {
zellij.send_stdin(&keys::ctrl('b'));
let grid_snapshot = zellij.wait_until("scrolled up by a page", |grid_snapshot| {
grid_snapshot.contains("PgDn|PgUp") && !grid_snapshot.contains(LAST_LINE)
grid_snapshot.contains("PgDn|PgUp")
&& !grid_snapshot.contains(LAST_LINE)
&& grid_snapshot.contains("SCROLL 19/")
});
assert_snapshot!(normalized(&grid_snapshot));
zellij.quit();
@@ -47,9 +49,11 @@ fn page_scroll_down() {
zellij.send_stdin(&keys::ctrl('f'));
let grid_snapshot = zellij
.wait_until("scrolled back down toward the bottom", |grid_snapshot| {
grid_snapshot.contains("line39") && grid_snapshot.contains("PgDn|PgUp")
let grid_snapshot =
zellij.wait_until("scrolled back down toward the bottom", |grid_snapshot| {
grid_snapshot.contains("line39")
&& grid_snapshot.contains("PgDn|PgUp")
&& grid_snapshot.contains("SCROLL 0/")
});
assert_snapshot!(normalized(&grid_snapshot));
zellij.quit();
@@ -64,7 +68,9 @@ fn half_page_scroll_up() {
zellij.send_stdin(&keys::key('u'));
let grid_snapshot = zellij.wait_until("scrolled up by half a page", |grid_snapshot| {
grid_snapshot.contains("PgDn|PgUp") && !grid_snapshot.contains(LAST_LINE)
grid_snapshot.contains("PgDn|PgUp")
&& !grid_snapshot.contains(LAST_LINE)
&& grid_snapshot.contains("SCROLL 10/")
});
assert_snapshot!(normalized(&grid_snapshot));
zellij.quit();
@@ -83,9 +89,11 @@ fn half_page_scroll_down() {
zellij.send_stdin(&keys::key('d'));
let grid_snapshot = zellij
.wait_until("scrolled back down toward the bottom", |grid_snapshot| {
grid_snapshot.contains("line39") && grid_snapshot.contains("PgDn|PgUp")
let grid_snapshot =
zellij.wait_until("scrolled back down toward the bottom", |grid_snapshot| {
grid_snapshot.contains("line39")
&& grid_snapshot.contains("PgDn|PgUp")
&& grid_snapshot.contains("SCROLL 0/")
});
assert_snapshot!(normalized(&grid_snapshot));
zellij.quit();
@@ -100,13 +108,13 @@ fn scroll_down_one_line() {
zellij.send_stdin(&keys::key('k'));
zellij.send_stdin(&keys::key('k'));
zellij.wait_until("scrolled up two lines", |grid_snapshot| {
grid_snapshot.contains("SCROLL: 2/")
grid_snapshot.contains("SCROLL 2/")
});
zellij.send_stdin(&keys::key('j'));
let grid_snapshot = zellij.wait_until("scrolled back down one line", |grid_snapshot| {
grid_snapshot.contains("SCROLL: 1/") && grid_snapshot.contains("PgDn|PgUp")
grid_snapshot.contains("SCROLL 1/") && grid_snapshot.contains("PgDn|PgUp")
});
assert_snapshot!(normalized(&grid_snapshot));
zellij.quit();
@@ -125,9 +133,11 @@ fn scroll_to_bottom() {
zellij.send_stdin(&keys::ctrl('c'));
let grid_snapshot = zellij
.wait_until("returned to the bottom in normal mode", |grid_snapshot| {
grid_snapshot.status_bar_appears() && grid_snapshot.contains(LAST_LINE)
let grid_snapshot =
zellij.wait_until("returned to the bottom in normal mode", |grid_snapshot| {
grid_snapshot.status_bar_appears()
&& grid_snapshot.contains(LAST_LINE)
&& grid_snapshot.contains("SCROLL 0/")
});
assert_snapshot!(normalized(&grid_snapshot));
zellij.quit();
+22 -16
View File
@@ -3,9 +3,24 @@
use insta::assert_snapshot;
use zellij_integration_tests::{
claim_first_terminal_and_wait_for_prompt, keys, normalized, start_zellij, FakePtyHandle,
TestSession,
TestRunner, TestSession, TERMINAL_SIZE,
};
fn start_zellij_with_full_frames() -> TestSession {
TestRunner::new(TERMINAL_SIZE)
.with_config("pane_frame_style \"full\"")
.start()
}
fn enter_search_on_visible_match_with_full_frames(zellij: &TestSession) {
let terminal = zellij.expect_pty_spawn();
terminal.output(b"NEEDLE on screen\r\n");
zellij.wait_until("match visible on screen", |grid_snapshot| {
grid_snapshot.contains("NEEDLE on screen")
});
enter_search_for_needle(zellij);
}
fn fill_pane_with_two_matches(zellij: &TestSession) -> FakePtyHandle {
let terminal = claim_first_terminal_and_wait_for_prompt(zellij);
for line in 1..=40 {
@@ -38,15 +53,6 @@ fn enter_search_for_needle(zellij: &TestSession) {
});
}
fn enter_search_on_visible_match(zellij: &TestSession) {
let terminal = claim_first_terminal_and_wait_for_prompt(zellij);
terminal.output(b"NEEDLE on screen\r\n");
zellij.wait_until("match visible on screen", |grid_snapshot| {
grid_snapshot.contains("NEEDLE on screen")
});
enter_search_for_needle(zellij);
}
#[test]
fn search_input_jumps_to_a_match() {
let mut zellij = start_zellij();
@@ -120,8 +126,8 @@ fn search_down_to_next_match() {
#[test]
fn search_toggle_case_sensitivity() {
let mut zellij = start_zellij();
enter_search_on_visible_match(&zellij);
let mut zellij = start_zellij_with_full_frames();
enter_search_on_visible_match_with_full_frames(&zellij);
zellij.send_stdin(&keys::key('c'));
@@ -134,8 +140,8 @@ fn search_toggle_case_sensitivity() {
#[test]
fn search_toggle_wrap() {
let mut zellij = start_zellij();
enter_search_on_visible_match(&zellij);
let mut zellij = start_zellij_with_full_frames();
enter_search_on_visible_match_with_full_frames(&zellij);
zellij.send_stdin(&keys::key('w'));
@@ -148,8 +154,8 @@ fn search_toggle_wrap() {
#[test]
fn search_toggle_whole_word() {
let mut zellij = start_zellij();
enter_search_on_visible_match(&zellij);
let mut zellij = start_zellij_with_full_frames();
enter_search_on_visible_match_with_full_frames(&zellij);
zellij.send_stdin(&keys::key('o'));
@@ -0,0 +1,120 @@
#![cfg(unix)]
use zellij_integration_tests::{
claim_first_terminal_and_wait_for_prompt, split_right_and_wait_for_prompt, start_zellij, Size,
TestRunner,
};
use zellij_utils::cli::CliAction;
use zellij_utils::input::options::PaneFrameStyle;
const FULL_FRAME_CORNER: &str = "┌";
fn ctrl_y() -> [u8; 1] {
[0x19]
}
#[test]
fn set_pane_frame_style_through_the_cli() {
let mut zellij = start_zellij();
claim_first_terminal_and_wait_for_prompt(&zellij);
zellij.wait_until("lone titles pane has no frame", |grid_snapshot| {
grid_snapshot.status_bar_appears() && !grid_snapshot.contains(FULL_FRAME_CORNER)
});
let exit_code = zellij.run_cli_action(CliAction::SetPaneFrameStyle {
style: PaneFrameStyle::Full,
});
assert_eq!(exit_code, 0, "set-pane-frame-style exited cleanly");
zellij.wait_until(
"full frames drawn after switching to full",
|grid_snapshot| {
grid_snapshot.contains(FULL_FRAME_CORNER) && grid_snapshot.contains("Pane #1")
},
);
let exit_code = zellij.run_cli_action(CliAction::SetPaneFrameStyle {
style: PaneFrameStyle::Titles,
});
assert_eq!(exit_code, 0, "set-pane-frame-style exited cleanly");
zellij.wait_until(
"frame removed after switching back to titles",
|grid_snapshot| {
grid_snapshot.status_bar_appears()
&& !grid_snapshot.contains(FULL_FRAME_CORNER)
&& !grid_snapshot.contains("Pane #1")
},
);
zellij.quit();
}
#[test]
fn set_pane_frame_style_none_through_the_cli() {
let mut zellij = start_zellij();
claim_first_terminal_and_wait_for_prompt(&zellij);
split_right_and_wait_for_prompt(&zellij);
zellij.wait_until(
"two titled panes start without full frames",
|grid_snapshot| {
grid_snapshot.contains("Pane #1")
&& grid_snapshot.contains("Pane #2")
&& !grid_snapshot.contains(FULL_FRAME_CORNER)
},
);
let exit_code = zellij.run_cli_action(CliAction::SetPaneFrameStyle {
style: PaneFrameStyle::None,
});
assert_eq!(exit_code, 0, "set-pane-frame-style none exited cleanly");
zellij.wait_until(
"titles and frames both removed in none mode",
|grid_snapshot| {
grid_snapshot.status_bar_appears()
&& !grid_snapshot.contains("Pane #1")
&& !grid_snapshot.contains("Pane #2")
&& !grid_snapshot.contains(FULL_FRAME_CORNER)
},
);
let exit_code = zellij.run_cli_action(CliAction::SetPaneFrameStyle {
style: PaneFrameStyle::Titles,
});
assert_eq!(exit_code, 0, "set-pane-frame-style titles exited cleanly");
zellij.wait_until("pane titles return in titles mode", |grid_snapshot| {
grid_snapshot.contains("Pane #1") && !grid_snapshot.contains(FULL_FRAME_CORNER)
});
zellij.quit();
}
#[test]
fn set_pane_frame_style_through_a_keybinding() {
let mut zellij = TestRunner::new(Size {
cols: 120,
rows: 24,
})
.with_config("keybinds {\n normal {\n bind \"Ctrl y\" { SetPaneFrameStyle \"full\"; }\n }\n}")
.start();
claim_first_terminal_and_wait_for_prompt(&zellij);
zellij.wait_until("lone titles pane has no frame", |grid_snapshot| {
grid_snapshot.status_bar_appears() && !grid_snapshot.contains(FULL_FRAME_CORNER)
});
zellij.send_stdin(&ctrl_y());
zellij.wait_until(
"keybinding switched the pane to full frames",
|grid_snapshot| {
grid_snapshot.contains(FULL_FRAME_CORNER) && grid_snapshot.contains("Pane #1")
},
);
zellij.quit();
}
@@ -0,0 +1,128 @@
#![cfg(unix)]
use zellij_integration_tests::{
claim_first_terminal_and_wait_for_prompt, split_right_and_wait_for_prompt, start_zellij,
FakePtyHandle, TestSession,
};
use zellij_utils::cli::CliAction;
fn replace_pane_in_place_with_held_command(
zellij: &TestSession,
pane_id: &str,
command: &str,
) -> FakePtyHandle {
zellij.run_cli_action(CliAction::NewPane {
direction: None,
command: vec![command.to_string()],
plugin: None,
cwd: None,
floating: false,
in_place: true,
close_replaced_pane: true,
pane_id: Some(pane_id.to_string()),
name: None,
close_on_exit: false,
start_suspended: false,
configuration: None,
skip_plugin_cache: false,
x: None,
y: None,
width: None,
height: None,
pinned: None,
stacked: false,
blocking: false,
block_until_exit_success: false,
block_until_exit_failure: false,
block_until_exit: false,
unblock_condition: None,
near_current_pane: false,
borderless: None,
tab_id: None,
});
zellij.expect_pty_spawn()
}
#[test]
fn lone_pane_title_becomes_the_tab_name() {
let mut zellij = start_zellij();
let terminal = claim_first_terminal_and_wait_for_prompt(&zellij);
terminal.output(b"\x1b]0;my-title\x07");
let grid_snapshot = zellij.wait_until("tab borrows the pane title", |grid_snapshot| {
grid_snapshot.status_bar_appears() && grid_snapshot.contains("my-title")
});
assert!(
!grid_snapshot.contains("Tab #1"),
"the borrowed pane title replaces the default tab name:\n{}",
grid_snapshot.text
);
zellij.quit();
}
#[test]
fn lone_default_pane_keeps_the_default_tab_name() {
let mut zellij = start_zellij();
claim_first_terminal_and_wait_for_prompt(&zellij);
let grid_snapshot = zellij.wait_until("default tab name is shown", |grid_snapshot| {
grid_snapshot.status_bar_appears() && grid_snapshot.contains("Tab #1")
});
assert!(
!grid_snapshot.contains("Pane #1"),
"the default pane name never leaks into the tab name:\n{}",
grid_snapshot.text
);
zellij.quit();
}
#[test]
fn tab_name_reverts_when_a_second_pane_is_opened() {
let mut zellij = start_zellij();
let terminal = claim_first_terminal_and_wait_for_prompt(&zellij);
terminal.output(b"\x1b]0;my-title\x07");
zellij.wait_until("tab borrows the pane title", |grid_snapshot| {
grid_snapshot.contains("my-title") && !grid_snapshot.contains("Tab #1")
});
split_right_and_wait_for_prompt(&zellij);
let grid_snapshot = zellij.wait_until(
"tab name reverts once a second pane exists",
|grid_snapshot| {
grid_snapshot
.lines()
.first()
.is_some_and(|tab_bar| tab_bar.contains("Tab #1"))
},
);
assert!(
grid_snapshot.contains("my-title"),
"the original pane keeps its title in its frame:\n{}",
grid_snapshot.text
);
zellij.quit();
}
#[test]
fn lone_held_pane_tab_name_shows_exit_status() {
let mut zellij = start_zellij();
let shell_terminal = claim_first_terminal_and_wait_for_prompt(&zellij);
let command_pane_id = format!("terminal_{}", shell_terminal.terminal_id());
let command_terminal =
replace_pane_in_place_with_held_command(&zellij, &command_pane_id, "held-command");
zellij.wait_until("command pane took over the lone tab", |grid_snapshot| {
grid_snapshot.status_bar_appears() && grid_snapshot.tab_bar_appears()
});
command_terminal.exit(Some(0));
zellij.wait_until("tab name carries the exit status", |grid_snapshot| {
grid_snapshot.contains("EXIT CODE: 0")
});
zellij.quit();
}
@@ -2,27 +2,8 @@
source: zellij-integration-tests/tests/app.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1
┌ EDITING SCROLLBACK ──────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ SCROLLBACK_MARKER_ONE │
│SCROLLBACK_MARKER_TWO │
│█ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Zellij (test)  EDITING SCROLLBACK  +
$ SCROLLBACK_MARKER_ONE
SCROLLBACK_MARKER_TWO
█
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/app.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ───────────────────────────────────────┐┌ Pane #2 ───────────────────────────────────────┐
│$ ││$ █ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
└────────────────────────────────────────────────┘└────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1 │ Pane #2
$ │$ █
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
Ctrl + g  p  t  n  h  s  o  q  ...
@@ -2,27 +2,6 @@
source: zellij-integration-tests/tests/app.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
F1  LOCK  F2  PANE  F3  TAB  F4  RESIZE  F5  MOVE  F6  SEARCH  Alt F7  SESSION  Ctrl F8  QUIT 
Zellij (test)  Tab #1  + 
$ █
F1  LOCK  F2  PANE  F3  TAB  F4  RESIZE  F5  MOVE  F6  SEARCH  Alt F7  SESSION  Ctrl F8  QUIT 
@@ -2,26 +2,6 @@
source: zellij-integration-tests/tests/app.rs
expression: normalized(&grid_snapshot)
---
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1 
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT 
$ █
Zellij (test)  Tab #1  + 
@@ -1,28 +1,28 @@
---
source: zellij-integration-tests/tests/basic.rs
expression: normalized(&snapshot)
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ───────────────────────────────────────────┐┌ Pane #2 ───────────────────────────────────────────────────────┐
│$ ││$ █ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
└────────────────────────────────────────────────────┘└────────────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1 │ Pane #2
$ │$ █
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -1,28 +1,28 @@
---
source: zellij-integration-tests/tests/basic.rs
expression: normalized(&snapshot)
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────┐┌ Pane #2 ─────────────────────────────────────────────────┐
│$ ││$ █ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1 │ Pane #2
$ │$ █
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -1,28 +1,7 @@
---
source: zellij-integration-tests/tests/basic.rs
expression: normalized(&snapshot)
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
$ █
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,5 @@
source: zellij-integration-tests/tests/cli.rs
expression: normalized(&grid_snapshot)
---
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Zellij (test) NORMAL  Tab #1 
$ █
Zellij (test) NORMAL  Tab #1 
@@ -2,27 +2,6 @@
source: zellij-integration-tests/tests/cli.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
$ █
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/cli.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────┐┌ suspended-command ───────────────────────────────────────┐
│$ ││foo │
│ ││foo │
│ ││█ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1 │ suspended-command
$ │foo
│foo
│█
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/cli.rs
expression: normalized(&watcher_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────┐┌ Pane #2 ─────────────────────────────────────────────────┐
│$ ││$ █ │
│WATCHER_OUTPUT_1 ││ │
│WATCHER_OUTPUT_2 ││ │
│WATCHER_OUTPUT_3 ││ │
│WATCHER_DONE ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1 │ Pane #2
$ │$ █
WATCHER_OUTPUT_1 │
WATCHER_OUTPUT_2 │
WATCHER_OUTPUT_3 │
WATCHER_DONE │
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/cli.rs
expression: normalized(&main_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────┐┌ Pane #2 ─────────────────────────────────────────────────┐
│$ ││$ █ │
│WATCHER_OUTPUT_1 ││ │
│WATCHER_OUTPUT_2 ││ │
│WATCHER_OUTPUT_3 ││ │
│WATCHER_DONE ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1 │ Pane #2
$ │$ █
WATCHER_OUTPUT_1 │
WATCHER_OUTPUT_2 │
WATCHER_OUTPUT_3 │
WATCHER_DONE │
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/clients.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────┐┌ Pane #2 ─────────────────────────────────────────────────┐
│$ ││$ I am some text█ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1 │ Pane #2
$ │$ I am some text█
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/clients.rs
expression: normalized(&main_grid)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────┐┌ Pane #2 ─────────────────────────────────────────────────┐
│$ ││$ █ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1 │ Pane #2
$ │$ █
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/clients.rs
expression: normalized(&second_grid)
---
Zellij (test)  Tab #1 [ ]
┌ Pane #1 ───────────┤ FOCUSED USER: ├───────────────────┐┌ Pane #2 ──────────────┤ MY FOCUS ├───────────────────────┐
│$ ││$ █ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1 [ ] + 
[ FOCUSED USER: ] Pane #1 │ [ MY FOCUS ] Pane #2
$ │$ █
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/clients.rs
expression: normalized(&main_grid)
---
Zellij (test)  Tab #1 [ ]
┌ Pane #1 ──────────────┤ MY FOCUS ├───────────────────────┐┌ Pane #2 ───────────┤ FOCUSED USER: ├───────────────────┐
│$ █ ││$ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1 [ ] + 
[ MY FOCUS ] Pane #1 │ [ FOCUSED USER: ] Pane #2
$ █ │$
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,6 @@
source: zellij-integration-tests/tests/clients.rs
expression: normalized(&second_grid)
---
Zellij (test)  Tab #1 [ ] Tab #2 
┌ Pane #1 ────────────────────────────────────────────┤ MY FOCUS ├─────────────────────────────────────────────────────┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1 [ ] Tab #2  + 
$ █
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,6 @@
source: zellij-integration-tests/tests/clients.rs
expression: normalized(&main_grid)
---
Zellij (test)  Tab #1  Tab #2 [ ]
┌ Pane #1 ────────────────────────────────────────────┤ MY FOCUS ├─────────────────────────────────────────────────────┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  Tab #2 [ ] + 
$ █
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,7 +2,7 @@
source: zellij-integration-tests/tests/clients.rs
expression: normalized(&second_grid)
---
Zellij (test)  Tab #1 [ ]
Zellij (test)  Tab #1 [ ] + 
┌ Pane #1 ─────────────────────────────────────────┤ MY FOCUS AND: ├─────────────────────────────────────────────────┐
│$ █ │
│ │
@@ -2,7 +2,7 @@
source: zellij-integration-tests/tests/clients.rs
expression: normalized(&main_grid)
---
Zellij (test)  Tab #1 [ ]
Zellij (test)  Tab #1 [ ] + 
┌ Pane #1 ─────────────────────────────────────────┤ MY FOCUS AND: ├─────────────────────────────────────────────────┐
│$ █ │
│ │
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/misc.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────┐┌ Pane #2 ─────────────────────────────────────────────────┐
│$ █ ││$ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1 │ Pane #2
$ █ │$
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,10 @@
source: zellij-integration-tests/tests/misc.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
┌ Pane #2 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1
$
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Pane #2
$ █
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,10 @@
source: zellij-integration-tests/tests/misc.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
┌ Pane #2 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1
$
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Pane #2
$ █
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/misc.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────┐┌ Pane #2 ─────────────────────────────────────────────────┐
│$ ││$ █ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ┌ Multiple Pane Select ────────────────────────┐ ││ │
│ │<ESC> - cancel, <TAB> - move │ ││ │
│ │ │ ││ │
│ │GROUP ACTIONS (1 SELECTED PANE) │ ││ │
│ │<b> - break out, <s> - stack, <c> - close │ ││ │
│ │<l> - break left, <r> - break right │ ││ │
│ │<e> - embed, <f> - float │ ││ │
│ │ │ ││ │
│ │Alt +  <p> Toggle  <Shift p> Follow Focus │ ││ │
│ └──────────────────────────────────────────────┘ ││ │
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1 │ Pane #2
$ │$ █
│
│
│
│
│
│
│
│
│
┌ Multiple Pane Select ────────────────────────┐ │
│<ESC> - cancel, <TAB> - move │ │
│ │ │
│GROUP ACTIONS (1 SELECTED PANE) │ │
│<b> - break out, <s> - stack, <c> - close │ │
│<l> - break left, <r> - break right │ │
│<e> - embed, <f> - float │ │
│ │ │
│Alt +  <p> Toggle  <Shift p> Follow Focus │ │
└──────────────────────────────────────────────┘ │
│
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/misc.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────┐┌ Pane #2 ─────────────────────────────────────────────────┐
│$ ││$ █ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ┌ Multiple Pane Select ────────────────────────┐ ││ │
│ │<ESC> - cancel, <TAB> - move │ ││ │
│ │ │ ││ │
│ │GROUP ACTIONS (1 SELECTED PANE) │ ││ │
│ │<b> - break out, <s> - stack, <c> - close │ ││ │
│ │<l> - break left, <r> - break right │ ││ │
│ │<e> - embed, <f> - float │ ││ │
│ │ │ ││ │
│ │Alt +  <p> Toggle  <Shift p> Follow Focus │ ││ │
│ └──────────────────────────────────────────────┘ ││ │
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1 │ Pane #2
$ │$ █
│
│
│
│
│
│
│
│
│
┌ Multiple Pane Select ────────────────────────┐ │
│<ESC> - cancel, <TAB> - move │ │
│ │ │
│GROUP ACTIONS (1 SELECTED PANE) │ │
│<b> - break out, <s> - stack, <c> - close │ │
│<l> - break left, <r> - break right │ │
│<e> - embed, <f> - float │ │
│ │ │
│Alt +  <p> Toggle  <Shift p> Follow Focus │ │
└──────────────────────────────────────────────┘ │
│
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,6 @@
source: zellij-integration-tests/tests/misc.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
$ █
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,6 @@
source: zellij-integration-tests/tests/modes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ nabc█ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
$ nabc█
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,6 @@
source: zellij-integration-tests/tests/modes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Enter search... ─────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
ENTERING SEARCH TERM   ENTER  When done 
Zellij (test)  Tab #1  + 
$ █
ENTERING SEARCH TERM   ENTER  When done 
@@ -2,27 +2,6 @@
source: zellij-integration-tests/tests/modes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ nabc█ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Ctrl + <g> LOCK 
Zellij (test)  Tab #1  + 
$ nabc█
Ctrl + <g> LOCK 
@@ -2,27 +2,6 @@
source: zellij-integration-tests/tests/modes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
$ █
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/modes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────┐┌ Pane #2 ─────────────────────────────────── SCROLL: 2/2 ┐
│$ ││$ line1 │
│ ││line2 │
│ ││line3 │
│ ││line4 │
│ ││line5 │
│ ││line6 │
│ ││line7 │
│ ││line8 │
│ ││line9 │
│ ││line10 │
│ ││line11 │
│ ││line12 │
│ ││line13 │
│ ││line14 │
│ ││line15 │
│ ││line16 │
│ ││line17 │
│ ││line18 │
│ ││line19 │
│ ││█ine20 │
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1 │ Pane #2 [ SCROLL: 2/2 ]
$ │$ line1
│line2
│line3
│line4
│line5
│line6
│line7
│line8
│line9
│line10
│line11
│line12
│line13
│line14
│line15
│line16
│line17
│line18
│line19
│line20
│█ine21
Ctrl + <s> SEARCH   s  Search  ↓↑  Scroll  PgDn|PgUp  Scroll  d|u  Scroll  e  Edit  ENTER  Select 
@@ -2,27 +2,6 @@
source: zellij-integration-tests/tests/modes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Ctrl + <h> MOVE   ←↓↑→  Switch Location  ENTER  When done 
Zellij (test)  Tab #1  + 
$ █
Ctrl + <h> MOVE   ←↓↑→  Switch Location  ENTER  When done 
@@ -2,27 +2,6 @@
source: zellij-integration-tests/tests/modes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Ctrl + <p> PANE   n  New  ←↓↑→  Move  x  Close  c  Rename  f  Fullscreen  Alt f  Floating  ...
Zellij (test)  Tab #1  + 
$ █
Ctrl + <p> PANE   n  New  ←↓↑→  Move  x  Close  c  Rename  f  Fullscreen  Alt f  Floating  ...
@@ -2,27 +2,6 @@
source: zellij-integration-tests/tests/modes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Ctrl + <n> RESIZE   +|-  Increase/Decrease  ←↓↑→  Increase  HJKL  Decrease  ENTER  Select 
Zellij (test)  Tab #1  + 
$ █
Ctrl + <n> RESIZE   +|-  Increase/Decrease  ←↓↑→  Increase  HJKL  Decrease  ENTER  Select 
@@ -2,27 +2,6 @@
source: zellij-integration-tests/tests/modes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Ctrl + <s> SEARCH   s  Search  ↓↑  Scroll  PgDn|PgUp  Scroll  d|u  Scroll  e  Edit  ENTER  Select 
Zellij (test)  Tab #1  + 
$ █
Ctrl + <s> SEARCH   s  Search  ↓↑  Scroll  PgDn|PgUp  Scroll  d|u  Scroll  e  Edit  ENTER  Select 
@@ -2,27 +2,6 @@
source: zellij-integration-tests/tests/modes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
SEARCHING   ↓↑  Scroll  PgDn|PgUp  Scroll  d|u  Scroll  n  Down  p  Up  c  Case  w  Wrap  o  Whole 
Zellij (test)  Tab #1  + 
$ █
SEARCHING   ↓↑  Scroll  PgDn|PgUp  Scroll  d|u  Scroll  n  Down  p  Up  c  Case  w  Wrap  o  Whole 
@@ -2,27 +2,6 @@
source: zellij-integration-tests/tests/modes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Ctrl + <o> SESSION   d  Detach  w  Manager  s  Share  c  Config  l  Layouts  p  Plugins  ...
Zellij (test)  Tab #1  + 
$ █
Ctrl + <o> SESSION   d  Detach  w  Manager  s  Share  c  Config  l  Layouts  p  Plugins  ...
@@ -2,27 +2,6 @@
source: zellij-integration-tests/tests/modes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Ctrl + <t> TAB   n  New  ←→  Move  x  Close  r  Rename  s  Sync  b  Break out  []  Break  ...
Zellij (test)  Tab #1  + 
$ █
Ctrl + <t> TAB   n  New  ←→  Move  x  Close  r  Rename  s  Sync  b  Break out  []  Break  ...
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/modes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────┐┌ Pane #2 ─────────────────────────────────────────────────┐
│$ ││$ █ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1 │ Pane #2
$ │$ █
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/mouse.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────┐┌ Pane #2 ─────────────────────────────────────────────────┐
│$ █ ││$ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1 │ Pane #2
$ █ │$
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,22 @@
source: zellij-integration-tests/tests/mouse.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ line1aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa│
│a │
│line2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa │
│line3aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa │
│line4aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa │
│line5aaaaaaaaaaaaaaaaaaaaaaaa┌ Pane #2 ──────────────────────────────────────── PIN [+] ┐aaaaaaaaaaaaaaaaaaaaaaaaaaaa │
│line6aaaaaaaaaaaaaaaaaaaaaaaa│$ │aaaaaaaaaaaaaaaaaaaaaaaaaaaa │
│line7aaaaaaaaaaaaaaaaaaaaaaaa│ │aaaaaaaaaaaaaaaaaaaaaaaaaaaa │
│line8aaaaaaaaaaaaaaaaaaaaaaaa│ │aaaaaaaaaaaaaaaaaaaaaaaaaaaa │
│line9aaaaaaaaaaaaaaaaaaaaaaaa│ │aaaaaaaaaaaaaaaaaaaaaaaaaaaa │
│line10aaaaaaaaaaaaaaaaaaaaaaa│ │aaaaaaaaaaaaaaaaaaaaaaaaaaaaa│
│line11aaaaaaaaaaaaaaaaaaaaaaa│ │aaaaaaaaaaaaaaaaaaaaaaaaaaaaa│
│line12aaaaaaaaaaaaaaaaaaaaaaa│ │aaaaaaaaaaaaaaaaaaaaaaaaaaaaa│
│line13aaaaaaaaaaaaaaaaaaaaaaa│ │aaaaaaaaaaaaaaaaaaaaaaaaaaaaa│
│█ │ │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
$ line1aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
line2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
line3aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
line4aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
line5aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
line6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
line7aaaaaaaaaaaaaaaaaaaaaaaaa┌ Pane #2 ──────────────────────────────────────── PIN [+] ┐aaaaaaaaaaaaaaaaaaaaaaaaaaa
line8aaaaaaaaaaaaaaaaaaaaaaaaa│$ │aaaaaaaaaaaaaaaaaaaaaaaaaaa
line9aaaaaaaaaaaaaaaaaaaaaaaaa│ │aaaaaaaaaaaaaaaaaaaaaaaaaaa
line10aaaaaaaaaaaaaaaaaaaaaaaa│ │aaaaaaaaaaaaaaaaaaaaaaaaaaaa
line11aaaaaaaaaaaaaaaaaaaaaaaa│ │aaaaaaaaaaaaaaaaaaaaaaaaaaaa
line12aaaaaaaaaaaaaaaaaaaaaaaa│ │aaaaaaaaaaaaaaaaaaaaaaaaaaaa
line13aaaaaaaaaaaaaaaaaaaaaaaa│ │aaaaaaaaaaaaaaaaaaaaaaaaaaaa
█ │ │
│ │
│ │
└──────────────────────────────────────────────────────────┘
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/mouse.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────┐┌ Pane #2 ─────────────────────────────────── SCROLL: 2/2 ┐
│$ ││$ line1 │
│ ││line2 │
│ ││line3 │
│ ││line4 │
│ ││line5 │
│ ││line6 │
│ ││line7 │
│ ││line8 │
│ ││line9 │
│ ││line10 │
│ ││line11 │
│ ││line12 │
│ ││line13 │
│ ││line14 │
│ ││line15 │
│ ││line16 │
│ ││line17 │
│ ││line18 │
│ ││line19 │
│ ││█ine20 │
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1 │ Pane #2 [ SCROLL: 1/1 ]
$ │$ line1
│line2
│line3
│line4
│line5
│line6
│line7
│line8
│line9
│line10
│line11
│line12
│line13
│line14
│line15
│line16
│line17
│line18
│line19
│line20
│█ine21
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -3,22 +3,5 @@ source: zellij-integration-tests/tests/panes.rs
expression: normalized(&grid_snapshot)
---
┌──────┐
│$ done│
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────┘
$ done█
Ctrl +
@@ -2,27 +2,6 @@
source: zellij-integration-tests/tests/panes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
$ █
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,10 @@
source: zellij-integration-tests/tests/panes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
┌ Pane #2 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1
$
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Pane #2
$ █
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/panes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────┐┌ Pane #2 ─────────────────────────────────────────────────┐
│$ █ ││$ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1 │ Pane #2
$ █ │$
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/panes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────┐┌ Pane #2 ─────────────────────────────────────────────────┐
│$ █ ││$ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1 │ Pane #2
$ █ │$
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,6 @@
source: zellij-integration-tests/tests/panes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1  Tab #2 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ oneone█ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  Tab #2  + 
$ oneone█
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/panes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────┐┌ Pane #2 ─────────────────────────────────────────────────┐
│$ ││$ █ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1 │ Pane #2
$ │$ █
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,10 @@
source: zellij-integration-tests/tests/panes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
┌ Pane #2 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1
$ █
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Pane #2
$
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/panes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #2 ─────────────────────────────────────────────────┐┌ Pane #1 ─────────────────────────────────────────────────┐
│$ BBB█ ││$ AAA │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #2 │ Pane #1
$ BBB█ │$ AAA
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,10 @@
source: zellij-integration-tests/tests/panes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #2 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ BBB█ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ AAA │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #2
$ BBB█
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Pane #1
$ AAA
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/panes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #2 ─────────────────────────────────────────────────┐┌ Pane #1 ─────────────────────────────────────────────────┐
│$ BBB█ ││$ AAA │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #2 │ Pane #1
$ BBB█ │$ AAA
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/panes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #2 ─────────────────────────────────────────────────┐┌ Pane #1 ─────────────────────────────────────────────────┐
│$ BBB█ ││$ AAA │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #2 │ Pane #1
$ BBB█ │$ AAA
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/panes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────┐┌ Pane #2 ─────────────────────────────────────────────────┐
│$ ││$ █ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1 │ Pane #2
$ │$ █
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/panes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────┐┌ Pane #2 ─────────────────────────────────────────────────┐
│$ ││$ █ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1 │ Pane #2
$ │$ █
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,8 @@
source: zellij-integration-tests/tests/panes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
┌ Pane #2 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
──────────────────────────────────────────────────────── Pane #1 ───────────────────────────────────────────────────────
──────────────────────────────────────────────────────── Pane #2 ───────────────────────────────────────────────────────
$ █
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,6 @@
source: zellij-integration-tests/tests/panes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
$ █
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,10 @@
source: zellij-integration-tests/tests/panes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
┌ Pane #2 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1
$
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Pane #2
$ █
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,7 +2,7 @@
source: zellij-integration-tests/tests/panes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
Zellij (test)  Tab #1  + 
$ │$ █
│
│
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/panes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────┐┌ Pane #2 ─────────────────────────────────────────────────┐
│$ █ ││$ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1 │ Pane #2
$ █ │$
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,17 @@
source: zellij-integration-tests/tests/panes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ │
│ │
│ │
│ │
│ │
│ ┌ Pane #2 ──────────────────────────────────────── PIN [ ] ┐ │
│ │$ █ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
$
┌ Pane #2 ──────────────────────────────────────── PIN [ ] ┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────┘
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -0,0 +1,28 @@
---
source: zellij-integration-tests/tests/panes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1  + 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ │
│ │
│ │
│ │
│ │
│ ┌ Pane #2 ──────────────────────────────────────── PIN [ ] ┐ │
│ │$ █ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -0,0 +1,28 @@
---
source: zellij-integration-tests/tests/panes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1  + 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -0,0 +1,28 @@
---
source: zellij-integration-tests/tests/panes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1  + 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
┌ Pane #2 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,17 @@
source: zellij-integration-tests/tests/panes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ │
│ │
│ │
│ │
│ │
│ ┌ Pane #2 ──────────────────────────────────────── PIN [ ] ┐ │
│ │$ █ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
$
┌ Pane #2 ──────────────────────────────────────── PIN [ ] ┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────┘
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,7 +2,8 @@
source: zellij-integration-tests/tests/panes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
Zellij (test)  Tab #1  + 
Pane #1 │ Pane #2
$ │$ █
│
│
@@ -24,5 +25,4 @@ $ │$ █
│
│
│
│
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,7 @@
source: zellij-integration-tests/tests/panes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 (FULLSCREEN) 
┌ Pane #2 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1 (FULLSCREEN)  + 
Pane #2
$ █
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,17 @@
source: zellij-integration-tests/tests/panes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ │
│ │
│ │
│ │
│ │
│ ┌ Pane #2 ──────────────────────────────────────── PIN [+] ┐ │
│ │$ █ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
$
┌ Pane #2 ──────────────────────────────────────── PIN [+] ┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────┘
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/panes.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1 │ Pane #2
$ │$ █
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,17 @@
source: zellij-integration-tests/tests/plugins.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ │
│ │
│ │
│ │
│ ┌ (.) - permission-requester ───────────────────── PIN [ ] ┐ │
│ │This plugin asks permission to: ReadApplicationState, Chan│ │
│ │geApplicationState, OpenFiles, RunCommands, OpenTerminalsO│ │
│ │rPlugins, WriteToStdin, WebAccess, ReadCliPipes, MessageAn│ │
│ │dLaunchOtherPlugins, Reconfigure, RunActionsAsUser, WriteT│ │
│ │oClipboard, ReadSessionEnvironmentVariables. Allow? (y/n) │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
$
┌ (.) - permission-requester ───────────────────── PIN [ ] ┐
│This plugin asks permission to: ReadApplicationState, Chan│
│geApplicationState, OpenFiles, RunCommands, OpenTerminalsO│
│rPlugins, WriteToStdin, WebAccess, ReadCliPipes, MessageAn│
│dLaunchOtherPlugins, Reconfigure, RunActionsAsUser, WriteT│
│oClipboard, ReadSessionEnvironmentVariables. Allow? (y/n) │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────┘
@@ -2,27 +2,10 @@
source: zellij-integration-tests/tests/resize.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
┌ Pane #2 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1
$ █
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Pane #2
$
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/resize.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────┐┌ Pane #2 ─────────────┐
│$ ││$ █ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
└──────────────────────────────────────────────────────────────────────────────────────────────┘└──────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1 │ Pane #2
$ │$ █
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/resize.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────┐┌ Pane #2 ─────────────┐
│$ ││$ █ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
└──────────────────────────────────────────────────────────────────────────────────────────────┘└──────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1 │ Pane #2
$ │$ █
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/resize.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ───────────────────────────────────────────────────────┐┌ Pane #2 ───────────────────────────────────────────┐
│$ ││$ █ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
└────────────────────────────────────────────────────────────────┘└────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1 │ Pane #2
$ │$ █
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/resize.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ───────────────────────────────────────────┐┌ Pane #2 ───────────────────────────────────────────────────────┐
│$ █ ││$ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
└────────────────────────────────────────────────────┘└────────────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1 │ Pane #2
$ █ │$
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,10 @@
source: zellij-integration-tests/tests/resize.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
┌ Pane #2 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1
$
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Pane #2
$ █
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,10 @@
source: zellij-integration-tests/tests/resize.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
┌ Pane #2 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1
$ █
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Pane #2
$
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/resize.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────┐┌ Pane #2 ─────────────────────────────────────────────────────────────────────────────────────┐
│$ ││$ █ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
└──────────────────────┘└──────────────────────────────────────────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1 │ Pane #2
$ │$ █
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/resize.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────┐┌ Pane #2 ─────────────────────────────────────────────────────────────────────────────────────┐
│$ ││$ █ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
└──────────────────────┘└──────────────────────────────────────────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1 │ Pane #2
$ │$ █
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/resize.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ───────────────────────────────────────────────────────┐┌ Pane #2 ───────────────────────────────────────────┐
│$ █ ││$ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
└────────────────────────────────────────────────────────────────┘└────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1 │ Pane #2
$ █ │$
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,10 @@
source: zellij-integration-tests/tests/resize.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  Tab #1 
┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
┌ Pane #2 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│$ █ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Zellij (test)  Tab #1  + 
Pane #1
$
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Pane #2
$ █
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/resurrection.rs
expression: normalized(&grid_snapshot)
---
Zellij (test)  alpha  beta 
┌ Pane #1 ─────────────────────────────────────────────────┐┌ Pane #2 ─────────────────────────────────────────────────┐
│ ││█ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
Zellij (test)  alpha  beta  + 
Pane #1 │ Pane #2
│█
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...

Some files were not shown because too many files have changed in this diff Show More