diff options
-rw-r--r-- | src/commands.rs | 8 | ||||
-rw-r--r-- | zellij-client/src/lib.rs | 9 |
2 files changed, 17 insertions, 0 deletions
diff --git a/src/commands.rs b/src/commands.rs index aec3970e0..d1bcb4561 100644 --- a/src/commands.rs +++ b/src/commands.rs @@ -16,6 +16,7 @@ use zellij_utils::input::options::Options; use zellij_utils::nix; use zellij_utils::{ cli::{CliArgs, Command, SessionCommand, Sessions}, + envs, setup::{get_default_data_dir, Setup}, }; @@ -186,6 +187,13 @@ pub(crate) fn start_client(opts: CliArgs) { attach_with_session_name(session_name, config_options.clone(), create) }; + if let Ok(val) = std::env::var(envs::SESSION_NAME_ENV_KEY) { + if val == *client.get_session_name() { + eprintln!("You are trying to attach to the current session(\"{}\"). Zellij does not support nesting a session in itself", val); + process::exit(1); + } + } + let attach_layout = match client { ClientInfo::Attach(_, _) => None, ClientInfo::New(_) => layout, diff --git a/zellij-client/src/lib.rs b/zellij-client/src/lib.rs index 7633fcdb0..f3daf69c8 100644 --- a/zellij-client/src/lib.rs +++ b/zellij-client/src/lib.rs @@ -91,6 +91,15 @@ pub enum ClientInfo { New(String), } +impl ClientInfo { + pub fn get_session_name(&self) -> &str { + match self { + Self::Attach(ref name, _) => name, + Self::New(ref name) => name, + } + } +} + #[derive(Debug, Clone)] pub(crate) enum InputInstruction { KeyEvent(termion::event::Event, Vec<u8>), |