summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--assets/layouts/disable-status-bar.yaml8
-rw-r--r--src/main.rs9
-rw-r--r--src/tests/fixtures/htopbin16234 -> 16236 bytes
-rw-r--r--src/tests/integration/basic.rs14
-rw-r--r--src/tests/integration/close_pane.rs13
-rw-r--r--src/tests/integration/compatibility.rs20
-rw-r--r--src/tests/integration/layouts.rs7
-rw-r--r--src/tests/integration/move_focus_down.rs2
-rw-r--r--src/tests/integration/move_focus_left.rs3
-rw-r--r--src/tests/integration/move_focus_right.rs3
-rw-r--r--src/tests/integration/move_focus_up.rs2
-rw-r--r--src/tests/integration/resize_down.rs13
-rw-r--r--src/tests/integration/resize_left.rs13
-rw-r--r--src/tests/integration/resize_right.rs13
-rw-r--r--src/tests/integration/resize_up.rs13
-rw-r--r--src/tests/integration/tabs.rs8
-rw-r--r--src/tests/integration/terminal_window_resize.rs4
-rw-r--r--src/tests/integration/toggle_fullscreen.rs2
-rw-r--r--src/tests/mod.rs14
-rw-r--r--zellij-client/src/lib.rs23
-rw-r--r--zellij-server/src/lib.rs28
-rw-r--r--zellij-server/src/pty.rs2
-rw-r--r--zellij-server/src/screen.rs3
-rw-r--r--zellij-server/src/tab.rs8
-rw-r--r--zellij-server/src/ui/mod.rs1
-rw-r--r--zellij-utils/src/input/layout.rs (renamed from zellij-server/src/ui/layout.rs)167
-rw-r--r--zellij-utils/src/input/mod.rs1
-rw-r--r--zellij-utils/src/ipc.rs4
28 files changed, 291 insertions, 107 deletions
diff --git a/assets/layouts/disable-status-bar.yaml b/assets/layouts/disable-status-bar.yaml
new file mode 100644
index 000000000..fd9c97da6
--- /dev/null
+++ b/assets/layouts/disable-status-bar.yaml
@@ -0,0 +1,8 @@
+---
+direction: Horizontal
+parts:
+ - direction: Vertical
+ split_size:
+ Fixed: 1
+ plugin: tab-bar
+ - direction: Vertical
diff --git a/src/main.rs b/src/main.rs
index 97ad3deee..1c0dc3904 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -13,6 +13,7 @@ use zellij_utils::{
cli::{CliArgs, Command, Sessions},
consts::{ZELLIJ_TMP_DIR, ZELLIJ_TMP_LOG_DIR},
input::config::Config,
+ input::layout::Layout,
input::options::Options,
logging::*,
setup::{get_default_data_dir, Setup},
@@ -72,6 +73,7 @@ pub fn main() {
opts,
config,
ClientInfo::Attach(session_name.unwrap(), force, config_options),
+ None,
);
} else {
let session_name = opts
@@ -85,11 +87,18 @@ pub fn main() {
#[cfg(not(disable_automatic_asset_installation))]
populate_data_dir(&data_dir);
+ let layout = Layout::from_path_or_default(
+ opts.layout.as_ref(),
+ opts.layout_path.as_ref(),
+ &data_dir,
+ );
+
start_client(
Box::new(os_input),
opts,
config,
ClientInfo::New(session_name),
+ layout,
);
}
}
diff --git a/src/tests/fixtures/htop b/src/tests/fixtures/htop
index 37ee07771..dab2b7833 100644
--- a/src/tests/fixtures/htop
+++ b/src/tests/fixtures/htop
Binary files differ
diff --git a/src/tests/integration/basic.rs b/src/tests/integration/basic.rs
index 640b1c553..bd1787019 100644
--- a/src/tests/integration/basic.rs
+++ b/src/tests/integration/basic.rs
@@ -33,6 +33,7 @@ pub fn starts_with_one_terminal() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
@@ -61,6 +62,7 @@ pub fn split_terminals_vertically() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
@@ -89,6 +91,7 @@ pub fn split_terminals_horizontally() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
@@ -124,6 +127,7 @@ pub fn split_largest_terminal() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
@@ -152,6 +156,7 @@ pub fn cannot_split_terminals_vertically_when_active_terminal_is_too_small() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
@@ -180,6 +185,7 @@ pub fn cannot_split_terminals_horizontally_when_active_terminal_is_too_small() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
@@ -208,6 +214,7 @@ pub fn cannot_split_largest_terminal_when_there_is_no_room() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
@@ -244,6 +251,7 @@ pub fn scrolling_up_inside_a_pane() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
@@ -282,6 +290,7 @@ pub fn scrolling_down_inside_a_pane() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
@@ -317,6 +326,7 @@ pub fn scrolling_page_up_inside_a_pane() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
@@ -355,6 +365,7 @@ pub fn scrolling_page_down_inside_a_pane() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
@@ -394,6 +405,7 @@ pub fn max_panes() {
opts,
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
@@ -431,6 +443,7 @@ pub fn toggle_focused_pane_fullscreen() {
opts,
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
@@ -471,6 +484,7 @@ pub fn bracketed_paste() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
diff --git a/src/tests/integration/close_pane.rs b/src/tests/integration/close_pane.rs
index 598815145..b9af7bccc 100644
--- a/src/tests/integration/close_pane.rs
+++ b/src/tests/integration/close_pane.rs
@@ -46,6 +46,7 @@ pub fn close_pane_with_another_pane_above_it() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
@@ -89,6 +90,7 @@ pub fn close_pane_with_another_pane_below_it() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
@@ -129,6 +131,7 @@ pub fn close_pane_with_another_pane_to_the_left() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
@@ -170,6 +173,7 @@ pub fn close_pane_with_another_pane_to_the_right() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
@@ -216,6 +220,7 @@ pub fn close_pane_with_multiple_panes_above_it() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
@@ -260,6 +265,7 @@ pub fn close_pane_with_multiple_panes_below_it() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
@@ -306,6 +312,7 @@ pub fn close_pane_with_multiple_panes_to_the_left() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
@@ -350,6 +357,7 @@ pub fn close_pane_with_multiple_panes_to_the_right() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
@@ -417,6 +425,7 @@ pub fn close_pane_with_multiple_panes_above_it_away_from_screen_edges() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
@@ -480,6 +489,7 @@ pub fn close_pane_with_multiple_panes_below_it_away_from_screen_edges() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
@@ -545,6 +555,7 @@ pub fn close_pane_with_multiple_panes_to_the_left_away_from_screen_edges() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
@@ -610,6 +621,7 @@ pub fn close_pane_with_multiple_panes_to_the_right_away_from_screen_edges() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
@@ -647,6 +659,7 @@ pub fn closing_last_pane_exits_app() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
diff --git a/src/tests/integration/compatibility.rs b/src/tests/integration/compatibility.rs
index ec983b095..d3bbccba0 100644
--- a/src/tests/integration/compatibility.rs
+++ b/src/tests/integration/compatibility.rs
@@ -49,6 +49,7 @@ pub fn run_bandwhich_from_fish_shell() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
@@ -78,6 +79,7 @@ pub fn fish_tab_completion_options() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
@@ -112,6 +114,7 @@ pub fn fish_select_tab_completion_options() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
@@ -150,6 +153,7 @@ pub fn vim_scroll_region_down() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
@@ -185,6 +189,7 @@ pub fn vim_ctrl_d() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
@@ -219,6 +224,7 @@ pub fn vim_ctrl_u() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
@@ -248,6 +254,7 @@ pub fn htop() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
@@ -277,6 +284,7 @@ pub fn htop_scrolling() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
@@ -306,6 +314,7 @@ pub fn htop_right_scrolling() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
@@ -343,6 +352,7 @@ pub fn vim_overwrite() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
@@ -375,6 +385,7 @@ pub fn clear_scroll_region() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
@@ -404,6 +415,7 @@ pub fn display_tab_characters_properly() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
@@ -433,6 +445,7 @@ pub fn neovim_insert_mode() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
@@ -464,6 +477,7 @@ pub fn bash_cursor_linewrap() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
@@ -495,6 +509,7 @@ pub fn fish_paste_multiline() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
@@ -524,6 +539,7 @@ pub fn git_log() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
@@ -555,6 +571,7 @@ pub fn git_diff_scrollup() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
@@ -584,6 +601,7 @@ pub fn emacs_longbuf() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
@@ -613,6 +631,7 @@ pub fn top_and_quit() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
@@ -648,6 +667,7 @@ pub fn exa_plus_omf_theme() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
.stdout_writer
diff --git a/src/tests/integration/layouts.rs b/src/tests/integration/layouts.rs
index e69869249..9a97170bb 100644
--- a/src/tests/integration/layouts.rs
+++ b/src/tests/integration/layouts.rs
@@ -29,11 +29,18 @@ pub fn accepts_basic_layout() {
"src/tests/fixtures/layouts/three-panes-with-nesting.yaml",
));
+ let layout = zellij_utils::input::layout::Layout::from_path_or_default(
+ None,
+ opts.layout_path.as_ref(),
+ std::path::Path::new("unused"),
+ );
+
start(
Box::new(fake_input_output.clone()),
opts,
Box::new(fake_input_output.clone()),
Config::default(),
+ layout,
);
let output_frames = fake_input_output
.stdout_writer
diff --git a/src/tests/integration/move_focus_down.rs b/src/tests/integration/move_focus_down.rs
index 2f18ab623..507897394 100644
--- a/src/tests/integration/move_focus_down.rs
+++ b/src/tests/integration/move_focus_down.rs
@@ -38,6 +38,7 @@ pub fn move_focus_down() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
@@ -75,6 +76,7 @@ pub fn move_focus_down_to_the_most_recently_used_pane() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
diff --git a/src/tests/integration/move_focus_left.rs b/src/tests/integration/move_focus_left.rs
index a9fca49ed..d33ccffab 100644
--- a/src/tests/integration/move_focus_left.rs
+++ b/src/tests/integration/move_focus_left.rs
@@ -38,6 +38,7 @@ pub fn move_focus_left() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
@@ -76,6 +77,7 @@ pub fn move_focus_left_to_the_most_recently_used_pane() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
@@ -114,6 +116,7 @@ pub fn move_focus_left_changes_tab() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
diff --git a/src/tests/integration/move_focus_right.rs b/src/tests/integration/move_focus_right.rs
index c85d5b96e..62e2a0dfa 100644
--- a/src/tests/integration/move_focus_right.rs
+++ b/src/tests/integration/move_focus_right.rs
@@ -39,6 +39,7 @@ pub fn move_focus_right() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
@@ -76,6 +77,7 @@ pub fn move_focus_right_to_the_most_recently_used_pane() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
@@ -114,6 +116,7 @@ pub fn move_focus_right_changes_tab() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
diff --git a/src/tests/integration/move_focus_up.rs b/src/tests/integration/move_focus_up.rs
index d161ff8a4..17dced0bd 100644
--- a/src/tests/integration/move_focus_up.rs
+++ b/src/tests/integration/move_focus_up.rs
@@ -37,6 +37,7 @@ pub fn move_focus_up() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
@@ -75,6 +76,7 @@ pub fn move_focus_up_to_the_most_recently_used_pane() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,
);
let output_frames = fake_input_output
diff --git a/src/tests/integration/resize_down.rs b/src/tests/integration/resize_down.rs
index e5d35c266..ee439b630 100644
--- a/src/tests/integration/resize_down.rs
+++ b/src/tests/integration/resize_down.rs
@@ -49,6 +49,7 @@ pub fn resize_down_with_pane_above() {
CliArgs::default(),
Box::new(fake_input_output.clone()),
Config::default(),
+ None,