summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Cargo.lock110
-rw-r--r--default-plugins/status-bar/src/main.rs64
-rw-r--r--default-plugins/tab-bar/src/line.rs12
-rw-r--r--default-plugins/tab-bar/src/main.rs2
-rw-r--r--default-plugins/tab-bar/src/tab.rs8
-rw-r--r--src/tests/fakes.rs3
-rw-r--r--src/tests/utils.rs3
-rw-r--r--zellij-client/Cargo.toml1
-rw-r--r--zellij-client/src/lib.rs9
-rw-r--r--zellij-client/src/os_input_output.rs14
-rw-r--r--zellij-server/src/lib.rs13
-rw-r--r--zellij-server/src/panes/grid.rs161
-rw-r--r--zellij-server/src/panes/terminal_pane.rs7
-rw-r--r--zellij-server/src/panes/unit/grid_tests.rs65
-rw-r--r--zellij-server/src/route.rs7
-rw-r--r--zellij-server/src/screen.rs24
-rw-r--r--zellij-server/src/tab.rs18
-rw-r--r--zellij-utils/src/ipc.rs11
18 files changed, 419 insertions, 113 deletions
diff --git a/Cargo.lock b/Cargo.lock
index a3037b008..31c5e7093 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -132,7 +132,7 @@ dependencies = [
"event-listener",
"futures-lite",
"once_cell",
- "signal-hook",
+ "signal-hook 0.3.8",
"winapi",
]
@@ -452,6 +452,31 @@ dependencies = [
]
[[package]]
+name = "crossterm"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4e86d73f2a0b407b5768d10a8c720cf5d2df49a9efc10ca09176d201ead4b7fb"
+dependencies = [
+ "bitflags",
+ "crossterm_winapi",
+ "lazy_static",
+ "libc",
+ "mio",
+ "parking_lot",
+ "signal-hook 0.1.17",
+ "winapi",
+]
+
+[[package]]
+name = "crossterm_winapi"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c2265c3f8e080075d9b6417aa72293fc71662f34b4af2612d8d1b074d29510db"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
name = "ctor"
version = "0.1.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1017,6 +1042,28 @@ dependencies = [
]
[[package]]
+name = "mio"
+version = "0.7.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf80d3e903b34e0bd7282b218398aec54e082c840d9baf8339e0080a0c542956"
+dependencies = [
+ "libc",
+ "log",
+ "miow",
+ "ntapi",
+ "winapi",
+]
+
+[[package]]
+name = "miow"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
name = "more-asserts"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1044,6 +1091,15 @@ dependencies = [
]
[[package]]
+name = "ntapi"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
name = "num_cpus"
version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1088,6 +1144,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72"
[[package]]
+name = "parking_lot"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb"
+dependencies = [
+ "instant",
+ "lock_api",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa7a782938e745763fe6907fc6ba86946d72f49fe7e21de074e08128a99fb018"
+dependencies = [
+ "cfg-if 1.0.0",
+ "instant",
+ "libc",
+ "redox_syscall",
+ "smallvec",
+ "winapi",
+]
+
+[[package]]
name = "pin-project-lite"
version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1432,6 +1513,17 @@ dependencies = [
[[package]]
name = "signal-hook"
+version = "0.1.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e31d442c16f047a671b5a71e2161d6e68814012b7f5379d269ebd915fac2729"
+dependencies = [
+ "libc",
+ "mio",
+ "signal-hook-registry",
+]
+
+[[package]]
+name = "signal-hook"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef33d6d0cd06e0840fba9985aab098c147e67e05cee14d412d3345ed14ff30ac"
@@ -1616,6 +1708,17 @@ dependencies = [
]
[[package]]
+name = "termbg"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "133c09f40b7a6a10616bb46d2b7d78d50cb8c6c475c84f3c02fe261957d9e0e0"
+dependencies = [
+ "crossterm",
+ "thiserror",
+ "winapi",
+]
+
+[[package]]
name = "terminal_size"
version = "0.1.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2204,7 +2307,8 @@ dependencies = [
"interprocess",
"libc",
"nix",
- "signal-hook",
+ "signal-hook 0.3.8",
+ "termbg",
"termion",
"zellij-tile",
"zellij-utils",
@@ -2224,7 +2328,7 @@ dependencies = [
"serde",
"serde_json",
"serde_yaml",
- "signal-hook",
+ "signal-hook 0.3.8",
"termion",
"unicode-width",
"vte 0.10.1",
diff --git a/default-plugins/status-bar/src/main.rs b/default-plugins/status-bar/src/main.rs
index bb56c279a..cf9445d6a 100644
--- a/default-plugins/status-bar/src/main.rs
+++ b/default-plugins/status-bar/src/main.rs
@@ -72,55 +72,61 @@ pub struct ColoredElements {
// that can be defined in the config perhaps
fn color_elements(palette: Palette) -> ColoredElements {
match palette.source {
+ // "cyan" here is used as a background as a dirty hack
+ // this is because the Palette struct doesn't have a "gray" section
+ // and we can't use its "bg" because that is now dynamically taken from the terminal
+ // and might often not actually fit the rest of the colorscheme
+ //
+ // to fix this, we need to restructure the Palette struct
PaletteSource::Default => ColoredElements {
- selected_prefix_separator: style!(palette.bg, palette.green),
+ selected_prefix_separator: style!(palette.cyan, palette.green),
selected_char_left_separator: style!(palette.black, palette.green).bold(),
selected_char_shortcut: style!(palette.red, palette.green).bold(),
selected_char_right_separator: style!(palette.black, palette.green).bold(),
selected_styled_text: style!(palette.black, palette.green).bold(),
- selected_suffix_separator: style!(palette.green, palette.bg).bold(),
- unselected_prefix_separator: style!(palette.bg, palette.fg),
+ selected_suffix_separator: style!(palette.green, palette.cyan).bold(),
+ unselected_prefix_separator: style!(palette.cyan, palette.fg),
unselected_char_left_separator: style!(palette.black, palette.fg).bold(),
unselected_char_shortcut: style!(palette.red, palette.fg).bold(),
unselected_char_right_separator: style!(palette.black, palette.fg).bold(),
unselected_styled_text: style!(palette.black, palette.fg).bold(),
- unselected_suffix_separator: style!(palette.fg, palette.bg),
- disabled_prefix_separator: style!(palette.bg, palette.fg),
- disabled_styled_text: style!(palette.bg, palette.fg).dimmed(),
- disabled_suffix_separator: style!(palette.fg, palette.bg),
- selected_single_letter_prefix_separator: style!(palette.bg, palette.green),
+ unselected_suffix_separator: style!(palette.fg, palette.cyan),
+ disabled_prefix_separator: style!(palette.cyan, palette.fg),
+ disabled_styled_text: style!(palette.cyan, palette.fg).dimmed(),
+ disabled_suffix_separator: style!(palette.fg, palette.cyan),
+ selected_single_letter_prefix_separator: style!(palette.cyan, palette.green),
selected_single_letter_char_shortcut: style!(palette.red, palette.green).bold(),
- selected_single_letter_suffix_separator: style!(palette.green, palette.bg),
- unselected_single_letter_prefix_separator: style!(palette.bg, palette.fg),
+ selected_single_letter_suffix_separator: style!(palette.green, palette.cyan),
+ unselected_single_letter_prefix_separator: style!(palette.cyan, palette.fg),
unselected_single_letter_char_shortcut: style!(palette.red, palette.fg).bold(),
- unselected_single_letter_suffix_separator: style!(palette.fg, palette.bg),
- superkey_prefix: style!(palette.white, palette.bg).bold(),
- superkey_suffix_separator: style!(palette.bg, palette.bg),
+ unselected_single_letter_suffix_separator: style!(palette.fg, palette.cyan),
+ superkey_prefix: style!(palette.white, palette.cyan).bold(),
+ superkey_suffix_separator: style!(palette.cyan, palette.cyan),
},
PaletteSource::Xresources => ColoredElements {
- selected_prefix_separator: style!(palette.bg, palette.green),
+ selected_prefix_separator: style!(palette.cyan, palette.green),
selected_char_left_separator: style!(palette.fg, palette.green).bold(),
selected_char_shortcut: style!(palette.red, palette.green).bold(),
selected_char_right_separator: style!(palette.fg, palette.green).bold(),
- selected_styled_text: style!(palette.bg, palette.green).bold(),
- selected_suffix_separator: style!(palette.green, palette.bg).bold(),
- unselected_prefix_separator: style!(palette.bg, palette.fg),
- unselected_char_left_separator: style!(palette.bg, palette.fg).bold(),
+ selected_styled_text: style!(palette.cyan, palette.green).bold(),
+ selected_suffix_separator: style!(palette.green, palette.cyan).bold(),
+ unselected_prefix_separator: style!(palette.cyan, palette.fg),
+ unselected_char_left_separator: style!(palette.cyan, palette.fg).bold(),
unselected_char_shortcut: style!(palette.red, palette.fg).bold(),
- unselected_char_right_separator: style!(palette.bg, palette.fg).bold(),
- unselected_styled_text: style!(palette.bg, palette.fg).bold(),
- unselected_suffix_separator: style!(palette.fg, palette.bg),
- disabled_prefix_separator: style!(palette.bg, palette.fg),
- disabled_styled_text: style!(palette.bg, palette.fg).dimmed(),
- disabled_suffix_separator: style!(palette.fg, palette.bg),
+ unselected_char_right_separator: style!(palette.cyan, palette.fg).bold(),
+ unselected_styled_text: style!(palette.cyan, palette.fg).bold(),
+ unselected_suffix_separator: style!(palette.fg, palette.cyan),
+ disabled_prefix_separator: style!(palette.cyan, palette.fg),
+ disabled_styled_text: style!(palette.cyan, palette.fg).dimmed(),
+ disabled_suffix_separator: style!(palette.fg, palette.cyan),
selected_single_letter_prefix_separator: style!(palette.fg, palette.green),
selected_single_letter_char_shortcut: style!(palette.red, palette.green).bold(),
selected_single_letter_suffix_separator: style!(palette.green, palette.fg),
- unselected_single_letter_prefix_separator: style!(palette.fg, palette.bg),
+ unselected_single_letter_prefix_separator: style!(palette.fg, palette.cyan),
unselected_single_letter_char_shortcut: style!(palette.red, palette.fg).bold(),
- unselected_single_letter_suffix_separator: style!(palette.fg, palette.bg),
- superkey_prefix: style!(palette.bg, palette.fg).bold(),
- superkey_suffix_separator: style!(palette.fg, palette.bg),
+ unselected_single_letter_suffix_separator: style!(palette.fg, palette.cyan),
+ superkey_prefix: style!(palette.cyan, palette.fg).bold(),
+ superkey_suffix_separator: style!(palette.fg, palette.cyan),
},
}
}
@@ -155,7 +161,7 @@ impl ZellijPlugin for State {
// [48;5;238m is gray background, [0K is so that it fills the rest of the line
// [m is background reset, [0K is so that it clears the rest of the line
- match self.mode_info.palette.bg {
+ match self.mode_info.palette.cyan {
PaletteColor::Rgb((r, g, b)) => {
println!("{}\u{1b}[48;2;{};{};{}m\u{1b}[0K", first_line, r, g, b);
}
diff --git a/default-plugins/tab-bar/src/line.rs b/default-plugins/tab-bar/src/line.rs
index 574edb78d..fce8982da 100644
--- a/default-plugins/tab-bar/src/line.rs
+++ b/default-plugins/tab-bar/src/line.rs
@@ -62,11 +62,11 @@ fn left_more_message(tab_count_to_the_left: usize, palette: Palette, separator:
};
// 238
let more_text_len = more_text.chars().count() + 2; // 2 for the arrows
- let left_separator = style!(palette.bg, palette.orange).paint(separator);
+ let left_separator = style!(palette.cyan, palette.orange).paint(separator);
let more_styled_text = style!(palette.black, palette.orange)
.bold()
.paint(more_text);
- let right_separator = style!(palette.orange, palette.bg).paint(separator);
+ let right_separator = style!(palette.orange, palette.cyan).paint(separator);
let more_styled_text = format!(
"{}",
ANSIStrings(&[left_separator, more_styled_text, right_separator,])
@@ -94,11 +94,11 @@ fn right_more_message(
" +many → ".to_string()
};
let more_text_len = more_text.chars().count() + 1; // 2 for the arrow
- let left_separator = style!(palette.bg, palette.orange).paint(separator);
+ let left_separator = style!(palette.cyan, palette.orange).paint(separator);
let more_styled_text = style!(palette.black, palette.orange)
.bold()
.paint(more_text);
- let right_separator = style!(palette.orange, palette.bg).paint(separator);
+ let right_separator = style!(palette.orange, palette.cyan).paint(separator);
let more_styled_text = format!(
"{}",
ANSIStrings(&[left_separator, more_styled_text, right_separator,])
@@ -147,7 +147,9 @@ fn add_next_tabs_msg(
fn tab_line_prefix(palette: Palette) -> LinePart {
let prefix_text = " Zellij ".to_string();
let prefix_text_len = prefix_text.chars().count();
- let prefix_styled_text = style!(palette.white, palette.bg).bold().paint(prefix_text);
+ let prefix_styled_text = style!(palette.white, palette.cyan)
+ .bold()
+ .paint(prefix_text);
LinePart {
part: format!("{}", prefix_styled_text),
len: prefix_text_len,
diff --git a/default-plugins/tab-bar/src/main.rs b/default-plugins/tab-bar/src/main.rs
index 00ff4bd96..46336be3d 100644
--- a/default-plugins/tab-bar/src/main.rs
+++ b/default-plugins/tab-bar/src/main.rs
@@ -75,7 +75,7 @@ impl ZellijPlugin for State {
for bar_part in tab_line {
s = format!("{}{}", s, bar_part.part);
}
- match self.mode_info.palette.bg {
+ match self.mode_info.palette.cyan {
PaletteColor::Rgb((r, g, b)) => {
println!("{}\u{1b}[48;2;{};{};{}m\u{1b}[0K", s, r, g, b);
}
diff --git a/default-plugins/tab-bar/src/tab.rs b/default-plugins/tab-bar/src/tab.rs
index 85e2c378d..fb8e377d1 100644
--- a/default-plugins/tab-bar/src/tab.rs
+++ b/default-plugins/tab-bar/src/tab.rs
@@ -4,12 +4,12 @@ use zellij_tile::prelude::*;
use zellij_tile_utils::style;
pub fn active_tab(text: String, palette: Palette, separator: &str) -> LinePart {
- let left_separator = style!(palette.bg, palette.green).paint(separator);
+ let left_separator = style!(palette.cyan, palette.green).paint(separator);
let tab_text_len = text.chars().count() + 4; // 2 for left and right separators, 2 for the text padding
let tab_styled_text = style!(palette.black, palette.green)
.bold()
.paint(format!(" {} ", text));
- let right_separator = style!(palette.green, palette.bg).paint(separator);
+ let right_separator = style!(palette.green, palette.cyan).paint(separator);
let tab_styled_text = format!(
"{}",
ANSIStrings(&[left_separator, tab_styled_text, right_separator,])
@@ -21,12 +21,12 @@ pub fn active_tab(text: String, palette: Palette, separator: &str) -> LinePart {
}
pub fn non_active_tab(text: String, palette: Palette, separator: &str) -> LinePart {
- let left_separator = style!(palette.bg, palette.fg).paint(separator);
+ let left_separator = style!(palette.cyan, palette.fg).paint(separator);
let tab_text_len = text.chars().count() + 4; // 2 for left and right separators, 2 for the padding
let tab_styled_text = style!(palette.black, palette.fg)
.bold()
.paint(format!(" {} ", text));
- let right_separator = style!(palette.fg, palette.bg).paint(separator);
+ let right_separator = style!(palette.fg, palette.cyan).paint(separator);
let tab_styled_text = format!(
"{}",
ANSIStrings(&[left_separator, tab_styled_text, right_separator,])
diff --git a/src/tests/fakes.rs b/src/tests/fakes.rs
index 3fefa663a..09cc2ba3d 100644
--- a/src/tests/fakes.rs
+++ b/src/tests/fakes.rs
@@ -219,6 +219,9 @@ impl ClientOsApi for FakeInputOutput {
}
}
fn connect_to_server(&self, _path: &std::path::Path) {}
+ fn load_palette(&self) -> Palette {
+ default_palette()
+ }
}
impl ServerOsApi for FakeInputOutput {
diff --git a/src/tests/utils.rs b/src/tests/utils.rs
index ee2de3cd8..441f9bcea 100644
--- a/src/tests/utils.rs
+++ b/src/tests/utils.rs
@@ -1,4 +1,5 @@
use zellij_server::{panes::TerminalPane, tab::Pane};
+use zellij_tile::data::Palette;
use zellij_utils::pane_size::PositionAndSize;
pub fn get_output_frame_snapshots(
@@ -7,7 +8,7 @@ pub fn get_output_frame_snapshots(
) -> Vec<String> {
let mut vte_parser = vte::Parser::new();
let main_pid = 0;
- let mut terminal_output = TerminalPane::new(main_pid, *win_size);
+ let mut terminal_output = TerminalPane::new(main_pid, *win_size, Palette::default());
let mut snapshots = vec![];
for frame in output_frames.iter() {
diff --git a/zellij-client/Cargo.toml b/zellij-client/Cargo.toml
index f5e668c77..5d7efdddc 100644
--- a/zellij-client/Cargo.toml
+++ b/zellij-client/Cargo.toml
@@ -16,6 +16,7 @@ signal-hook = "0.3"
nix = "0.19.1"
interprocess = "1.1.1"
libc = "0.2"
+termbg = "0.2.0"
[features]
test = ["zellij-utils/test"]
diff --git a/zellij-client/src/lib.rs b/zellij-client/src/lib.rs
index 8ffcf72be..9a1a706a9 100644
--- a/zellij-client/src/lib.rs
+++ b/zellij-client/src/lib.rs
@@ -21,7 +21,7 @@ use zellij_utils::{
errors::{ClientContext, ContextType, ErrorInstruction},
input::config::Config,
input::options::Options,
- ipc::{ClientToServerMsg, ServerToClientMsg},
+ ipc::{ClientAttributes, ClientToServerMsg, ServerToClientMsg},
};
/// Instructions related to the client-side application
@@ -85,6 +85,7 @@ pub fn start_client(mut os_input: Box<dyn ClientOsApi>, opts: CliArgs, config: C
let take_snapshot = "\u{1b}[?1049h";
let bracketed_paste = "\u{1b}[?2004h";
os_input.unset_raw_mode(0);
+ let palette = os_input.load_palette();
let _ = os_input
.get_stdout_writer()
.write(take_snapshot.as_bytes())
@@ -103,9 +104,13 @@ pub fn start_client(mut os_input: Box<dyn ClientOsApi>, opts: CliArgs, config: C
let config_options = Options::from_cli(&config.options, opts.option.clone());
let full_screen_ws = os_input.get_terminal_size_using_fd(0);
+ let client_attributes = ClientAttributes {
+ position_and_size: full_screen_ws,
+ palette,
+ };
os_input.connect_to_server(&*ZELLIJ_IPC_PIPE);
os_input.send_to_server(ClientToServerMsg::NewClient(
- full_screen_ws,
+ client_attributes,
opts,
config_options,
));
diff --git a/zellij-client/src/os_input_output.rs b/zellij-client/src/os_input_output.rs
index 680561a86..02a516e8a 100644
--- a/zellij-client/src/os_input_output.rs
+++ b/zellij-client/src/os_input_output.rs
@@ -7,11 +7,13 @@ use std::io::prelude::*;
use std::os::unix::io::RawFd;
use std::path::Path;
use std::sync::{Arc, Mutex};
+use zellij_tile::data::{Palette, PaletteColor};
use zellij_utils::errors::ErrorContext;
use zellij_utils::ipc::{
ClientToServerMsg, IpcReceiverWithContext, IpcSenderWithContext, ServerToClientMsg,
};
use zellij_utils::pane_size::PositionAndSize;
+use zellij_utils::shared::default_palette;
fn into_raw_mode(pid: RawFd) {
let mut tio = termios::tcgetattr(pid).expect("could not get terminal attribute");
@@ -77,6 +79,7 @@ pub trait ClientOsApi: Send + Sync {
fn handle_signals(&self, sigwinch_cb: Box<dyn Fn()>, quit_cb: Box<dyn Fn()>);
/// Establish a connection with the server socket.
fn connect_to_server(&self, path: &Path);
+ fn load_palette(&self) -> Palette;
}
impl ClientOsApi for ClientOsInputOutput {
@@ -155,6 +158,17 @@ impl ClientOsApi for ClientOsInputOutput {
*self.send_instructions_to_server.lock().unwrap() = Some(sender);
*self.receive_instructions_from_server.lock().unwrap() = Some(receiver);
}
+ fn load_palette(&self) -> Palette {
+ let timeout = std::time::Duration::from_millis(100);
+ let mut palette = default_palette();
+ if let Ok(rgb) = termbg::rgb(timeout) {
+ palette.bg = PaletteColor::Rgb((rgb.r as u8, rgb.g as u8, rgb.b as u8));
+ // TODO: also dynamically get all other colors from the user's terminal
+ // this should be done in the same method (OSC ]11), but there might be other
+ // considerations here, hence using the library
+ };
+ palette
+ }
}
impl Clone for Box<dyn ClientOsApi> {
diff --git a/zellij-server/src/lib.rs b/zellij-server/src/lib.rs
index 7e883ddc7..6fa87e481 100644
--- a/zellij-server/src/lib.rs
+++ b/zellij-server/src/lib.rs
@@ -29,15 +29,14 @@ use zellij_utils::{
cli::CliArgs,
errors::{ContextType, ErrorInstruction, ServerContext},
input::options::Options,
- ipc::{ClientToServerMsg, ServerToClientMsg},
- pane_size::PositionAndSize,
+ ipc::{ClientAttributes, ClientToServerMsg, ServerToClientMsg},
setup::{get_default_data_dir, install::populate_data_dir},
};
/// Instructions related to server-side application
#[derive(Debug, Clone)]
pub(crate) enum ServerInstruction {
- NewClient(PositionAndSize, CliArgs, Options),
+ NewClient(ClientAttributes, CliArgs, Options),
Render(Option<String>),
UnblockInputThread,
ClientExit,
@@ -173,13 +172,13 @@ pub fn start_server(os_input: Box<dyn ServerOsApi>, socket_path: PathBuf) {
let (instruction, mut err_ctx) = server_receiver.recv().unwrap();
err_ctx.add_call(ContextType::IPCServer((&instruction).into()));
match instruction {
- ServerInstruction::NewClient(full_screen_ws, opts, config_options) => {
+ ServerInstruction::NewClient(client_attributes, opts, config_options) => {
let session_data = init_session(
os_input.clone(),
opts,
config_options,
to_server.clone(),
- full_screen_ws,
+ client_attributes,
);
*sessions.write().unwrap() = Some(session_data);
sessions
@@ -217,7 +216,7 @@ fn init_session(
opts: CliArgs,
config_options: Options,
to_server: SenderWithContext<ServerInstruction>,
- full_screen_ws: PositionAndSize,
+ client_attributes: ClientAttributes,
) -> SessionMetaData {
let (to_screen, screen_receiver): ChannelWithContext<ScreenInstruction> = mpsc::channel();
let to_screen = SenderWithContext::new(SenderType::Sender(to_screen));
@@ -280,7 +279,7 @@ fn init_session(
let max_panes = opts.max_panes;
move || {
- screen_thread_main(screen_bus, max_panes, full_screen_ws, config_options);
+ screen_thread_main(screen_bus, max_panes, client_attributes, config_options);
}
})
.unwrap();
diff --git a/zellij-server/src/panes/grid.rs b/zellij-server/src/panes/grid.rs
index 83e8c70f6..d9cef5def 100644
--- a/zellij-server/src/panes/grid.rs
+++ b/zellij-server/src/panes/grid.rs
@@ -2,6 +2,7 @@ use std::{
cmp::Ordering,
collections::{BTreeSet, VecDeque},