Files
dotfiles/scripts/default-tmux-session.sh
T
2026-04-20 09:10:35 +02:00

59 lines
2.2 KiB
Bash
Executable File

#!/usr/bin/env bash
default_session='quak'
dummy_session='dummy'
temp_window='temp'
function create_default_session {
if [[ -n "$TMUX" ]]; then
echo "already attached to a session. don't nest tmux sessions"
# return failure so the external attach command is not run
return 1
fi
# check if the default session exists
# redirect stderr to /dev/null because `session not found` is
# not a relevant error in this case
if $(tmux has-session -t ${default_session} 2>/dev/null); then
# return success so the external attach command is run
return 0
fi
# check repository paths
if [[ -d "${HOME}/repositories" ]]; then
path_repositories="${HOME}/repositories"
fi
if [[ -d "${HOME}/dotfiles" ]]; then
path_dotfiles="${HOME}/dotfiles"
elif [[ -n "${path_repositories}" ]] && [[ -d "${path_repositories}/dotfiles" ]]; then
path_dotfiles="${path_repositories}/dotfiles"
fi
if [[ -d "${HOME}/collection" ]]; then
path_documentation="${HOME}/collection"
elif [[ -n "${path_repositories}" ]] && [[ -d "${path_repositories}/collection" ]]; then
path_documentation="${path_repositories}/collection"
fi
# start dummy session to avoid error messages on `has-session`
tmux new-session -d -s "${dummy_session}"
# dont forget the '-d' option, otherwise the session is closed
# before the rest of the commands are executed
tmux new-session -d -s "${default_session}" -n "${temp_window}" -c "${HOME}" # create dummy window to set default path for new windows
tmux new-window -t "${default_session}" -n "dotfiles" -c "${path_dotfiles}"
tmux new-window -t "${default_session}" -n "docs" -c "${path_documentation}"
tmux new-window -t "${default_session}" -n "stuff" -c "${HOME}"
tmux kill-window -t "${temp_window}"
## NOTE: this causes the script to exit only, when the session is ended
## or detached.
## it also causes tmux's detach command with hang up signal to fail,
## therefore the following line is commented out and an `alias` is
## created in `.bashrc`, which runs this script and `tmux attach`
#tmux attach -t "${DEFAULT_SESSION}"
tmux kill-session -t "${dummy_session}"
}
create_default_session