[READ-ONLY] Mirror of https://github.com/mrgnw/dotfiles. My shell customizations - aliases, functions, and themes.
dotfiles
shell
zinit
zsh
1# Quick zellij session management for mobile/remote use
2
3# Main function - attach or create session
4zj() {
5 if [ "$#" -eq 0 ]; then
6 zellij list-sessions 2>/dev/null || echo "No sessions"
7 else
8 zellij attach "$1" 2>/dev/null || zellij --session "$1"
9 fi
10}
11
12# Resume or create session based on client
13zr() {
14 local zr_session_name="main"
15 if [ -n "$SSH_CLIENT" ]; then
16 # Use SSH_CONNECTION or fallback to simplified client IP
17 if [ -n "$SSH_TTY" ]; then
18 zr_session_name="ssh_$(who am i | awk '{print $NF}' | tr -d '()')"
19 else
20 zr_session_name="ssh_$(echo "$SSH_CLIENT" | awk '{print $1}' | tr '.' '_')"
21 fi
22 fi
23 zellij attach "$zr_session_name" 2>/dev/null || zellij --session "$zr_session_name"
24}
25
26# Quick access to common sessions
27zm() { zj main }
28zw() { zj work }
29zd() { zj dev }
30
31# Kill session
32zk() {
33 [ "$#" -eq 0 ] && { echo "Usage: zk <session>"; return 1; }
34 zellij delete-session "$1"
35}
36
37# Create session with current folder name
38zf() {
39 zj "$(basename "$PWD")"
40}
41
42# List sessions with status
43zl() {
44 zellij list-sessions 2>/dev/null | nl -v0 -nln
45}
46
47# Kill all sessions
48zka() {
49 zellij list-sessions 2>/dev/null | awk '{print $1}' | xargs -I {} zellij delete-session {}
50}
51
52# Auto-resume on SSH (add to your .zshrc)
53# if [[ -n "$SSH_CLIENT" && -z "$ZELLIJ" && $- == *i* ]]; then zr; fi