summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/commands.rs8
-rw-r--r--zellij-client/src/lib.rs9
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>),