diff --git a/src/commands.rs b/src/commands.rs index aec3970e..d1bcb456 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 7633fcdb..f3daf69c 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),