#!/usr/bin/env bash DEFAULT_SESSION='quak' DUMMY_SESSION='dummy' # start dummy session to avoid error messages on `has-session` tmux new-session -d -s "$DUMMY_SESSION" # 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 echo "default session <${DEFAULT_SESSION}> already exists" # no action needed if the session exists, the attach command is run externally else # 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" -c "$HOME" # create dummy window to set default path for new windows tmux new-window -t "$DEFAULT_SESSION" -n "dotfiles" -c "$HOME/dotfiles" tmux new-window -t "$DEFAULT_SESSION" -n "docs" -c "$HOME/collection" tmux new-window -t "$DEFAULT_SESSION" -n "stuff" -c "$HOME" tmux kill-window -t "temp" # 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 # an `alias` is created in `.bashrc` which calls this script and runs # `tmux attach` on successful execution #tmux attach -t "$DEFAULT_SESSION" fi tmux kill-session -t "$DUMMY_SESSION"