aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/dot_config/zsh/dot_zshrc
diff options
context:
space:
mode:
Diffstat (limited to 'dot_config/zsh/dot_zshrc')
-rw-r--r--dot_config/zsh/dot_zshrc22
1 files changed, 15 insertions, 7 deletions
diff --git a/dot_config/zsh/dot_zshrc b/dot_config/zsh/dot_zshrc
index f5c3337..27daa2c 100644
--- a/dot_config/zsh/dot_zshrc
+++ b/dot_config/zsh/dot_zshrc
@@ -158,13 +158,21 @@ if [[ "$TERM" == (xterm-ghostty|st*|screen*|xterm*|rxvt*|tmux*|putty*|konsole*|g
add-zsh-hook -Uz preexec xterm_title_preexec
fi
-# ── Zellij tab naming ─────────────────────────────────────────────────────────
-# Intentionally NOT renaming tabs from the shell. Zellij's built-in "Tab #N"
-# is the only label that stays correct through session resurrection and
-# auto-renumbering after a tab is closed; once a tab gets a custom name, the
-# tab-bar plugin uses that name verbatim and there is no IPC event for shells
-# to react to layout changes. The zsh prompt already shows CWD inside the
-# pane, so a duplicated label in the tab bar was pure noise.
+# ── Zellij tab naming (dir:cmd, no position prefix) ──────────────────────────
+# Zellij's default "Tab #N" name is baked in at tab creation (the N is the
+# immutable creation index, not the live position) and never updates when
+# tabs are closed or moved — so the default is actively misleading. We rename
+# to `dir:cmd` from the shell hooks; position is implied by visual order in
+# the tab bar. Untouched tabs after a resurrect or after closing a middle tab
+# will still show their previous dir:cmd until the next prompt fires there,
+# but at least there's no wrong *number* attached.
+if [[ -n "$ZELLIJ" ]]; then
+ _zellij_dir() { [[ "$PWD" == "$HOME" ]] && echo '~' || echo "${PWD##*/}"; }
+ _zellij_tab_precmd() { zellij action rename-tab "$(_zellij_dir)" 2>/dev/null; }
+ _zellij_tab_preexec() { zellij action rename-tab "$(_zellij_dir):${1%% *}" 2>/dev/null; }
+ add-zsh-hook precmd _zellij_tab_precmd
+ add-zsh-hook preexec _zellij_tab_preexec
+fi
# ── Recent directories ────────────────────────────────────────────────────────
autoload -Uz chpwd_recent_dirs cdr