summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main.rs10
-rw-r--r--zellij-client/src/lib.rs2
-rw-r--r--zellij-utils/src/cli.rs10
3 files changed, 20 insertions, 2 deletions
diff --git a/src/main.rs b/src/main.rs
index abf40aa83..294464504 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -9,7 +9,7 @@ use std::process;
use zellij_client::{os_input_output::get_client_os_input, start_client, ClientInfo};
use zellij_server::{os_input_output::get_server_os_input, start_server};
use zellij_utils::{
- cli::{CliArgs, Command, Sessions},
+ cli::{CliArgs, Command, SessionCommand, Sessions},
consts::{ZELLIJ_TMP_DIR, ZELLIJ_TMP_LOG_DIR},
logging::*,
setup::{get_default_data_dir, Setup},
@@ -54,6 +54,7 @@ pub fn main() {
if let Some(Command::Sessions(Sessions::Attach {
mut session_name,
force,
+ options,
})) = opts.command.clone()
{
if let Some(session) = session_name.as_ref() {
@@ -62,10 +63,16 @@ pub fn main() {
session_name = Some(get_active_session());
}
+ let config_options = match options {
+ Some(SessionCommand::Options(o)) => config_options.merge(o),
+ None => config_options,
+ };
+
start_client(
Box::new(os_input),
opts,
config,
+ config_options.clone(),
ClientInfo::Attach(session_name.unwrap(), force, config_options),
None,
);
@@ -85,6 +92,7 @@ pub fn main() {
Box::new(os_input),
opts,
config,
+ config_options,
ClientInfo::New(session_name),
layout,
);
diff --git a/zellij-client/src/lib.rs b/zellij-client/src/lib.rs
index 7d67a01ac..bd2c63768 100644
--- a/zellij-client/src/lib.rs
+++ b/zellij-client/src/lib.rs
@@ -86,6 +86,7 @@ pub fn start_client(
mut os_input: Box<dyn ClientOsApi>,
opts: CliArgs,
config: Config,
+ config_options: Options,
info: ClientInfo,
layout: Option<LayoutFromYaml>,
) {
@@ -105,7 +106,6 @@ pub fn start_client(
.unwrap();
std::env::set_var(&"ZELLIJ", "0");
- let config_options = Options::from_cli(&config.options, opts.command.clone());
let palette = config.themes.clone().map_or_else(
|| os_input.load_palette(),
|t| {
diff --git a/zellij-utils/src/cli.rs b/zellij-utils/src/cli.rs
index 2ac0e986b..a8dc9c0aa 100644
--- a/zellij-utils/src/cli.rs
+++ b/zellij-utils/src/cli.rs
@@ -63,6 +63,13 @@ pub enum Command {
}
#[derive(Debug, StructOpt, Clone, Serialize, Deserialize)]
+pub enum SessionCommand {
+ /// Change the behaviour of zellij
+ #[structopt(name = "options")]
+ Options(Options),
+}
+
+#[derive(Debug, StructOpt, Clone, Serialize, Deserialize)]
pub enum Sessions {
/// List active sessions
#[structopt(alias = "ls")]
@@ -78,5 +85,8 @@ pub enum Sessions {
/// zellij client (if any) and attach to this.
#[structopt(long, short)]
force: bool,
+ /// Change the behaviour of zellij
+ #[structopt(subcommand, name = "options")]
+ options: Option<SessionCommand>,
},
}