aboutsummaryrefslogtreecommitdiffstats
path: root/zellij-integration-tests/tests
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2026-06-29 18:10:59 +0200
committerGitHub <noreply@github.com>2026-06-29 18:10:59 +0200
commit245f5141c9bb7eb91f003efac4defc94470243fd (patch)
tree52ae6d003366f97e41c8a1450602aef63c8fdca2 /zellij-integration-tests/tests
parentfeat: reload config on theme change (#5135) (diff)
downloadsl0ppij-245f5141c9bb7eb91f003efac4defc94470243fd.tar.gz
sl0ppij-245f5141c9bb7eb91f003efac4defc94470243fd.tar.xz
sl0ppij-245f5141c9bb7eb91f003efac4defc94470243fd.zip
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
Diffstat (limited to 'zellij-integration-tests/tests')
-rw-r--r--zellij-integration-tests/tests/app.rs5
-rw-r--r--zellij-integration-tests/tests/basic.rs8
-rw-r--r--zellij-integration-tests/tests/cli.rs10
-rw-r--r--zellij-integration-tests/tests/clients.rs30
-rw-r--r--zellij-integration-tests/tests/misc.rs2
-rw-r--r--zellij-integration-tests/tests/modes.rs12
-rw-r--r--zellij-integration-tests/tests/mouse.rs4
-rw-r--r--zellij-integration-tests/tests/panes.rs165
-rw-r--r--zellij-integration-tests/tests/resize.rs4
-rw-r--r--zellij-integration-tests/tests/resurrection.rs4
-rw-r--r--zellij-integration-tests/tests/scroll.rs36
-rw-r--r--zellij-integration-tests/tests/search.rs38
-rw-r--r--zellij-integration-tests/tests/set_pane_frame_style.rs120
-rw-r--r--zellij-integration-tests/tests/single_pane_tab_title.rs128
-rw-r--r--zellij-integration-tests/tests/snapshots/app__edit_scrollback.snap27
-rw-r--r--zellij-integration-tests/tests/snapshots/app__resize_terminal_window.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/app__status_bar_loads_custom_keybindings.snap27
-rw-r--r--zellij-integration-tests/tests/snapshots/app__use_custom_layout_with_relative_path.snap26
-rw-r--r--zellij-integration-tests/tests/snapshots/basic__resize_pane.snap48
-rw-r--r--zellij-integration-tests/tests/snapshots/basic__split_terminals_vertically.snap48
-rw-r--r--zellij-integration-tests/tests/snapshots/basic__starts_with_one_terminal.snap27
-rw-r--r--zellij-integration-tests/tests/snapshots/cli__override_layout_from_default_to_compact.snap26
-rw-r--r--zellij-integration-tests/tests/snapshots/cli__send_blocking_command_through_the_cli.snap25
-rw-r--r--zellij-integration-tests/tests/snapshots/cli__send_command_through_the_cli.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/cli__watcher_client_functionality-2.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/cli__watcher_client_functionality.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/clients__detach_and_attach_session.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/clients__mirrored_sessions.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/clients__multiple_users_in_different_panes_and_same_tab-2.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/clients__multiple_users_in_different_panes_and_same_tab.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/clients__multiple_users_in_different_tabs-2.snap25
-rw-r--r--zellij-integration-tests/tests/snapshots/clients__multiple_users_in_different_tabs.snap25
-rw-r--r--zellij-integration-tests/tests/snapshots/clients__multiple_users_in_same_pane_and_tab-2.snap2
-rw-r--r--zellij-integration-tests/tests/snapshots/clients__multiple_users_in_same_pane_and_tab.snap2
-rw-r--r--zellij-integration-tests/tests/snapshots/misc__focus_next_pane_via_tmux_mode.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/misc__next_swap_layout.snap29
-rw-r--r--zellij-integration-tests/tests/snapshots/misc__previous_swap_layout.snap29
-rw-r--r--zellij-integration-tests/tests/snapshots/misc__toggle_group_marking.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/misc__toggle_pane_in_group.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/misc__write_byte_to_focused_pane_via_tmux_mode.snap25
-rw-r--r--zellij-integration-tests/tests/snapshots/modes__bracketed_paste.snap25
-rw-r--r--zellij-integration-tests/tests/snapshots/modes__enter_search_mode.snap27
-rw-r--r--zellij-integration-tests/tests/snapshots/modes__lock_mode.snap27
-rw-r--r--zellij-integration-tests/tests/snapshots/modes__return_to_normal_mode.snap25
-rw-r--r--zellij-integration-tests/tests/snapshots/modes__scrolling_inside_a_pane.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/modes__switch_to_move_mode.snap27
-rw-r--r--zellij-integration-tests/tests/snapshots/modes__switch_to_pane_mode.snap27
-rw-r--r--zellij-integration-tests/tests/snapshots/modes__switch_to_resize_mode.snap27
-rw-r--r--zellij-integration-tests/tests/snapshots/modes__switch_to_scroll_mode.snap27
-rw-r--r--zellij-integration-tests/tests/snapshots/modes__switch_to_search_mode.snap27
-rw-r--r--zellij-integration-tests/tests/snapshots/modes__switch_to_session_mode.snap27
-rw-r--r--zellij-integration-tests/tests/snapshots/modes__switch_to_tab_mode.snap27
-rw-r--r--zellij-integration-tests/tests/snapshots/modes__tmux_mode.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/mouse__focus_pane_with_mouse.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/mouse__pin_floating_panes.snap41
-rw-r--r--zellij-integration-tests/tests/snapshots/mouse__scrolling_inside_a_pane_with_mouse.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/panes__cannot_split_terminals_vertically_when_active_terminal_is_too_small.snap19
-rw-r--r--zellij-integration-tests/tests/snapshots/panes__close_pane.snap25
-rw-r--r--zellij-integration-tests/tests/snapshots/panes__move_focus_down_in_pane_mode.snap29
-rw-r--r--zellij-integration-tests/tests/snapshots/panes__move_focus_left_in_pane_mode.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/panes__move_focus_or_tab_moves_focus_between_panes.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/panes__move_focus_or_tab_switches_tab_when_single_pane.snap25
-rw-r--r--zellij-integration-tests/tests/snapshots/panes__move_focus_right_in_pane_mode.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/panes__move_focus_up_in_pane_mode.snap29
-rw-r--r--zellij-integration-tests/tests/snapshots/panes__move_pane_backwards_swaps_with_neighbor.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/panes__move_pane_down.snap29
-rw-r--r--zellij-integration-tests/tests/snapshots/panes__move_pane_left.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/panes__move_pane_swaps_with_neighbor.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/panes__new_pane_in_normal_mode.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/panes__new_pane_in_pane_mode.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/panes__new_stacked_pane.snap27
-rw-r--r--zellij-integration-tests/tests/snapshots/panes__pane_closes_when_its_process_exits.snap25
-rw-r--r--zellij-integration-tests/tests/snapshots/panes__split_pane_downward.snap29
-rw-r--r--zellij-integration-tests/tests/snapshots/panes__start_without_pane_frames.snap2
-rw-r--r--zellij-integration-tests/tests/snapshots/panes__switch_focus_in_pane_mode.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/panes__toggle_floating_panes.snap36
-rw-r--r--zellij-integration-tests/tests/snapshots/panes__toggle_frames_with_floating_pane.snap28
-rw-r--r--zellij-integration-tests/tests/snapshots/panes__toggle_frames_with_single_pane.snap28
-rw-r--r--zellij-integration-tests/tests/snapshots/panes__toggle_frames_with_stacked_panes.snap28
-rw-r--r--zellij-integration-tests/tests/snapshots/panes__toggle_pane_embed_or_floating.snap36
-rw-r--r--zellij-integration-tests/tests/snapshots/panes__toggle_pane_frames.snap4
-rw-r--r--zellij-integration-tests/tests/snapshots/panes__toggle_pane_fullscreen.snap26
-rw-r--r--zellij-integration-tests/tests/snapshots/panes__toggle_pane_pinned.snap36
-rw-r--r--zellij-integration-tests/tests/snapshots/panes__undo_rename_pane.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/plugins__load_plugins_in_background_on_startup.snap38
-rw-r--r--zellij-integration-tests/tests/snapshots/resize__resize_decrease_down.snap29
-rw-r--r--zellij-integration-tests/tests/snapshots/resize__resize_decrease_in_normal_mode.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/resize__resize_decrease_in_resize_mode.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/resize__resize_decrease_left.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/resize__resize_decrease_right.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/resize__resize_decrease_up.snap29
-rw-r--r--zellij-integration-tests/tests/snapshots/resize__resize_increase_down.snap29
-rw-r--r--zellij-integration-tests/tests/snapshots/resize__resize_increase_in_normal_mode.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/resize__resize_increase_in_resize_mode.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/resize__resize_increase_right.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/resize__resize_increase_up.snap29
-rw-r--r--zellij-integration-tests/tests/snapshots/resurrection__quit_and_resurrect_session.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/resurrection__quit_and_resurrect_session_with_viewport_serialization.snap26
-rw-r--r--zellij-integration-tests/tests/snapshots/scroll__half_page_scroll_down.snap48
-rw-r--r--zellij-integration-tests/tests/snapshots/scroll__half_page_scroll_up.snap48
-rw-r--r--zellij-integration-tests/tests/snapshots/scroll__page_scroll_down.snap48
-rw-r--r--zellij-integration-tests/tests/snapshots/scroll__page_scroll_up.snap48
-rw-r--r--zellij-integration-tests/tests/snapshots/scroll__scroll_down_one_line.snap48
-rw-r--r--zellij-integration-tests/tests/snapshots/scroll__scroll_to_bottom.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/search__search_down_to_next_match.snap48
-rw-r--r--zellij-integration-tests/tests/snapshots/search__search_input_jumps_to_a_match.snap48
-rw-r--r--zellij-integration-tests/tests/snapshots/search__search_toggle_case_sensitivity.snap6
-rw-r--r--zellij-integration-tests/tests/snapshots/search__search_toggle_whole_word.snap6
-rw-r--r--zellij-integration-tests/tests/snapshots/search__search_toggle_wrap.snap6
-rw-r--r--zellij-integration-tests/tests/snapshots/search__search_up_to_previous_match.snap48
-rw-r--r--zellij-integration-tests/tests/snapshots/tabs__break_pane_into_new_tab.snap25
-rw-r--r--zellij-integration-tests/tests/snapshots/tabs__break_pane_to_the_left.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/tabs__break_pane_to_the_right.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/tabs__close_tab.snap25
-rw-r--r--zellij-integration-tests/tests/snapshots/tabs__go_to_next_tab.snap25
-rw-r--r--zellij-integration-tests/tests/snapshots/tabs__go_to_previous_tab.snap25
-rw-r--r--zellij-integration-tests/tests/snapshots/tabs__go_to_tab_by_number.snap25
-rw-r--r--zellij-integration-tests/tests/snapshots/tabs__move_tab_to_left.snap25
-rw-r--r--zellij-integration-tests/tests/snapshots/tabs__move_tab_to_left_until_it_wraps_around.snap25
-rw-r--r--zellij-integration-tests/tests/snapshots/tabs__move_tab_to_right.snap25
-rw-r--r--zellij-integration-tests/tests/snapshots/tabs__move_tab_to_right_until_it_wraps_around.snap25
-rw-r--r--zellij-integration-tests/tests/snapshots/tabs__open_new_tab.snap27
-rw-r--r--zellij-integration-tests/tests/snapshots/tabs__toggle_active_sync_tab.snap46
-rw-r--r--zellij-integration-tests/tests/snapshots/tabs__toggle_tab_returns_to_last_used.snap25
-rw-r--r--zellij-integration-tests/tests/snapshots/tabs__undo_rename_tab.snap25
-rw-r--r--zellij-integration-tests/tests/snapshots/title_frame_mouse__mouse_click_floating_ribbon_in_status_bar_opens_a_floating_pane.snap18
-rw-r--r--zellij-integration-tests/tests/snapshots/title_frame_mouse__mouse_click_new_pane_in_status_bar_opens_a_new_pane.snap28
-rw-r--r--zellij-integration-tests/tests/snapshots/title_frame_mouse__mouse_click_new_pane_in_status_bar_twice_opens_two_panes.snap28
-rw-r--r--zellij-integration-tests/tests/snapshots/title_frame_mouse__mouse_click_new_tab_button_in_tab_bar_opens_a_new_tab.snap7
-rw-r--r--zellij-integration-tests/tests/tabs.rs9
-rw-r--r--zellij-integration-tests/tests/title_frame_hints.rs233
-rw-r--r--zellij-integration-tests/tests/title_frame_mouse.rs158
-rw-r--r--zellij-integration-tests/tests/title_frame_scroll.rs58
133 files changed, 2431 insertions, 2446 deletions
diff --git a/zellij-integration-tests/tests/app.rs b/zellij-integration-tests/tests/app.rs
index 74ed11e4..45e57512 100644
--- a/zellij-integration-tests/tests/app.rs
+++ b/zellij-integration-tests/tests/app.rs
@@ -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()
});
diff --git a/zellij-integration-tests/tests/basic.rs b/zellij-integration-tests/tests/basic.rs
index e72cd1c6..1ed5b46a 100644
--- a/zellij-integration-tests/tests/basic.rs
+++ b/zellij-integration-tests/tests/basic.rs
@@ -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();
diff --git a/zellij-integration-tests/tests/cli.rs b/zellij-integration-tests/tests/cli.rs
index 75c3ce4a..3460994e 100644
--- a/zellij-integration-tests/tests/cli.rs
+++ b/zellij-integration-tests/tests/cli.rs
@@ -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));
diff --git a/zellij-integration-tests/tests/clients.rs b/zellij-integration-tests/tests/clients.rs
index 669e5aa3..06996b5b 100644
--- a/zellij-integration-tests/tests/clients.rs
+++ b/zellij-integration-tests/tests/clients.rs
@@ -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");
diff --git a/zellij-integration-tests/tests/misc.rs b/zellij-integration-tests/tests/misc.rs
index 83a02878..3bd14624 100644
--- a/zellij-integration-tests/tests/misc.rs
+++ b/zellij-integration-tests/tests/misc.rs
@@ -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();
diff --git a/zellij-integration-tests/tests/modes.rs b/zellij-integration-tests/tests/modes.rs
index 0fc093be..c2f61d67 100644
--- a/zellij-integration-tests/tests/modes.rs
+++ b/zellij-integration-tests/tests/modes.rs
@@ -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();
diff --git a/zellij-integration-tests/tests/mouse.rs b/zellij-integration-tests/tests/mouse.rs
index e4aa038c..4d134723 100644
--- a/zellij-integration-tests/tests/mouse.rs
+++ b/zellij-integration-tests/tests/mouse.rs
@@ -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))
},
);
diff --git a/zellij-integration-tests/tests/panes.rs b/zellij-integration-tests/tests/panes.rs
index 9defe5f2..61c3cd5a 100644
--- a/zellij-integration-tests/tests/panes.rs
+++ b/zellij-integration-tests/tests/panes.rs
@@ -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();
}
diff --git a/zellij-integration-tests/tests/resize.rs b/zellij-integration-tests/tests/resize.rs
index bf1263c3..ba9fae4b 100644
--- a/zellij-integration-tests/tests/resize.rs
+++ b/zellij-integration-tests/tests/resize.rs
@@ -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))
});
}
diff --git a/zellij-integration-tests/tests/resurrection.rs b/zellij-integration-tests/tests/resurrection.rs
index 7f6a10b0..63ed1626 100644
--- a/zellij-integration-tests/tests/resurrection.rs
+++ b/zellij-integration-tests/tests/resurrection.rs
@@ -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()
},
);
diff --git a/zellij-integration-tests/tests/scroll.rs b/zellij-integration-tests/tests/scroll.rs
index 35316957..1a88b84a 100644
--- a/zellij-integration-tests/tests/scroll.rs
+++ b/zellij-integration-tests/tests/scroll.rs
@@ -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();
diff --git a/zellij-integration-tests/tests/search.rs b/zellij-integration-tests/tests/search.rs
index c15fe76e..6c750b0b 100644
--- a/zellij-integration-tests/tests/search.rs
+++ b/zellij-integration-tests/tests/search.rs
@@ -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'));
diff --git a/zellij-integration-tests/tests/set_pane_frame_style.rs b/zellij-integration-tests/tests/set_pane_frame_style.rs
new file mode 100644
index 00000000..5b18f965
--- /dev/null
+++ b/zellij-integration-tests/tests/set_pane_frame_style.rs
@@ -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();
+}
diff --git a/zellij-integration-tests/tests/single_pane_tab_title.rs b/zellij-integration-tests/tests/single_pane_tab_title.rs
new file mode 100644
index 00000000..1fd1a553
--- /dev/null
+++ b/zellij-integration-tests/tests/single_pane_tab_title.rs
@@ -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();
+}
diff --git a/zellij-integration-tests/tests/snapshots/app__edit_scrollback.snap b/zellij-integration-tests/tests/snapshots/app__edit_scrollback.snap
index 80505f55..f28120d7 100644
--- a/zellij-integration-tests/tests/snapshots/app__edit_scrollback.snap
+++ b/zellij-integration-tests/tests/snapshots/app__edit_scrollback.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/app__resize_terminal_window.snap b/zellij-integration-tests/tests/snapshots/app__resize_terminal_window.snap
index 2a285443..b9e64ea2 100644
--- a/zellij-integration-tests/tests/snapshots/app__resize_terminal_window.snap
+++ b/zellij-integration-tests/tests/snapshots/app__resize_terminal_window.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/app__status_bar_loads_custom_keybindings.snap b/zellij-integration-tests/tests/snapshots/app__status_bar_loads_custom_keybindings.snap
index 0670f288..9c8fa8c7 100644
--- a/zellij-integration-tests/tests/snapshots/app__status_bar_loads_custom_keybindings.snap
+++ b/zellij-integration-tests/tests/snapshots/app__status_bar_loads_custom_keybindings.snap
@@ -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 
diff --git a/zellij-integration-tests/tests/snapshots/app__use_custom_layout_with_relative_path.snap b/zellij-integration-tests/tests/snapshots/app__use_custom_layout_with_relative_path.snap
index 03d134ea..120ef352 100644
--- a/zellij-integration-tests/tests/snapshots/app__use_custom_layout_with_relative_path.snap
+++ b/zellij-integration-tests/tests/snapshots/app__use_custom_layout_with_relative_path.snap
@@ -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  + 
diff --git a/zellij-integration-tests/tests/snapshots/basic__resize_pane.snap b/zellij-integration-tests/tests/snapshots/basic__resize_pane.snap
index ba160d8c..50538a08 100644
--- a/zellij-integration-tests/tests/snapshots/basic__resize_pane.snap
+++ b/zellij-integration-tests/tests/snapshots/basic__resize_pane.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/basic__split_terminals_vertically.snap b/zellij-integration-tests/tests/snapshots/basic__split_terminals_vertically.snap
index 7f5f5a69..b50409e2 100644
--- a/zellij-integration-tests/tests/snapshots/basic__split_terminals_vertically.snap
+++ b/zellij-integration-tests/tests/snapshots/basic__split_terminals_vertically.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/basic__starts_with_one_terminal.snap b/zellij-integration-tests/tests/snapshots/basic__starts_with_one_terminal.snap
index 7fff8f8f..f4846229 100644
--- a/zellij-integration-tests/tests/snapshots/basic__starts_with_one_terminal.snap
+++ b/zellij-integration-tests/tests/snapshots/basic__starts_with_one_terminal.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/cli__override_layout_from_default_to_compact.snap b/zellij-integration-tests/tests/snapshots/cli__override_layout_from_default_to_compact.snap
index 386bd7e5..eaa7659e 100644
--- a/zellij-integration-tests/tests/snapshots/cli__override_layout_from_default_to_compact.snap
+++ b/zellij-integration-tests/tests/snapshots/cli__override_layout_from_default_to_compact.snap
@@ -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 
diff --git a/zellij-integration-tests/tests/snapshots/cli__send_blocking_command_through_the_cli.snap b/zellij-integration-tests/tests/snapshots/cli__send_blocking_command_through_the_cli.snap
index 6b2d58e7..8901dad4 100644
--- a/zellij-integration-tests/tests/snapshots/cli__send_blocking_command_through_the_cli.snap
+++ b/zellij-integration-tests/tests/snapshots/cli__send_blocking_command_through_the_cli.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/cli__send_command_through_the_cli.snap b/zellij-integration-tests/tests/snapshots/cli__send_command_through_the_cli.snap
index 42573137..97f46d06 100644
--- a/zellij-integration-tests/tests/snapshots/cli__send_command_through_the_cli.snap
+++ b/zellij-integration-tests/tests/snapshots/cli__send_command_through_the_cli.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/cli__watcher_client_functionality-2.snap b/zellij-integration-tests/tests/snapshots/cli__watcher_client_functionality-2.snap
index 707da328..c713a934 100644
--- a/zellij-integration-tests/tests/snapshots/cli__watcher_client_functionality-2.snap
+++ b/zellij-integration-tests/tests/snapshots/cli__watcher_client_functionality-2.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/cli__watcher_client_functionality.snap b/zellij-integration-tests/tests/snapshots/cli__watcher_client_functionality.snap
index 633d8f3b..dc904dd6 100644
--- a/zellij-integration-tests/tests/snapshots/cli__watcher_client_functionality.snap
+++ b/zellij-integration-tests/tests/snapshots/cli__watcher_client_functionality.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/clients__detach_and_attach_session.snap b/zellij-integration-tests/tests/snapshots/clients__detach_and_attach_session.snap
index 14b6ad52..966b41df 100644
--- a/zellij-integration-tests/tests/snapshots/clients__detach_and_attach_session.snap
+++ b/zellij-integration-tests/tests/snapshots/clients__detach_and_attach_session.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/clients__mirrored_sessions.snap b/zellij-integration-tests/tests/snapshots/clients__mirrored_sessions.snap
index 0e6e31cb..4b190af2 100644
--- a/zellij-integration-tests/tests/snapshots/clients__mirrored_sessions.snap
+++ b/zellij-integration-tests/tests/snapshots/clients__mirrored_sessions.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/clients__multiple_users_in_different_panes_and_same_tab-2.snap b/zellij-integration-tests/tests/snapshots/clients__multiple_users_in_different_panes_and_same_tab-2.snap
index 59e690c5..2da66244 100644
--- a/zellij-integration-tests/tests/snapshots/clients__multiple_users_in_different_panes_and_same_tab-2.snap
+++ b/zellij-integration-tests/tests/snapshots/clients__multiple_users_in_different_panes_and_same_tab-2.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/clients__multiple_users_in_different_panes_and_same_tab.snap b/zellij-integration-tests/tests/snapshots/clients__multiple_users_in_different_panes_and_same_tab.snap
index 6ad8e0cd..9a2de537 100644
--- a/zellij-integration-tests/tests/snapshots/clients__multiple_users_in_different_panes_and_same_tab.snap
+++ b/zellij-integration-tests/tests/snapshots/clients__multiple_users_in_different_panes_and_same_tab.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/clients__multiple_users_in_different_tabs-2.snap b/zellij-integration-tests/tests/snapshots/clients__multiple_users_in_different_tabs-2.snap
index 0806898d..9d514fe8 100644
--- a/zellij-integration-tests/tests/snapshots/clients__multiple_users_in_different_tabs-2.snap
+++ b/zellij-integration-tests/tests/snapshots/clients__multiple_users_in_different_tabs-2.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/clients__multiple_users_in_different_tabs.snap b/zellij-integration-tests/tests/snapshots/clients__multiple_users_in_different_tabs.snap
index fe0a78a9..26f7c371 100644
--- a/zellij-integration-tests/tests/snapshots/clients__multiple_users_in_different_tabs.snap
+++ b/zellij-integration-tests/tests/snapshots/clients__multiple_users_in_different_tabs.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/clients__multiple_users_in_same_pane_and_tab-2.snap b/zellij-integration-tests/tests/snapshots/clients__multiple_users_in_same_pane_and_tab-2.snap
index ea21dde0..803a2105 100644
--- a/zellij-integration-tests/tests/snapshots/clients__multiple_users_in_same_pane_and_tab-2.snap
+++ b/zellij-integration-tests/tests/snapshots/clients__multiple_users_in_same_pane_and_tab-2.snap
@@ -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: ├─────────────────────────────────────────────────┐
│$ █ │
│ │
diff --git a/zellij-integration-tests/tests/snapshots/clients__multiple_users_in_same_pane_and_tab.snap b/zellij-integration-tests/tests/snapshots/clients__multiple_users_in_same_pane_and_tab.snap
index 5e27178e..13d85f0b 100644
--- a/zellij-integration-tests/tests/snapshots/clients__multiple_users_in_same_pane_and_tab.snap
+++ b/zellij-integration-tests/tests/snapshots/clients__multiple_users_in_same_pane_and_tab.snap
@@ -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: ├─────────────────────────────────────────────────┐
│$ █ │
│ │
diff --git a/zellij-integration-tests/tests/snapshots/misc__focus_next_pane_via_tmux_mode.snap b/zellij-integration-tests/tests/snapshots/misc__focus_next_pane_via_tmux_mode.snap
index a114ffc5..8a7dc160 100644
--- a/zellij-integration-tests/tests/snapshots/misc__focus_next_pane_via_tmux_mode.snap
+++ b/zellij-integration-tests/tests/snapshots/misc__focus_next_pane_via_tmux_mode.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/misc__next_swap_layout.snap b/zellij-integration-tests/tests/snapshots/misc__next_swap_layout.snap
index 8e954ab9..9ec7cc4b 100644
--- a/zellij-integration-tests/tests/snapshots/misc__next_swap_layout.snap
+++ b/zellij-integration-tests/tests/snapshots/misc__next_swap_layout.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/misc__previous_swap_layout.snap b/zellij-integration-tests/tests/snapshots/misc__previous_swap_layout.snap
index 8e954ab9..9ec7cc4b 100644
--- a/zellij-integration-tests/tests/snapshots/misc__previous_swap_layout.snap
+++ b/zellij-integration-tests/tests/snapshots/misc__previous_swap_layout.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/misc__toggle_group_marking.snap b/zellij-integration-tests/tests/snapshots/misc__toggle_group_marking.snap
index 9932251c..c704e688 100644
--- a/zellij-integration-tests/tests/snapshots/misc__toggle_group_marking.snap
+++ b/zellij-integration-tests/tests/snapshots/misc__toggle_group_marking.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/misc__toggle_pane_in_group.snap b/zellij-integration-tests/tests/snapshots/misc__toggle_pane_in_group.snap
index 9932251c..c704e688 100644
--- a/zellij-integration-tests/tests/snapshots/misc__toggle_pane_in_group.snap
+++ b/zellij-integration-tests/tests/snapshots/misc__toggle_pane_in_group.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/misc__write_byte_to_focused_pane_via_tmux_mode.snap b/zellij-integration-tests/tests/snapshots/misc__write_byte_to_focused_pane_via_tmux_mode.snap
index 29857afc..f2a692e7 100644
--- a/zellij-integration-tests/tests/snapshots/misc__write_byte_to_focused_pane_via_tmux_mode.snap
+++ b/zellij-integration-tests/tests/snapshots/misc__write_byte_to_focused_pane_via_tmux_mode.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/modes__bracketed_paste.snap b/zellij-integration-tests/tests/snapshots/modes__bracketed_paste.snap
index 421627c3..b2ae0119 100644
--- a/zellij-integration-tests/tests/snapshots/modes__bracketed_paste.snap
+++ b/zellij-integration-tests/tests/snapshots/modes__bracketed_paste.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/modes__enter_search_mode.snap b/zellij-integration-tests/tests/snapshots/modes__enter_search_mode.snap
index e2170783..1fb9dee7 100644
--- a/zellij-integration-tests/tests/snapshots/modes__enter_search_mode.snap
+++ b/zellij-integration-tests/tests/snapshots/modes__enter_search_mode.snap
@@ -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 
diff --git a/zellij-integration-tests/tests/snapshots/modes__lock_mode.snap b/zellij-integration-tests/tests/snapshots/modes__lock_mode.snap
index 8dde2b5b..744d0373 100644
--- a/zellij-integration-tests/tests/snapshots/modes__lock_mode.snap
+++ b/zellij-integration-tests/tests/snapshots/modes__lock_mode.snap
@@ -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 
diff --git a/zellij-integration-tests/tests/snapshots/modes__return_to_normal_mode.snap b/zellij-integration-tests/tests/snapshots/modes__return_to_normal_mode.snap
index b8e8dc2c..b0605346 100644
--- a/zellij-integration-tests/tests/snapshots/modes__return_to_normal_mode.snap
+++ b/zellij-integration-tests/tests/snapshots/modes__return_to_normal_mode.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/modes__scrolling_inside_a_pane.snap b/zellij-integration-tests/tests/snapshots/modes__scrolling_inside_a_pane.snap
index 0af68b35..96506ac6 100644
--- a/zellij-integration-tests/tests/snapshots/modes__scrolling_inside_a_pane.snap
+++ b/zellij-integration-tests/tests/snapshots/modes__scrolling_inside_a_pane.snap
@@ -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 
diff --git a/zellij-integration-tests/tests/snapshots/modes__switch_to_move_mode.snap b/zellij-integration-tests/tests/snapshots/modes__switch_to_move_mode.snap
index 2c38ca5b..7c5a8166 100644
--- a/zellij-integration-tests/tests/snapshots/modes__switch_to_move_mode.snap
+++ b/zellij-integration-tests/tests/snapshots/modes__switch_to_move_mode.snap
@@ -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 
diff --git a/zellij-integration-tests/tests/snapshots/modes__switch_to_pane_mode.snap b/zellij-integration-tests/tests/snapshots/modes__switch_to_pane_mode.snap
index 77a3a87a..cf9153c1 100644
--- a/zellij-integration-tests/tests/snapshots/modes__switch_to_pane_mode.snap
+++ b/zellij-integration-tests/tests/snapshots/modes__switch_to_pane_mode.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/modes__switch_to_resize_mode.snap b/zellij-integration-tests/tests/snapshots/modes__switch_to_resize_mode.snap
index 934b93fa..cabc4035 100644
--- a/zellij-integration-tests/tests/snapshots/modes__switch_to_resize_mode.snap
+++ b/zellij-integration-tests/tests/snapshots/modes__switch_to_resize_mode.snap
@@ -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 
diff --git a/zellij-integration-tests/tests/snapshots/modes__switch_to_scroll_mode.snap b/zellij-integration-tests/tests/snapshots/modes__switch_to_scroll_mode.snap
index bb92c9f8..fd74b0c0 100644
--- a/zellij-integration-tests/tests/snapshots/modes__switch_to_scroll_mode.snap
+++ b/zellij-integration-tests/tests/snapshots/modes__switch_to_scroll_mode.snap
@@ -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 
diff --git a/zellij-integration-tests/tests/snapshots/modes__switch_to_search_mode.snap b/zellij-integration-tests/tests/snapshots/modes__switch_to_search_mode.snap
index 9e647b1a..8bef38dd 100644
--- a/zellij-integration-tests/tests/snapshots/modes__switch_to_search_mode.snap
+++ b/zellij-integration-tests/tests/snapshots/modes__switch_to_search_mode.snap
@@ -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 
diff --git a/zellij-integration-tests/tests/snapshots/modes__switch_to_session_mode.snap b/zellij-integration-tests/tests/snapshots/modes__switch_to_session_mode.snap
index df752793..55785d6e 100644
--- a/zellij-integration-tests/tests/snapshots/modes__switch_to_session_mode.snap
+++ b/zellij-integration-tests/tests/snapshots/modes__switch_to_session_mode.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/modes__switch_to_tab_mode.snap b/zellij-integration-tests/tests/snapshots/modes__switch_to_tab_mode.snap
index 0bd07696..efb2bc6a 100644
--- a/zellij-integration-tests/tests/snapshots/modes__switch_to_tab_mode.snap
+++ b/zellij-integration-tests/tests/snapshots/modes__switch_to_tab_mode.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/modes__tmux_mode.snap b/zellij-integration-tests/tests/snapshots/modes__tmux_mode.snap
index 42363818..88429ed3 100644
--- a/zellij-integration-tests/tests/snapshots/modes__tmux_mode.snap
+++ b/zellij-integration-tests/tests/snapshots/modes__tmux_mode.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/mouse__focus_pane_with_mouse.snap b/zellij-integration-tests/tests/snapshots/mouse__focus_pane_with_mouse.snap
index f007cf9d..4b400874 100644
--- a/zellij-integration-tests/tests/snapshots/mouse__focus_pane_with_mouse.snap
+++ b/zellij-integration-tests/tests/snapshots/mouse__focus_pane_with_mouse.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/mouse__pin_floating_panes.snap b/zellij-integration-tests/tests/snapshots/mouse__pin_floating_panes.snap
index 6bdb9ca6..7ec4a10d 100644
--- a/zellij-integration-tests/tests/snapshots/mouse__pin_floating_panes.snap
+++ b/zellij-integration-tests/tests/snapshots/mouse__pin_floating_panes.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/mouse__scrolling_inside_a_pane_with_mouse.snap b/zellij-integration-tests/tests/snapshots/mouse__scrolling_inside_a_pane_with_mouse.snap
index 629cc513..0a1495df 100644
--- a/zellij-integration-tests/tests/snapshots/mouse__scrolling_inside_a_pane_with_mouse.snap
+++ b/zellij-integration-tests/tests/snapshots/mouse__scrolling_inside_a_pane_with_mouse.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/panes__cannot_split_terminals_vertically_when_active_terminal_is_too_small.snap b/zellij-integration-tests/tests/snapshots/panes__cannot_split_terminals_vertically_when_active_terminal_is_too_small.snap
index 0800ee6c..0e53b7b2 100644
--- a/zellij-integration-tests/tests/snapshots/panes__cannot_split_terminals_vertically_when_active_terminal_is_too_small.snap
+++ b/zellij-integration-tests/tests/snapshots/panes__cannot_split_terminals_vertically_when_active_terminal_is_too_small.snap
@@ -3,22 +3,5 @@ source: zellij-integration-tests/tests/panes.rs
expression: normalized(&grid_snapshot)
---
-┌──────┐
-│$ done│
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-└──────┘
+$ done█
Ctrl +
diff --git a/zellij-integration-tests/tests/snapshots/panes__close_pane.snap b/zellij-integration-tests/tests/snapshots/panes__close_pane.snap
index b9d0bb9c..717e5a5e 100644
--- a/zellij-integration-tests/tests/snapshots/panes__close_pane.snap
+++ b/zellij-integration-tests/tests/snapshots/panes__close_pane.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/panes__move_focus_down_in_pane_mode.snap b/zellij-integration-tests/tests/snapshots/panes__move_focus_down_in_pane_mode.snap
index bf220375..12bf79f3 100644
--- a/zellij-integration-tests/tests/snapshots/panes__move_focus_down_in_pane_mode.snap
+++ b/zellij-integration-tests/tests/snapshots/panes__move_focus_down_in_pane_mode.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/panes__move_focus_left_in_pane_mode.snap b/zellij-integration-tests/tests/snapshots/panes__move_focus_left_in_pane_mode.snap
index fbbe4940..dc72368a 100644
--- a/zellij-integration-tests/tests/snapshots/panes__move_focus_left_in_pane_mode.snap
+++ b/zellij-integration-tests/tests/snapshots/panes__move_focus_left_in_pane_mode.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/panes__move_focus_or_tab_moves_focus_between_panes.snap b/zellij-integration-tests/tests/snapshots/panes__move_focus_or_tab_moves_focus_between_panes.snap
index fbbe4940..dc72368a 100644
--- a/zellij-integration-tests/tests/snapshots/panes__move_focus_or_tab_moves_focus_between_panes.snap
+++ b/zellij-integration-tests/tests/snapshots/panes__move_focus_or_tab_moves_focus_between_panes.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/panes__move_focus_or_tab_switches_tab_when_single_pane.snap b/zellij-integration-tests/tests/snapshots/panes__move_focus_or_tab_switches_tab_when_single_pane.snap
index f0254ce4..a4690066 100644
--- a/zellij-integration-tests/tests/snapshots/panes__move_focus_or_tab_switches_tab_when_single_pane.snap
+++ b/zellij-integration-tests/tests/snapshots/panes__move_focus_or_tab_switches_tab_when_single_pane.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/panes__move_focus_right_in_pane_mode.snap b/zellij-integration-tests/tests/snapshots/panes__move_focus_right_in_pane_mode.snap
index f68a25e2..143b1902 100644
--- a/zellij-integration-tests/tests/snapshots/panes__move_focus_right_in_pane_mode.snap
+++ b/zellij-integration-tests/tests/snapshots/panes__move_focus_right_in_pane_mode.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/panes__move_focus_up_in_pane_mode.snap b/zellij-integration-tests/tests/snapshots/panes__move_focus_up_in_pane_mode.snap
index 1bf6e70d..9919d65f 100644
--- a/zellij-integration-tests/tests/snapshots/panes__move_focus_up_in_pane_mode.snap
+++ b/zellij-integration-tests/tests/snapshots/panes__move_focus_up_in_pane_mode.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/panes__move_pane_backwards_swaps_with_neighbor.snap b/zellij-integration-tests/tests/snapshots/panes__move_pane_backwards_swaps_with_neighbor.snap
index a5ec291c..b8007c7b 100644
--- a/zellij-integration-tests/tests/snapshots/panes__move_pane_backwards_swaps_with_neighbor.snap
+++ b/zellij-integration-tests/tests/snapshots/panes__move_pane_backwards_swaps_with_neighbor.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/panes__move_pane_down.snap b/zellij-integration-tests/tests/snapshots/panes__move_pane_down.snap
index 3efaa27f..f14d9dea 100644
--- a/zellij-integration-tests/tests/snapshots/panes__move_pane_down.snap
+++ b/zellij-integration-tests/tests/snapshots/panes__move_pane_down.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/panes__move_pane_left.snap b/zellij-integration-tests/tests/snapshots/panes__move_pane_left.snap
index a5ec291c..b8007c7b 100644
--- a/zellij-integration-tests/tests/snapshots/panes__move_pane_left.snap
+++ b/zellij-integration-tests/tests/snapshots/panes__move_pane_left.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/panes__move_pane_swaps_with_neighbor.snap b/zellij-integration-tests/tests/snapshots/panes__move_pane_swaps_with_neighbor.snap
index a5ec291c..b8007c7b 100644
--- a/zellij-integration-tests/tests/snapshots/panes__move_pane_swaps_with_neighbor.snap
+++ b/zellij-integration-tests/tests/snapshots/panes__move_pane_swaps_with_neighbor.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/panes__new_pane_in_normal_mode.snap b/zellij-integration-tests/tests/snapshots/panes__new_pane_in_normal_mode.snap
index f68a25e2..143b1902 100644
--- a/zellij-integration-tests/tests/snapshots/panes__new_pane_in_normal_mode.snap
+++ b/zellij-integration-tests/tests/snapshots/panes__new_pane_in_normal_mode.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/panes__new_pane_in_pane_mode.snap b/zellij-integration-tests/tests/snapshots/panes__new_pane_in_pane_mode.snap
index f68a25e2..143b1902 100644
--- a/zellij-integration-tests/tests/snapshots/panes__new_pane_in_pane_mode.snap
+++ b/zellij-integration-tests/tests/snapshots/panes__new_pane_in_pane_mode.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/panes__new_stacked_pane.snap b/zellij-integration-tests/tests/snapshots/panes__new_stacked_pane.snap
index 64abb7f3..b47edec4 100644
--- a/zellij-integration-tests/tests/snapshots/panes__new_stacked_pane.snap
+++ b/zellij-integration-tests/tests/snapshots/panes__new_stacked_pane.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/panes__pane_closes_when_its_process_exits.snap b/zellij-integration-tests/tests/snapshots/panes__pane_closes_when_its_process_exits.snap
index b9d0bb9c..717e5a5e 100644
--- a/zellij-integration-tests/tests/snapshots/panes__pane_closes_when_its_process_exits.snap
+++ b/zellij-integration-tests/tests/snapshots/panes__pane_closes_when_its_process_exits.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/panes__split_pane_downward.snap b/zellij-integration-tests/tests/snapshots/panes__split_pane_downward.snap
index bf220375..12bf79f3 100644
--- a/zellij-integration-tests/tests/snapshots/panes__split_pane_downward.snap
+++ b/zellij-integration-tests/tests/snapshots/panes__split_pane_downward.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/panes__start_without_pane_frames.snap b/zellij-integration-tests/tests/snapshots/panes__start_without_pane_frames.snap
index e58b8c3e..be4beb78 100644
--- a/zellij-integration-tests/tests/snapshots/panes__start_without_pane_frames.snap
+++ b/zellij-integration-tests/tests/snapshots/panes__start_without_pane_frames.snap
@@ -2,7 +2,7 @@
source: zellij-integration-tests/tests/panes.rs
expression: normalized(&grid_snapshot)
---
- Zellij (test)  Tab #1 
+ Zellij (test)  Tab #1  + 
$ │$ █
│
│
diff --git a/zellij-integration-tests/tests/snapshots/panes__switch_focus_in_pane_mode.snap b/zellij-integration-tests/tests/snapshots/panes__switch_focus_in_pane_mode.snap
index fbbe4940..dc72368a 100644
--- a/zellij-integration-tests/tests/snapshots/panes__switch_focus_in_pane_mode.snap
+++ b/zellij-integration-tests/tests/snapshots/panes__switch_focus_in_pane_mode.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/panes__toggle_floating_panes.snap b/zellij-integration-tests/tests/snapshots/panes__toggle_floating_panes.snap
index 3a4e1240..00b7b4b4 100644
--- a/zellij-integration-tests/tests/snapshots/panes__toggle_floating_panes.snap
+++ b/zellij-integration-tests/tests/snapshots/panes__toggle_floating_panes.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/panes__toggle_frames_with_floating_pane.snap b/zellij-integration-tests/tests/snapshots/panes__toggle_frames_with_floating_pane.snap
new file mode 100644
index 00000000..be296cab
--- /dev/null
+++ b/zellij-integration-tests/tests/snapshots/panes__toggle_frames_with_floating_pane.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/panes__toggle_frames_with_single_pane.snap b/zellij-integration-tests/tests/snapshots/panes__toggle_frames_with_single_pane.snap
new file mode 100644
index 00000000..b89372c8
--- /dev/null
+++ b/zellij-integration-tests/tests/snapshots/panes__toggle_frames_with_single_pane.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/panes__toggle_frames_with_stacked_panes.snap b/zellij-integration-tests/tests/snapshots/panes__toggle_frames_with_stacked_panes.snap
new file mode 100644
index 00000000..4f752a1b
--- /dev/null
+++ b/zellij-integration-tests/tests/snapshots/panes__toggle_frames_with_stacked_panes.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/panes__toggle_pane_embed_or_floating.snap b/zellij-integration-tests/tests/snapshots/panes__toggle_pane_embed_or_floating.snap
index 3a4e1240..00b7b4b4 100644
--- a/zellij-integration-tests/tests/snapshots/panes__toggle_pane_embed_or_floating.snap
+++ b/zellij-integration-tests/tests/snapshots/panes__toggle_pane_embed_or_floating.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/panes__toggle_pane_frames.snap b/zellij-integration-tests/tests/snapshots/panes__toggle_pane_frames.snap
index e58b8c3e..143b1902 100644
--- a/zellij-integration-tests/tests/snapshots/panes__toggle_pane_frames.snap
+++ b/zellij-integration-tests/tests/snapshots/panes__toggle_pane_frames.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/panes__toggle_pane_fullscreen.snap b/zellij-integration-tests/tests/snapshots/panes__toggle_pane_fullscreen.snap
index fcb1eba9..ad010e60 100644
--- a/zellij-integration-tests/tests/snapshots/panes__toggle_pane_fullscreen.snap
+++ b/zellij-integration-tests/tests/snapshots/panes__toggle_pane_fullscreen.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/panes__toggle_pane_pinned.snap b/zellij-integration-tests/tests/snapshots/panes__toggle_pane_pinned.snap
index 858b2446..de6f7edb 100644
--- a/zellij-integration-tests/tests/snapshots/panes__toggle_pane_pinned.snap
+++ b/zellij-integration-tests/tests/snapshots/panes__toggle_pane_pinned.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/panes__undo_rename_pane.snap b/zellij-integration-tests/tests/snapshots/panes__undo_rename_pane.snap
index b9d0bb9c..143b1902 100644
--- a/zellij-integration-tests/tests/snapshots/panes__undo_rename_pane.snap
+++ b/zellij-integration-tests/tests/snapshots/panes__undo_rename_pane.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/plugins__load_plugins_in_background_on_startup.snap b/zellij-integration-tests/tests/snapshots/plugins__load_plugins_in_background_on_startup.snap
index 7341d7a6..034a2c02 100644
--- a/zellij-integration-tests/tests/snapshots/plugins__load_plugins_in_background_on_startup.snap
+++ b/zellij-integration-tests/tests/snapshots/plugins__load_plugins_in_background_on_startup.snap
@@ -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) │
+ │ │
+ │ │
+ │ │
+ │ │
+ │ │
+ └──────────────────────────────────────────────────────────┘
diff --git a/zellij-integration-tests/tests/snapshots/resize__resize_decrease_down.snap b/zellij-integration-tests/tests/snapshots/resize__resize_decrease_down.snap
index 6bb097ff..53311e6d 100644
--- a/zellij-integration-tests/tests/snapshots/resize__resize_decrease_down.snap
+++ b/zellij-integration-tests/tests/snapshots/resize__resize_decrease_down.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/resize__resize_decrease_in_normal_mode.snap b/zellij-integration-tests/tests/snapshots/resize__resize_decrease_in_normal_mode.snap
index 6d94b5be..89aa0ab6 100644
--- a/zellij-integration-tests/tests/snapshots/resize__resize_decrease_in_normal_mode.snap
+++ b/zellij-integration-tests/tests/snapshots/resize__resize_decrease_in_normal_mode.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/resize__resize_decrease_in_resize_mode.snap b/zellij-integration-tests/tests/snapshots/resize__resize_decrease_in_resize_mode.snap
index 6d94b5be..89aa0ab6 100644
--- a/zellij-integration-tests/tests/snapshots/resize__resize_decrease_in_resize_mode.snap
+++ b/zellij-integration-tests/tests/snapshots/resize__resize_decrease_in_resize_mode.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/resize__resize_decrease_left.snap b/zellij-integration-tests/tests/snapshots/resize__resize_decrease_left.snap
index 31a95ba2..086c9ed1 100644
--- a/zellij-integration-tests/tests/snapshots/resize__resize_decrease_left.snap
+++ b/zellij-integration-tests/tests/snapshots/resize__resize_decrease_left.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/resize__resize_decrease_right.snap b/zellij-integration-tests/tests/snapshots/resize__resize_decrease_right.snap
index 8071443e..811b464d 100644
--- a/zellij-integration-tests/tests/snapshots/resize__resize_decrease_right.snap
+++ b/zellij-integration-tests/tests/snapshots/resize__resize_decrease_right.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/resize__resize_decrease_up.snap b/zellij-integration-tests/tests/snapshots/resize__resize_decrease_up.snap
index f60a7abc..9469e37a 100644
--- a/zellij-integration-tests/tests/snapshots/resize__resize_decrease_up.snap
+++ b/zellij-integration-tests/tests/snapshots/resize__resize_decrease_up.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/resize__resize_increase_down.snap b/zellij-integration-tests/tests/snapshots/resize__resize_increase_down.snap
index b04b511a..53311e6d 100644
--- a/zellij-integration-tests/tests/snapshots/resize__resize_increase_down.snap
+++ b/zellij-integration-tests/tests/snapshots/resize__resize_increase_down.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/resize__resize_increase_in_normal_mode.snap b/zellij-integration-tests/tests/snapshots/resize__resize_increase_in_normal_mode.snap
index 1da118af..2a1f23f0 100644
--- a/zellij-integration-tests/tests/snapshots/resize__resize_increase_in_normal_mode.snap
+++ b/zellij-integration-tests/tests/snapshots/resize__resize_increase_in_normal_mode.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/resize__resize_increase_in_resize_mode.snap b/zellij-integration-tests/tests/snapshots/resize__resize_increase_in_resize_mode.snap
index 1da118af..2a1f23f0 100644
--- a/zellij-integration-tests/tests/snapshots/resize__resize_increase_in_resize_mode.snap
+++ b/zellij-integration-tests/tests/snapshots/resize__resize_increase_in_resize_mode.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/resize__resize_increase_right.snap b/zellij-integration-tests/tests/snapshots/resize__resize_increase_right.snap
index fca16a54..416be42d 100644
--- a/zellij-integration-tests/tests/snapshots/resize__resize_increase_right.snap
+++ b/zellij-integration-tests/tests/snapshots/resize__resize_increase_right.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/resize__resize_increase_up.snap b/zellij-integration-tests/tests/snapshots/resize__resize_increase_up.snap
index 5ff0c7aa..9469e37a 100644
--- a/zellij-integration-tests/tests/snapshots/resize__resize_increase_up.snap
+++ b/zellij-integration-tests/tests/snapshots/resize__resize_increase_up.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/resurrection__quit_and_resurrect_session.snap b/zellij-integration-tests/tests/snapshots/resurrection__quit_and_resurrect_session.snap
index 414fdd10..70894a4e 100644
--- a/zellij-integration-tests/tests/snapshots/resurrection__quit_and_resurrect_session.snap
+++ b/zellij-integration-tests/tests/snapshots/resurrection__quit_and_resurrect_session.snap
@@ -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  ...
diff --git a/zellij-integration-tests/tests/snapshots/resurrection__quit_and_resurrect_session_with_viewport_serialization.snap b/zellij-integration-tests/tests/snapshots/resurrection__quit_and_resurrect_session_with_viewport_serialization.snap
index 9cdf365b..4c6f5ee3 100644
--- a/zellij-integration-tests/tests/snapshots/resurrection__quit_and_resurrect_session_with_viewport_serialization.snap
+++ b/zellij-integration-tests/tests/snapshots/resurrection__quit_and_resurrect_session_with_viewport_serialization.snap
@@ -2,27 +2,7 @@
source: zellij-integration-tests/tests/resurrection.rs
expression: normalized(&grid_snapshot)
---
- Zellij (test)  Tab #1 
-┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
-│ │
-│VIEWPORT_CONTENT_TO_RESTORE │
-│ │
-│█ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
+ Zellij (test)  Tab #1  + 
+VIEWPORT_CONTENT_TO_RESTORE
+█
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
diff --git a/zellij-integration-tests/tests/snapshots/scroll__half_page_scroll_down.snap b/zellij-integration-tests/tests/snapshots/scroll__half_page_scroll_down.snap
index 2ce2743f..e51bd7c6 100644
--- a/zellij-integration-tests/tests/snapshots/scroll__half_page_scroll_down.snap
+++ b/zellij-integration-tests/tests/snapshots/scroll__half_page_scroll_down.snap
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/scroll.rs
expression: normalized(&grid_snapshot)
---
- Zellij (test)  Tab #1 
-┌ Pane #1 ────────────────────────────────────────────────────────────────────────────────────────────── SCROLL: 0/21 ┐
-│line22 │
-│line23 │
-│line24 │
-│line25 │
-│line26 │
-│line27 │
-│line28 │
-│line29 │
-│line30 │
-│line31 │
-│line32 │
-│line33 │
-│line34 │
-│line35 │
-│line36 │
-│line37 │
-│line38 │
-│line39 │
-│line40 │
-│█ │
-└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
- Ctrl + <s> SEARCH   s  Search  ↓↑  Scroll  PgDn|PgUp  Scroll  d|u  Scroll  e  Edit  ENTER  Select 
+ Zellij (test)  Tab #1  +  [ SCROLL 0/19 ]
+line20
+line21
+line22
+line23
+line24
+line25
+line26
+line27
+line28
+line29
+line30
+line31
+line32
+line33
+line34
+line35
+line36
+line37
+line38
+line39
+line40
+█
+ Ctrl + <s> SEARCH   s  Search  ↓↑  Scroll  PgDn|PgUp  Scroll  d|u  Scroll  e  Edit  ENTER  Select 
diff --git a/zellij-integration-tests/tests/snapshots/scroll__half_page_scroll_up.snap b/zellij-integration-tests/tests/snapshots/scroll__half_page_scroll_up.snap
index 4adb7c17..1b2b0967 100644
--- a/zellij-integration-tests/tests/snapshots/scroll__half_page_scroll_up.snap
+++ b/zellij-integration-tests/tests/snapshots/scroll__half_page_scroll_up.snap
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/scroll.rs
expression: normalized(&grid_snapshot)
---
- Zellij (test)  Tab #1 
-┌ Pane #1 ───────────────────────────────────────────────────────────────────────────────────────────── SCROLL: 10/21 ┐
-│line12 │
-│line13 │
-│line14 │
-│line15 │
-│line16 │
-│line17 │
-│line18 │
-│line19 │
-│line20 │
-│line21 │
-│line22 │
-│line23 │
-│line24 │
-│line25 │
-│line26 │
-│line27 │
-│line28 │
-│line29 │
-│line30 │
-│█ine31 │
-└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
- Ctrl + <s> SEARCH   s  Search  ↓↑  Scroll  PgDn|PgUp  Scroll  d|u  Scroll  e  Edit  ENTER  Select 
+ Zellij (test)  Tab #1  +  [ SCROLL 10/19 ]
+line10
+line11
+line12
+line13
+line14
+line15
+line16
+line17
+line18
+line19
+line20
+line21
+line22
+line23
+line24
+line25
+line26
+line27
+line28
+line29
+line30
+█ine31
+ Ctrl + <s> SEARCH   s  Search  ↓↑  Scroll  PgDn|PgUp  Scroll  d|u  Scroll  e  Edit  ENTER  Select 
diff --git a/zellij-integration-tests/tests/snapshots/scroll__page_scroll_down.snap b/zellij-integration-tests/tests/snapshots/scroll__page_scroll_down.snap
index 6b3cec51..e51bd7c6 100644
--- a/zellij-integration-tests/tests/snapshots/scroll__page_scroll_down.snap
+++ b/zellij-integration-tests/tests/snapshots/scroll__page_scroll_down.snap
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/scroll.rs
expression: normalized(&grid_snapshot)
---
- Zellij (test)  Tab #1 
-┌ Pane #1 ────────────────────────────────────────────────────────────────────────────────────────────── SCROLL: 1/21 ┐
-│line21 │
-│line22 │
-│line23 │
-│line24 │
-│line25 │
-│line26 │
-│line27 │
-│line28 │
-│line29 │
-│line30 │
-│line31 │
-│line32 │
-│line33 │
-│line34 │
-│line35 │
-│line36 │
-│line37 │
-│line38 │
-│line39 │
-│█ine40 │
-└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
- Ctrl + <s> SEARCH   s  Search  ↓↑  Scroll  PgDn|PgUp  Scroll  d|u  Scroll  e  Edit  ENTER  Select 
+ Zellij (test)  Tab #1  +  [ SCROLL 0/19 ]
+line20
+line21
+line22
+line23
+line24
+line25
+line26
+line27
+line28
+line29
+line30
+line31
+line32
+line33
+line34
+line35
+line36
+line37
+line38
+line39
+line40
+█
+ Ctrl + <s> SEARCH   s  Search  ↓↑  Scroll  PgDn|PgUp  Scroll  d|u  Scroll  e  Edit  ENTER  Select 
diff --git a/zellij-integration-tests/tests/snapshots/scroll__page_scroll_up.snap b/zellij-integration-tests/tests/snapshots/scroll__page_scroll_up.snap
index d742f0d3..54718511 100644
--- a/zellij-integration-tests/tests/snapshots/scroll__page_scroll_up.snap
+++ b/zellij-integration-tests/tests/snapshots/scroll__page_scroll_up.snap
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/scroll.rs
expression: normalized(&grid_snapshot)
---
- Zellij (test)  Tab #1 
-┌ Pane #1 ───────────────────────────────────────────────────────────────────────────────────────────── SCROLL: 21/21 ┐
-│$ line01 │
-│line02 │
-│line03 │
-│line04 │
-│line05 │
-│line06 │
-│line07 │
-│line08 │
-│line09 │
-│line10 │
-│line11 │
-│line12 │
-│line13 │
-│line14 │
-│line15 │
-│line16 │
-│line17 │
-│line18 │
-│line19 │
-│█ine20 │
-└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
- Ctrl + <s> SEARCH   s  Search  ↓↑  Scroll  PgDn|PgUp  Scroll  d|u  Scroll  e  Edit  ENTER  Select 
+ Zellij (test)  Tab #1  +  [ SCROLL 19/19 ]
+$ line01
+line02
+line03
+line04
+line05
+line06
+line07
+line08
+line09
+line10
+line11
+line12
+line13
+line14
+line15
+line16
+line17
+line18
+line19
+line20
+line21
+█ine22
+ Ctrl + <s> SEARCH   s  Search  ↓↑  Scroll  PgDn|PgUp  Scroll  d|u  Scroll  e  Edit  ENTER  Select 
diff --git a/zellij-integration-tests/tests/snapshots/scroll__scroll_down_one_line.snap b/zellij-integration-tests/tests/snapshots/scroll__scroll_down_one_line.snap
index 6b3cec51..873db2ac 100644
--- a/zellij-integration-tests/tests/snapshots/scroll__scroll_down_one_line.snap
+++ b/zellij-integration-tests/tests/snapshots/scroll__scroll_down_one_line.snap
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/scroll.rs
expression: normalized(&grid_snapshot)
---
- Zellij (test)  Tab #1 
-┌ Pane #1 ────────────────────────────────────────────────────────────────────────────────────────────── SCROLL: 1/21 ┐
-│line21 │
-│line22 │
-│line23 │
-│line24 │
-│line25 │
-│line26 │
-│line27 │
-│line28 │
-│line29 │
-│line30 │
-│line31 │
-│line32 │
-│line33 │
-│line34 │
-│line35 │
-│line36 │
-│line37 │
-│line38 │
-│line39 │
-│█ine40 │
-└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
- Ctrl + <s> SEARCH   s  Search  ↓↑  Scroll  PgDn|PgUp  Scroll  d|u  Scroll  e  Edit  ENTER  Select 
+ Zellij (test)  Tab #1  +  [ SCROLL 1/19 ]
+line19
+line20
+line21
+line22
+line23
+line24
+line25
+line26
+line27
+line28
+line29
+line30
+line31
+line32
+line33
+line34
+line35
+line36
+line37
+line38
+line39
+█ine40
+ Ctrl + <s> SEARCH   s  Search  ↓↑  Scroll  PgDn|PgUp  Scroll  d|u  Scroll  e  Edit  ENTER  Select 
diff --git a/zellij-integration-tests/tests/snapshots/scroll__scroll_to_bottom.snap b/zellij-integration-tests/tests/snapshots/scroll__scroll_to_bottom.snap
index 4e486cc2..50481925 100644
--- a/zellij-integration-tests/tests/snapshots/scroll__scroll_to_bottom.snap
+++ b/zellij-integration-tests/tests/snapshots/scroll__scroll_to_bottom.snap
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/scroll.rs
expression: normalized(&grid_snapshot)
---
- Zellij (test)  Tab #1 
-┌ Pane #1 ────────────────────────────────────────────────────────────────────────────────────────────── SCROLL: 0/21 ┐
-│line22 │
-│line23 │
-│line24 │
-│line25 │
-│line26 │
-│line27 │
-│line28 │
-│line29 │
-│line30 │
-│line31 │
-│line32 │
-│line33 │
-│line34 │
-│line35 │
-│line36 │
-│line37 │
-│line38 │
-│line39 │
-│line40 │
-│█ │
-└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
+ Zellij (test)  Tab #1  +  [ SCROLL 0/19 ]
+line20
+line21
+line22
+line23
+line24
+line25
+line26
+line27
+line28
+line29
+line30
+line31
+line32
+line33
+line34
+line35
+line36
+line37
+line38
+line39
+line40
+█
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
diff --git a/zellij-integration-tests/tests/snapshots/search__search_down_to_next_match.snap b/zellij-integration-tests/tests/snapshots/search__search_down_to_next_match.snap
index 7f89ceaa..af4123ad 100644
--- a/zellij-integration-tests/tests/snapshots/search__search_down_to_next_match.snap
+++ b/zellij-integration-tests/tests/snapshots/search__search_down_to_next_match.snap
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/search.rs
expression: normalized(&grid_snapshot)
---
- Zellij (test)  Tab #1 
-┌ SEARCHING: NEEDLE ──────────────────────────────────────────────────────────────────────────────────── SCROLL: 6/21 ┐
-│line16 │
-│line17 │
-│line18 │
-│line19 │
-│line20 │
-│line21 │
-│line22 │
-│line23 │
-│line24 │
-│line25 │
-│line26 │
-│line27 │
-│line28 │
-│line29 │
-│line30 │
-│line31 │
-│line32 │
-│line33 │
-│line34 │
-│█ine35 NEEDLE lower │
-└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
- SEARCHING   ↓↑  Scroll  PgDn|PgUp  Scroll  d|u  Scroll  n  Down  p  Up  c  Case  w  Wrap  o  Whole 
+ Zellij (test)  Tab #1  +  [ SCROLL 15/19 ]
+line14
+line15
+line16
+line17
+line18
+line19
+line20
+line21
+line22
+line23
+line24
+line25
+line26
+line27
+line28
+line29
+line30
+line31
+line32
+line33
+line34
+█ine35 NEEDLE lower
+ SEARCHING   ↓↑  Scroll  PgDn|PgUp  Scroll  d|u  Scroll  n  Down  p  Up  c  Case  w  Wrap  o  Whole 
diff --git a/zellij-integration-tests/tests/snapshots/search__search_input_jumps_to_a_match.snap b/zellij-integration-tests/tests/snapshots/search__search_input_jumps_to_a_match.snap
index d3c4a72d..bdceee74 100644
--- a/zellij-integration-tests/tests/snapshots/search__search_input_jumps_to_a_match.snap
+++ b/zellij-integration-tests/tests/snapshots/search__search_input_jumps_to_a_match.snap
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/search.rs
expression: normalized(&grid_snapshot)
---
- Zellij (test)  Tab #1 
-┌ SEARCHING: NEEDLE ─────────────────────────────────────────────────────────────────────────────────── SCROLL: 17/21 ┐
-│line05 NEEDLE │
-│line06 │
-│line07 │
-│line08 │
-│line09 │
-│line10 │
-│line11 │
-│line12 │
-│line13 │
-│line14 │
-│line15 │
-│line16 │
-│line17 │
-│line18 │
-│line19 │
-│line20 │
-│line21 │
-│line22 │
-│line23 │
-│█ine24 │
-└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
- ENTERING SEARCH TERM   ENTER  When done 
+ Zellij (test)  Tab #1  +  [ SCROLL 0/19 ]
+line05 NEEDLE
+line06
+line07
+line08
+line09
+line10
+line11
+line12
+line13
+line14
+line15
+line16
+line17
+line18
+line19
+line20
+line21
+line22
+line23
+line24
+line25
+█ine26
+ ENTERING SEARCH TERM   ENTER  When done 
diff --git a/zellij-integration-tests/tests/snapshots/search__search_toggle_case_sensitivity.snap b/zellij-integration-tests/tests/snapshots/search__search_toggle_case_sensitivity.snap
index 8fab3747..b1642d5b 100644
--- a/zellij-integration-tests/tests/snapshots/search__search_toggle_case_sensitivity.snap
+++ b/zellij-integration-tests/tests/snapshots/search__search_toggle_case_sensitivity.snap
@@ -2,9 +2,9 @@
source: zellij-integration-tests/tests/search.rs
expression: normalized(&grid_snapshot)
---
- Zellij (test)  Tab #1 
+ Zellij (test)  Tab #1  + 
┌ SEARCHING: NEEDLE [c] ───────────────────────────────────────────────────────────────────────────────────────────────┐
-│$ NEEDLE on screen │
+│NEEDLE on screen │
│█ │
│ │
│ │
@@ -25,4 +25,4 @@ expression: normalized(&grid_snapshot)
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
- SEARCHING   ↓↑  Scroll  PgDn|PgUp  Scroll  d|u  Scroll  n  Down  p  Up  c  Case  w  Wrap  o  Whole 
+ SEARCHING   ↓↑  Scroll  PgDn|PgUp  Scroll  d|u  Scroll  n  Down  p  Up  c  Case  w  Wrap  o  Whole 
diff --git a/zellij-integration-tests/tests/snapshots/search__search_toggle_whole_word.snap b/zellij-integration-tests/tests/snapshots/search__search_toggle_whole_word.snap
index a611c034..9011cc91 100644
--- a/zellij-integration-tests/tests/snapshots/search__search_toggle_whole_word.snap
+++ b/zellij-integration-tests/tests/snapshots/search__search_toggle_whole_word.snap
@@ -2,9 +2,9 @@
source: zellij-integration-tests/tests/search.rs
expression: normalized(&grid_snapshot)
---
- Zellij (test)  Tab #1 
+ Zellij (test)  Tab #1  + 
┌ SEARCHING: NEEDLE [o] ───────────────────────────────────────────────────────────────────────────────────────────────┐
-│$ NEEDLE on screen │
+│NEEDLE on screen │
│█ │
│ │
│ │
@@ -25,4 +25,4 @@ expression: normalized(&grid_snapshot)
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
- SEARCHING   ↓↑  Scroll  PgDn|PgUp  Scroll  d|u  Scroll  n  Down  p  Up  c  Case  w  Wrap  o  Whole 
+ SEARCHING   ↓↑  Scroll  PgDn|PgUp  Scroll  d|u  Scroll  n  Down  p  Up  c  Case  w  Wrap  o  Whole 
diff --git a/zellij-integration-tests/tests/snapshots/search__search_toggle_wrap.snap b/zellij-integration-tests/tests/snapshots/search__search_toggle_wrap.snap
index 42903ace..5d52b7ed 100644
--- a/zellij-integration-tests/tests/snapshots/search__search_toggle_wrap.snap
+++ b/zellij-integration-tests/tests/snapshots/search__search_toggle_wrap.snap
@@ -2,9 +2,9 @@
source: zellij-integration-tests/tests/search.rs
expression: normalized(&grid_snapshot)
---
- Zellij (test)  Tab #1 
+ Zellij (test)  Tab #1  + 
┌ SEARCHING: NEEDLE [w] ───────────────────────────────────────────────────────────────────────────────────────────────┐
-│$ NEEDLE on screen │
+│NEEDLE on screen │
│█ │
│ │
│ │
@@ -25,4 +25,4 @@ expression: normalized(&grid_snapshot)
│ │
│ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
- SEARCHING   ↓↑  Scroll  PgDn|PgUp  Scroll  d|u  Scroll  n  Down  p  Up  c  Case  w  Wrap  o  Whole 
+ SEARCHING   ↓↑  Scroll  PgDn|PgUp  Scroll  d|u  Scroll  n  Down  p  Up  c  Case  w  Wrap  o  Whole 
diff --git a/zellij-integration-tests/tests/snapshots/search__search_up_to_previous_match.snap b/zellij-integration-tests/tests/snapshots/search__search_up_to_previous_match.snap
index c113cdad..b723f787 100644
--- a/zellij-integration-tests/tests/snapshots/search__search_up_to_previous_match.snap
+++ b/zellij-integration-tests/tests/snapshots/search__search_up_to_previous_match.snap
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/search.rs
expression: normalized(&grid_snapshot)
---
- Zellij (test)  Tab #1 
-┌ SEARCHING: NEEDLE ─────────────────────────────────────────────────────────────────────────────────── SCROLL: 17/21 ┐
-│line05 NEEDLE upper │
-│line06 │
-│line07 │
-│line08 │
-│line09 │
-│line10 │
-│line11 │
-│line12 │
-│line13 │
-│line14 │
-│line15 │
-│line16 │
-│line17 │
-│line18 │
-│line19 │
-│line20 │
-│line21 │
-│line22 │
-│line23 │
-│█ine24 │
-└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
- SEARCHING   ↓↑  Scroll  PgDn|PgUp  Scroll  d|u  Scroll  n  Down  p  Up  c  Case  w  Wrap  o  Whole 
+ Zellij (test)  Tab #1  +  [ SCROLL 0/19 ]
+line05 NEEDLE upper
+line06
+line07
+line08
+line09
+line10
+line11
+line12
+line13
+line14
+line15
+line16
+line17
+line18
+line19
+line20
+line21
+line22
+line23
+line24
+line25
+█ine26
+ SEARCHING   ↓↑  Scroll  PgDn|PgUp  Scroll  d|u  Scroll  n  Down  p  Up  c  Case  w  Wrap  o  Whole 
diff --git a/zellij-integration-tests/tests/snapshots/tabs__break_pane_into_new_tab.snap b/zellij-integration-tests/tests/snapshots/tabs__break_pane_into_new_tab.snap
index 83ddbab4..91c4eebe 100644
--- a/zellij-integration-tests/tests/snapshots/tabs__break_pane_into_new_tab.snap
+++ b/zellij-integration-tests/tests/snapshots/tabs__break_pane_into_new_tab.snap
@@ -2,27 +2,6 @@
source: zellij-integration-tests/tests/tabs.rs
expression: normalized(&grid_snapshot)
---
- Zellij (test)  Tab #1  Tab #2 
-┌ Pane #2 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
-│$ █ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
+ Zellij (test)  Tab #1  Tab #2  + 
+$ █
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
diff --git a/zellij-integration-tests/tests/snapshots/tabs__break_pane_to_the_left.snap b/zellij-integration-tests/tests/snapshots/tabs__break_pane_to_the_left.snap
index f64e72ee..2b03a0f3 100644
--- a/zellij-integration-tests/tests/snapshots/tabs__break_pane_to_the_left.snap
+++ b/zellij-integration-tests/tests/snapshots/tabs__break_pane_to_the_left.snap
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/tabs.rs
expression: normalized(&grid_snapshot)
---
- Zellij (test)  Tab #1 
-┌ Pane #1 ─────────────────────────────────────────────────┐┌ Pane #1 ─────────────────────────────────────────────────┐
-│$ alpha ││$ beta█ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
+ Zellij (test)  Tab #1  + 
+ Pane #1 │ Pane #1
+$ alpha │$ beta█
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
diff --git a/zellij-integration-tests/tests/snapshots/tabs__break_pane_to_the_right.snap b/zellij-integration-tests/tests/snapshots/tabs__break_pane_to_the_right.snap
index db5fb026..7235b444 100644
--- a/zellij-integration-tests/tests/snapshots/tabs__break_pane_to_the_right.snap
+++ b/zellij-integration-tests/tests/snapshots/tabs__break_pane_to_the_right.snap
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/tabs.rs
expression: normalized(&grid_snapshot)
---
- Zellij (test)  Tab #1  Tab #2 
-┌ Pane #1 ─────────────────────────────────────────────────┐┌ Pane #2 ─────────────────────────────────────────────────┐
-│$ gamma ││$ beta█ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
+ Zellij (test)  Tab #1  Tab #2  + 
+ Pane #1 │ Pane #2
+$ gamma │$ beta█
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
diff --git a/zellij-integration-tests/tests/snapshots/tabs__close_tab.snap b/zellij-integration-tests/tests/snapshots/tabs__close_tab.snap
index f1544d42..5ffc3a99 100644
--- a/zellij-integration-tests/tests/snapshots/tabs__close_tab.snap
+++ b/zellij-integration-tests/tests/snapshots/tabs__close_tab.snap
@@ -2,27 +2,6 @@
source: zellij-integration-tests/tests/tabs.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  ...
diff --git a/zellij-integration-tests/tests/snapshots/tabs__go_to_next_tab.snap b/zellij-integration-tests/tests/snapshots/tabs__go_to_next_tab.snap
index 9441a9b1..403e5945 100644
--- a/zellij-integration-tests/tests/snapshots/tabs__go_to_next_tab.snap
+++ b/zellij-integration-tests/tests/snapshots/tabs__go_to_next_tab.snap
@@ -2,27 +2,6 @@
source: zellij-integration-tests/tests/tabs.rs
expression: normalized(&grid_snapshot)
---
- Zellij (test)  Tab #1  Tab #2 
-┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
-│$ twotwo█ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
+ Zellij (test)  Tab #1  Tab #2  + 
+$ twotwo█
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
diff --git a/zellij-integration-tests/tests/snapshots/tabs__go_to_previous_tab.snap b/zellij-integration-tests/tests/snapshots/tabs__go_to_previous_tab.snap
index e60935a0..47ff0263 100644
--- a/zellij-integration-tests/tests/snapshots/tabs__go_to_previous_tab.snap
+++ b/zellij-integration-tests/tests/snapshots/tabs__go_to_previous_tab.snap
@@ -2,27 +2,6 @@
source: zellij-integration-tests/tests/tabs.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  ...
diff --git a/zellij-integration-tests/tests/snapshots/tabs__go_to_tab_by_number.snap b/zellij-integration-tests/tests/snapshots/tabs__go_to_tab_by_number.snap
index e60935a0..47ff0263 100644
--- a/zellij-integration-tests/tests/snapshots/tabs__go_to_tab_by_number.snap
+++ b/zellij-integration-tests/tests/snapshots/tabs__go_to_tab_by_number.snap
@@ -2,27 +2,6 @@
source: zellij-integration-tests/tests/tabs.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  ...
diff --git a/zellij-integration-tests/tests/snapshots/tabs__move_tab_to_left.snap b/zellij-integration-tests/tests/snapshots/tabs__move_tab_to_left.snap
index 5afe4d28..d6207d33 100644
--- a/zellij-integration-tests/tests/snapshots/tabs__move_tab_to_left.snap
+++ b/zellij-integration-tests/tests/snapshots/tabs__move_tab_to_left.snap
@@ -2,27 +2,6 @@
source: zellij-integration-tests/tests/tabs.rs
expression: normalized(&grid_snapshot)
---
- Zellij (test)  Tab #1  Tab #3  Tab #2 
-┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
-│$ █ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
+ Zellij (test)  Tab #1  Tab #3  Tab #2  + 
+$ █
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
diff --git a/zellij-integration-tests/tests/snapshots/tabs__move_tab_to_left_until_it_wraps_around.snap b/zellij-integration-tests/tests/snapshots/tabs__move_tab_to_left_until_it_wraps_around.snap
index d045b135..95e5f3f3 100644
--- a/zellij-integration-tests/tests/snapshots/tabs__move_tab_to_left_until_it_wraps_around.snap
+++ b/zellij-integration-tests/tests/snapshots/tabs__move_tab_to_left_until_it_wraps_around.snap
@@ -2,27 +2,6 @@
source: zellij-integration-tests/tests/tabs.rs
expression: normalized(&grid_snapshot)
---
- Zellij (test)  Tab #1  Tab #2  Tab #3 
-┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
-│$ █ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
+ Zellij (test)  Tab #1  Tab #2  Tab #3  + 
+$ █
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
diff --git a/zellij-integration-tests/tests/snapshots/tabs__move_tab_to_right.snap b/zellij-integration-tests/tests/snapshots/tabs__move_tab_to_right.snap
index 5afe4d28..d6207d33 100644
--- a/zellij-integration-tests/tests/snapshots/tabs__move_tab_to_right.snap
+++ b/zellij-integration-tests/tests/snapshots/tabs__move_tab_to_right.snap
@@ -2,27 +2,6 @@
source: zellij-integration-tests/tests/tabs.rs
expression: normalized(&grid_snapshot)
---
- Zellij (test)  Tab #1  Tab #3  Tab #2 
-┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
-│$ █ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
+ Zellij (test)  Tab #1  Tab #3  Tab #2  + 
+$ █
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
diff --git a/zellij-integration-tests/tests/snapshots/tabs__move_tab_to_right_until_it_wraps_around.snap b/zellij-integration-tests/tests/snapshots/tabs__move_tab_to_right_until_it_wraps_around.snap
index 2b4f6227..f2a22412 100644
--- a/zellij-integration-tests/tests/snapshots/tabs__move_tab_to_right_until_it_wraps_around.snap
+++ b/zellij-integration-tests/tests/snapshots/tabs__move_tab_to_right_until_it_wraps_around.snap
@@ -2,27 +2,6 @@
source: zellij-integration-tests/tests/tabs.rs
expression: normalized(&grid_snapshot)
---
- Zellij (test)  Tab #3  Tab #1  Tab #2 
-┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
-│$ █ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
+ Zellij (test)  Tab #3  Tab #1  Tab #2  + 
+$ █
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
diff --git a/zellij-integration-tests/tests/snapshots/tabs__open_new_tab.snap b/zellij-integration-tests/tests/snapshots/tabs__open_new_tab.snap
index da0f2839..91c4eebe 100644
--- a/zellij-integration-tests/tests/snapshots/tabs__open_new_tab.snap
+++ b/zellij-integration-tests/tests/snapshots/tabs__open_new_tab.snap
@@ -1,28 +1,7 @@
---
source: zellij-integration-tests/tests/tabs.rs
-expression: normalized(&zellij.snapshot())
+expression: normalized(&grid_snapshot)
---
- Zellij (test)  Tab #1  Tab #2 
-┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
-│$ █ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-│ │
-└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
+ Zellij (test)  Tab #1  Tab #2  + 
+$ █
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
diff --git a/zellij-integration-tests/tests/snapshots/tabs__toggle_active_sync_tab.snap b/zellij-integration-tests/tests/snapshots/tabs__toggle_active_sync_tab.snap
index f34fad73..bd955b1a 100644
--- a/zellij-integration-tests/tests/snapshots/tabs__toggle_active_sync_tab.snap
+++ b/zellij-integration-tests/tests/snapshots/tabs__toggle_active_sync_tab.snap
@@ -2,27 +2,27 @@
source: zellij-integration-tests/tests/tabs.rs
expression: normalized(&grid_snapshot)
---
- Zellij (test)  Tab #1 (SYNC) 
-┌ Pane #1 ─────────────────────────────────────────────────┐┌ Pane #2 ─────────────────────────────────────────────────┐
-│$ ││$ █ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-│ ││ │
-└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
+ Zellij (test)  Tab #1 (SYNC)  + 
+ Pane #1 │ Pane #2
+$ │$ █
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  ...
diff --git a/zellij-integration-tests/tests/snapshots/tabs__toggle_tab_returns_to_last_used.snap b/zellij-integration-tests/tests/snapshots/tabs__toggle_tab_returns_to_last_used.snap
index e60935a0..47ff0263 100644
--- a/zellij-integration-tests/tests/snapshots/tabs__toggle_tab_returns_to_last_used.snap
+++ b/zellij-integration-tests/tests/snapshots/tabs__toggle_tab_returns_to_last_used.snap
@@ -2,27 +2,6 @@
source: zellij-integration-tests/tests/tabs.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  ...
diff --git a/zellij-integration-tests/tests/snapshots/tabs__undo_rename_tab.snap b/zellij-integration-tests/tests/snapshots/tabs__undo_rename_tab.snap
index f1544d42..5ffc3a99 100644
--- a/zellij-integration-tests/tests/snapshots/tabs__undo_rename_tab.snap
+++ b/zellij-integration-tests/tests/snapshots/tabs__undo_rename_tab.snap
@@ -2,27 +2,6 @@
source: zellij-integration-tests/tests/tabs.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  ...
diff --git a/zellij-integration-tests/tests/snapshots/title_frame_mouse__mouse_click_floating_ribbon_in_status_bar_opens_a_floating_pane.snap b/zellij-integration-tests/tests/snapshots/title_frame_mouse__mouse_click_floating_ribbon_in_status_bar_opens_a_floating_pane.snap
new file mode 100644
index 00000000..ef47b9b9
--- /dev/null
+++ b/zellij-integration-tests/tests/snapshots/title_frame_mouse__mouse_click_floating_ribbon_in_status_bar_opens_a_floating_pane.snap
@@ -0,0 +1,18 @@
+---
+source: zellij-integration-tests/tests/title_frame_mouse.rs
+expression: normalized(&grid_snapshot)
+---
+ Zellij (test)  Tab #1  + 
+$
+ ┌ Pane #2 ─────────────────────────────────────────────────────────────────────────── PIN [ ] ┐
+ │$ █ │
+ │ │
+ │ │
+ │ │
+ │ │
+ │ │
+ │ │
+ │ │
+ │ │
+ └─────────────────────────────────────────────────────────────────────────────────────────────┘
+ Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  Alt +  <n> New Pane  <f> Floating 
diff --git a/zellij-integration-tests/tests/snapshots/title_frame_mouse__mouse_click_new_pane_in_status_bar_opens_a_new_pane.snap b/zellij-integration-tests/tests/snapshots/title_frame_mouse__mouse_click_new_pane_in_status_bar_opens_a_new_pane.snap
new file mode 100644
index 00000000..7a7db894
--- /dev/null
+++ b/zellij-integration-tests/tests/snapshots/title_frame_mouse__mouse_click_new_pane_in_status_bar_opens_a_new_pane.snap
@@ -0,0 +1,28 @@
+---
+source: zellij-integration-tests/tests/title_frame_mouse.rs
+expression: normalized(&grid_snapshot)
+---
+ Zellij (test)  Tab #1  + 
+ Pane #1 │ Pane #2
+$ │opened from the status bar█
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  Alt +  <n> New Pane  <←↓↑→> Change Focus  <+-> Resize  <f> Floating 
diff --git a/zellij-integration-tests/tests/snapshots/title_frame_mouse__mouse_click_new_pane_in_status_bar_twice_opens_two_panes.snap b/zellij-integration-tests/tests/snapshots/title_frame_mouse__mouse_click_new_pane_in_status_bar_twice_opens_two_panes.snap
new file mode 100644
index 00000000..e3fbdb82
--- /dev/null
+++ b/zellij-integration-tests/tests/snapshots/title_frame_mouse__mouse_click_new_pane_in_status_bar_twice_opens_two_panes.snap
@@ -0,0 +1,28 @@
+---
+source: zellij-integration-tests/tests/title_frame_mouse.rs
+expression: normalized(&grid_snapshot)
+---
+ Zellij (test)  Tab #1  + 
+ Pane #1 │ Pane #2
+$ │first pane from the status bar
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ ├───────────────────────────────────────────────────────────────────────────────────────────────
+ │ Pane #3
+ │second pane from the status bar█
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ │
+ Ctrl + <g> LOCK  <p> PANE  <t> TAB  <n> RESIZE  <h> MOVE  <s> SEARCH  <o> SESSION  <q> QUIT  Alt +  <n> New Pane  <←↓↑→> Change Focus  <+-> Resize  <f> Floating 
diff --git a/zellij-integration-tests/tests/snapshots/title_frame_mouse__mouse_click_new_tab_button_in_tab_bar_opens_a_new_tab.snap b/zellij-integration-tests/tests/snapshots/title_frame_mouse__mouse_click_new_tab_button_in_tab_bar_opens_a_new_tab.snap
new file mode 100644
index 00000000..f05439e3
--- /dev/null
+++ b/zellij-integration-tests/tests/snapshots/title_frame_mouse__mouse_click_new_tab_button_in_tab_bar_opens_a_new_tab.snap
@@ -0,0 +1,7 @@
+---
+source: zellij-integration-tests/tests/title_frame_mouse.rs
+expression: normalized(&grid_snapshot)
+---
+ Zellij (test)  Tab #1  Tab #2  + 
+$ █
+
diff --git a/zellij-integration-tests/tests/tabs.rs b/zellij-integration-tests/tests/tabs.rs
index 7ba3194a..cd37e251 100644
--- a/zellij-integration-tests/tests/tabs.rs
+++ b/zellij-integration-tests/tests/tabs.rs
@@ -26,7 +26,7 @@ fn open_new_tab_and_wait_for_prompt(zellij: &TestSession, expected_tab: &str) ->
zellij.wait_until("new tab opened with prompt", move |grid_snapshot| {
grid_snapshot.status_bar_appears()
&& grid_snapshot.contains(&expected_tab)
- && grid_snapshot.cursor_is_at(col(3).row(2))
+ && grid_snapshot.cursor_is_at(col(2).row(1))
});
terminal
}
@@ -201,9 +201,8 @@ fn break_pane_into_new_tab() {
let grid_snapshot = zellij.wait_until("focused pane broken into a new tab", |grid_snapshot| {
grid_snapshot.status_bar_appears()
&& grid_snapshot.contains("Tab #2")
- && grid_snapshot.contains("Pane #2")
&& !grid_snapshot.contains("Pane #1")
- && 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();
@@ -273,7 +272,7 @@ fn open_new_tab() {
let grid_snapshot = zellij.wait_until("second tab steady in normal mode", |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(&grid_snapshot));
zellij.quit();
@@ -294,7 +293,7 @@ fn close_tab() {
grid_snapshot.status_bar_appears()
&& grid_snapshot.contains("Tab #1")
&& !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(&grid_snapshot));
diff --git a/zellij-integration-tests/tests/title_frame_hints.rs b/zellij-integration-tests/tests/title_frame_hints.rs
new file mode 100644
index 00000000..5f841486
--- /dev/null
+++ b/zellij-integration-tests/tests/title_frame_hints.rs
@@ -0,0 +1,233 @@
+#![cfg(unix)]
+
+use zellij_integration_tests::{
+ claim_first_terminal_and_wait_for_prompt, keys, split_right_and_wait_for_prompt, FakePtyHandle,
+ Size, TestRunner, TestSession, PROMPT,
+};
+
+const FOCUSED_PANE_COLUMN: usize = 90;
+const ALTERNATE_FOCUSED_PANE_COLUMN: usize = 100;
+const OTHER_PANE_COLUMN: usize = 10;
+const HOVER_LINE: usize = 12;
+
+fn start_zellij_with_mouse() -> TestSession {
+ TestRunner::new(Size {
+ cols: 120,
+ rows: 24,
+ })
+ .with_config("mouse_mode true\nadvanced_mouse_actions true\nmouse_hover_effects true")
+ .start()
+}
+
+fn start_full_frame_zellij_with_mouse(cols: usize) -> TestSession {
+ TestRunner::new(Size { cols, rows: 24 })
+ .with_config(
+ "pane_frame_style \"full\"\nmouse_mode true\nadvanced_mouse_actions true\nmouse_hover_effects true",
+ )
+ .start()
+}
+
+fn sgr_motion(column: usize, line: usize) -> Vec<u8> {
+ format!("\u{1b}[<35;{};{}M", column, line).into_bytes()
+}
+
+fn two_pane_session_with_handles() -> (TestSession, FakePtyHandle, FakePtyHandle) {
+ let zellij = start_zellij_with_mouse();
+ let left_terminal = claim_first_terminal_and_wait_for_prompt(&zellij);
+ let right_terminal = split_right_and_wait_for_prompt(&zellij);
+ zellij.wait_until("two panes settled in locked base mode", |grid_snapshot| {
+ grid_snapshot.status_bar_appears() && grid_snapshot.tab_bar_appears()
+ });
+ (zellij, left_terminal, right_terminal)
+}
+
+fn two_pane_session() -> TestSession {
+ two_pane_session_with_handles().0
+}
+
+fn full_frame_two_pane_session(cols: usize) -> TestSession {
+ let zellij = start_full_frame_zellij_with_mouse(cols);
+ let left_terminal = zellij.expect_pty_spawn();
+ left_terminal.output(PROMPT);
+ zellij.wait_until("first full-frame pane rendered", |grid_snapshot| {
+ grid_snapshot.status_bar_appears()
+ && grid_snapshot.contains("┌")
+ && grid_snapshot.contains("$ ")
+ });
+ zellij.send_stdin(&keys::ctrl('p'));
+ zellij.send_stdin(&keys::key('r'));
+ let right_terminal = zellij.expect_pty_spawn();
+ right_terminal.output(PROMPT);
+ zellij.wait_until("two full-frame panes rendered", |grid_snapshot| {
+ grid_snapshot.contains("Pane #1")
+ && grid_snapshot.contains("Pane #2")
+ && grid_snapshot.status_bar_appears()
+ });
+ zellij
+}
+
+#[test]
+fn hovering_a_pane_shows_a_hint_on_the_status_bar() {
+ let mut zellij = two_pane_session();
+
+ zellij.send_stdin(&sgr_motion(FOCUSED_PANE_COLUMN, HOVER_LINE));
+ zellij.wait_until(
+ "resize hint shown when hovering the focused pane",
+ |grid_snapshot| grid_snapshot.contains("resize"),
+ );
+
+ zellij.send_stdin(&sgr_motion(OTHER_PANE_COLUMN, HOVER_LINE));
+ zellij.wait_until(
+ "group hint shown when hovering the other pane",
+ |grid_snapshot| grid_snapshot.contains("group"),
+ );
+
+ zellij.quit();
+}
+
+#[test]
+fn any_input_dismisses_the_hint() {
+ let mut zellij = two_pane_session();
+
+ zellij.send_stdin(&sgr_motion(FOCUSED_PANE_COLUMN, HOVER_LINE));
+ zellij.wait_until("resize hint shown", |grid_snapshot| {
+ grid_snapshot.contains("resize")
+ });
+
+ zellij.send_stdin(b"x");
+ zellij.wait_until("hint cleared by input", |grid_snapshot| {
+ !grid_snapshot.contains("resize") && !grid_snapshot.contains("group")
+ });
+
+ zellij.quit();
+}
+
+#[test]
+fn hint_only_re_fires_when_entering_a_different_pane() {
+ let mut zellij = two_pane_session();
+
+ zellij.send_stdin(&sgr_motion(FOCUSED_PANE_COLUMN, HOVER_LINE));
+ zellij.wait_until("resize hint shown on first entry", |grid_snapshot| {
+ grid_snapshot.contains("resize")
+ });
+
+ zellij.send_stdin(b"x");
+ zellij.wait_until("hint dismissed by input", |grid_snapshot| {
+ !grid_snapshot.contains("resize") && !grid_snapshot.contains("group")
+ });
+
+ zellij.send_stdin(&sgr_motion(ALTERNATE_FOCUSED_PANE_COLUMN, HOVER_LINE));
+ let after_within_pane_motion = zellij.wait_until(
+ "a render settles after within-pane motion",
+ |grid_snapshot| grid_snapshot.status_bar_appears(),
+ );
+ assert!(
+ !after_within_pane_motion.contains("resize"),
+ "within-pane motion must not re-show the resize hint:\n{}",
+ after_within_pane_motion.text
+ );
+
+ zellij.send_stdin(&sgr_motion(OTHER_PANE_COLUMN, HOVER_LINE));
+ zellij.wait_until(
+ "group hint shown when crossing into the other pane",
+ |grid_snapshot| grid_snapshot.contains("group"),
+ );
+
+ zellij.send_stdin(&sgr_motion(FOCUSED_PANE_COLUMN, HOVER_LINE));
+ zellij.wait_until(
+ "resize hint shown again when crossing back",
+ |grid_snapshot| grid_snapshot.contains("resize"),
+ );
+
+ zellij.quit();
+}
+
+#[test]
+fn full_frame_help_renders_on_the_pane_not_the_status_bar() {
+ let mut zellij = full_frame_two_pane_session(120);
+
+ zellij.send_stdin(&sgr_motion(FOCUSED_PANE_COLUMN, HOVER_LINE));
+ let grid_snapshot = zellij.wait_until("resize help drawn on the pane frame", |grid_snapshot| {
+ grid_snapshot.contains("to resize")
+ });
+ let status_bar = grid_snapshot.lines().last().cloned().unwrap();
+ assert!(
+ !status_bar.contains("resize"),
+ "in full-frame mode the resize help belongs on the pane frame, not the status bar:\n{}",
+ grid_snapshot.text
+ );
+
+ zellij.quit();
+}
+
+#[test]
+fn resize_hint_shortens_when_the_status_bar_narrows() {
+ let mut zellij = two_pane_session();
+
+ zellij.send_stdin(&sgr_motion(FOCUSED_PANE_COLUMN, HOVER_LINE));
+ zellij.wait_until(
+ "full-width status bar shows the long resize hint",
+ |grid_snapshot| grid_snapshot.contains("to resize"),
+ );
+
+ zellij.resize(Size { cols: 46, rows: 24 });
+ zellij.wait_until(
+ "narrowed status bar shortens the resize hint",
+ |grid_snapshot| {
+ grid_snapshot.contains("drag borders") && !grid_snapshot.contains("to resize")
+ },
+ );
+
+ zellij.quit();
+}
+
+#[test]
+fn resize_hint_absent_with_a_single_pane() {
+ let (mut zellij, left_terminal, _right_terminal) = two_pane_session_with_handles();
+ left_terminal.output(b"LEFT_PANE_MARKER");
+ zellij.wait_until("the other pane is populated", |grid_snapshot| {
+ grid_snapshot.contains("LEFT_PANE_MARKER")
+ });
+
+ zellij.send_stdin(&sgr_motion(FOCUSED_PANE_COLUMN, HOVER_LINE));
+ zellij.wait_until("resize hint shown with two panes", |grid_snapshot| {
+ grid_snapshot.contains("resize")
+ });
+
+ left_terminal.exit(Some(0));
+ zellij.wait_until(
+ "resize hint cleared once a single pane remains",
+ |grid_snapshot| {
+ !grid_snapshot.contains("LEFT_PANE_MARKER")
+ && grid_snapshot.status_bar_appears()
+ && !grid_snapshot.contains("resize")
+ },
+ );
+
+ zellij.quit();
+}
+
+#[test]
+fn resize_hint_absent_in_fullscreen() {
+ let (mut zellij, _left_terminal, _right_terminal) = two_pane_session_with_handles();
+
+ zellij.send_stdin(&keys::ctrl('p'));
+ zellij.send_stdin(&keys::key('f'));
+ zellij.wait_until("focused pane entered fullscreen", |grid_snapshot| {
+ grid_snapshot.contains("(FULLSCREEN)") && grid_snapshot.contains("LOCK")
+ });
+
+ zellij.send_stdin(&sgr_motion(FOCUSED_PANE_COLUMN, HOVER_LINE));
+ zellij.send_stdin(&sgr_motion(ALTERNATE_FOCUSED_PANE_COLUMN, HOVER_LINE));
+ let grid_snapshot = zellij
+ .wait_until("fullscreen stays settled after hovering", |grid_snapshot| {
+ grid_snapshot.contains("(FULLSCREEN)") && grid_snapshot.contains("LOCK")
+ });
+ assert!(
+ !grid_snapshot.contains("resize"),
+ "fullscreen must suppress the resize hint:\n{}",
+ grid_snapshot.text
+ );
+
+ zellij.quit();
+}
diff --git a/zellij-integration-tests/tests/title_frame_mouse.rs b/zellij-integration-tests/tests/title_frame_mouse.rs
new file mode 100644
index 00000000..68467068
--- /dev/null
+++ b/zellij-integration-tests/tests/title_frame_mouse.rs
@@ -0,0 +1,158 @@
+#![cfg(unix)]
+
+use insta::assert_snapshot;
+use zellij_integration_tests::{normalized, FakePtyHandle, Size, TestRunner, TestSession};
+
+const PROMPT: &[u8] = b"$ ";
+const STATUS_BAR_TEST_COLS: usize = 190;
+
+fn start_zellij(cols: usize) -> TestSession {
+ TestRunner::new(Size { cols, rows: 24 })
+ .with_config("mouse_mode true\npane_frame_style \"titles\"")
+ .start()
+}
+
+fn sgr_left_click(column: usize, line: usize) -> Vec<u8> {
+ format!(
+ "\u{1b}[<0;{};{}M\u{1b}[<0;{};{}m",
+ column, line, column, line
+ )
+ .into_bytes()
+}
+
+fn display_column_of(line: &str, needle: &str) -> Option<usize> {
+ line.find(needle)
+ .map(|byte_offset| line[..byte_offset].chars().count())
+}
+
+fn claim_first_terminal_and_wait_for_prompt(zellij: &TestSession) -> FakePtyHandle {
+ 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("$ ")
+ });
+ terminal
+}
+
+fn click_new_pane_button_in_status_bar(zellij: &TestSession, pane_output: &[u8]) -> FakePtyHandle {
+ let grid_snapshot =
+ zellij.wait_until("status bar shows the new pane button", |grid_snapshot| {
+ grid_snapshot
+ .lines()
+ .last()
+ .is_some_and(|status_bar| status_bar.contains("New Pane"))
+ });
+ let status_bar = grid_snapshot.lines().last().cloned().unwrap();
+ let new_pane_column = display_column_of(&status_bar, "New Pane")
+ .expect("new pane button is on the status bar")
+ + 1;
+ let status_bar_line = grid_snapshot.lines().len();
+
+ zellij.send_stdin(&sgr_left_click(new_pane_column, status_bar_line));
+ let new_terminal = zellij.expect_pty_spawn();
+ new_terminal.output(pane_output);
+ new_terminal
+}
+
+#[test]
+fn mouse_click_new_pane_in_status_bar_opens_a_new_pane() {
+ let mut zellij = start_zellij(STATUS_BAR_TEST_COLS);
+ claim_first_terminal_and_wait_for_prompt(&zellij);
+
+ click_new_pane_button_in_status_bar(&zellij, b"opened from the status bar");
+
+ let grid_snapshot = zellij.wait_until("the clicked new pane rendered", |grid_snapshot| {
+ grid_snapshot.contains("opened from the status bar")
+ && grid_snapshot.contains("Change Focus")
+ });
+ assert_snapshot!(normalized(&grid_snapshot));
+ zellij.quit();
+}
+
+#[test]
+fn mouse_click_new_pane_in_status_bar_twice_opens_two_panes() {
+ let mut zellij = start_zellij(STATUS_BAR_TEST_COLS);
+ claim_first_terminal_and_wait_for_prompt(&zellij);
+
+ click_new_pane_button_in_status_bar(&zellij, b"first pane from the status bar");
+ zellij.wait_until(
+ "the first clicked pane rendered and the status bar gained the multi-pane controls",
+ |grid_snapshot| {
+ grid_snapshot.contains("first pane from the status bar")
+ && grid_snapshot.contains("Change Focus")
+ },
+ );
+
+ click_new_pane_button_in_status_bar(&zellij, b"second pane from the status bar");
+
+ let grid_snapshot = zellij.wait_until(
+ "the second clicked pane rendered alongside the first",
+ |grid_snapshot| {
+ grid_snapshot.contains("first pane from the status bar")
+ && grid_snapshot.contains("second pane from the status bar")
+ },
+ );
+ assert_snapshot!(normalized(&grid_snapshot));
+ zellij.quit();
+}
+
+fn click_floating_ribbon_in_status_bar(zellij: &TestSession) {
+ let grid_snapshot =
+ zellij.wait_until("status bar shows the floating ribbon", |grid_snapshot| {
+ grid_snapshot
+ .lines()
+ .last()
+ .is_some_and(|status_bar| status_bar.contains("Floating"))
+ });
+ let status_bar = grid_snapshot.lines().last().cloned().unwrap();
+ let floating_ribbon_column = display_column_of(&status_bar, "Floating")
+ .expect("floating ribbon is on the status bar")
+ + 1;
+ let status_bar_line = grid_snapshot.lines().len();
+
+ zellij.send_stdin(&sgr_left_click(floating_ribbon_column, status_bar_line));
+}
+
+#[test]
+fn mouse_click_floating_ribbon_in_status_bar_opens_a_floating_pane() {
+ let mut zellij = start_zellij(STATUS_BAR_TEST_COLS);
+ claim_first_terminal_and_wait_for_prompt(&zellij);
+
+ click_floating_ribbon_in_status_bar(&zellij);
+ let floating_terminal = zellij.expect_pty_spawn();
+ floating_terminal.output(PROMPT);
+
+ let grid_snapshot = zellij.wait_until("a floating pane appeared", |grid_snapshot| {
+ grid_snapshot.contains("STAGGERED") && grid_snapshot.contains("┌")
+ });
+ assert_snapshot!(normalized(&grid_snapshot));
+ zellij.quit();
+}
+
+#[test]
+fn mouse_click_new_tab_button_in_tab_bar_opens_a_new_tab() {
+ let mut zellij = start_zellij(120);
+ claim_first_terminal_and_wait_for_prompt(&zellij);
+
+ let grid_snapshot = zellij.wait_until("tab bar shows the new tab button", |grid_snapshot| {
+ grid_snapshot
+ .lines()
+ .first()
+ .is_some_and(|tab_bar| tab_bar.contains('+'))
+ });
+ let tab_bar = grid_snapshot.lines().first().cloned().unwrap();
+ let new_tab_button_column =
+ display_column_of(&tab_bar, "+").expect("new tab button is on the tab bar") + 1;
+
+ zellij.send_stdin(&sgr_left_click(new_tab_button_column, 1));
+ let new_tab_terminal = zellij.expect_pty_spawn();
+ new_tab_terminal.output(PROMPT);
+
+ let grid_snapshot = zellij.wait_until("a second tab opened", |grid_snapshot| {
+ grid_snapshot.contains("Tab #1") && grid_snapshot.contains("Tab #2")
+ });
+ assert_snapshot!(normalized(&grid_snapshot));
+ zellij.quit();
+}
diff --git a/zellij-integration-tests/tests/title_frame_scroll.rs b/zellij-integration-tests/tests/title_frame_scroll.rs
new file mode 100644
index 00000000..a99e98dd
--- /dev/null
+++ b/zellij-integration-tests/tests/title_frame_scroll.rs
@@ -0,0 +1,58 @@
+#![cfg(unix)]
+
+use zellij_integration_tests::{
+ claim_first_terminal_and_wait_for_prompt, keys, split_right_and_wait_for_prompt, start_zellij,
+ FakePtyHandle, GridSnapshot, TestSession,
+};
+
+const LAST_LINE: &str = "line40";
+
+fn tab_line_shows_scroll(grid_snapshot: &GridSnapshot) -> bool {
+ grid_snapshot
+ .lines()
+ .first()
+ .is_some_and(|tab_bar| tab_bar.contains("SCROLL"))
+}
+
+fn fill_pane_past_viewport(zellij: &TestSession) -> FakePtyHandle {
+ let terminal = claim_first_terminal_and_wait_for_prompt(zellij);
+ for line in 1..=40 {
+ terminal.output(format!("line{:02}\r\n", line).as_bytes());
+ }
+ zellij.wait_until("pane filled past its viewport", |grid_snapshot| {
+ grid_snapshot.contains(LAST_LINE)
+ });
+ terminal
+}
+
+#[test]
+fn single_pane_scroll_shows_on_the_tab_line() {
+ let mut zellij = start_zellij();
+ fill_pane_past_viewport(&zellij);
+
+ zellij.send_stdin(&keys::ctrl('s'));
+ zellij.send_stdin(&keys::ctrl('b'));
+
+ let grid_snapshot = zellij.wait_until(
+ "scroll indicator appears on the tab line",
+ |grid_snapshot| tab_line_shows_scroll(grid_snapshot) && !grid_snapshot.contains(LAST_LINE),
+ );
+ assert!(
+ !grid_snapshot.contains("SCROLL:"),
+ "the single-pane tab-line indicator uses the colon-free format:\n{}",
+ grid_snapshot.text
+ );
+
+ zellij.send_stdin(&keys::ESC);
+ zellij.wait_until("back in the base mode after scrolling", |grid_snapshot| {
+ grid_snapshot.status_bar_appears()
+ });
+ split_right_and_wait_for_prompt(&zellij);
+
+ zellij.wait_until(
+ "tab-line scroll indicator clears once a second pane exists",
+ |grid_snapshot| !tab_line_shows_scroll(grid_snapshot),
+ );
+
+ zellij.quit();
+}