71 lines
1.4 KiB
Bash
Executable file
71 lines
1.4 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# Default configuration
|
|
config="main"
|
|
export ZELLIJ_CONFIG="$config"
|
|
|
|
# Function to check if zellij is installed
|
|
is_zellij_installed() {
|
|
if ! command -v zellij &> /dev/null; then
|
|
echo "This module needs zellij to be installed."
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# Function to check if a session is running
|
|
is_session_running() {
|
|
if pgrep -x "zellij" > /dev/null; then
|
|
return 0
|
|
else
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# Function to list all zellij sessions
|
|
list_sessions() {
|
|
zellij list-sessions
|
|
}
|
|
|
|
# Function to create a new session
|
|
create_session() {
|
|
local session_name="${1:-$config}"
|
|
zellij -s "$session_name"
|
|
}
|
|
|
|
# Function to attach to a session
|
|
attach_session() {
|
|
local session_name="${1:-$config}"
|
|
zellij attach "$session_name"
|
|
}
|
|
|
|
# Function to kill a session
|
|
kill_session() {
|
|
local session_name="${1:-$config}"
|
|
zellij kill-session "$session_name"
|
|
}
|
|
|
|
# Function to load a layout
|
|
load_layout() {
|
|
local layout_name="$1"
|
|
if [ -z "$layout_name" ]; then
|
|
echo "Please specify a layout name."
|
|
return 1
|
|
fi
|
|
zellij --layout "$layout_name"
|
|
}
|
|
|
|
# Main function to handle session management
|
|
zellij_main() {
|
|
is_zellij_installed
|
|
|
|
if is_session_running; then
|
|
attach_session
|
|
else
|
|
create_session
|
|
fi
|
|
}
|
|
|
|
# Execute main function if script is run directly
|
|
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
|
zellij_main
|
|
fi
|