From 943c8b0392171aa00f9d489340f763d0eed99c4a Mon Sep 17 00:00:00 2001 From: quak Date: Sat, 4 Jan 2025 10:06:03 +0100 Subject: [PATCH] fixed tmux start script `default-tmux-session` changed tmux keymaps for pane splitting to start pane in the same directory --- misc/scripts/default-tmux-session | 38 +++++++++++++++++++------------ tmux/.config/tmux/keymaps.conf | 4 ++-- tmux/.config/tmux/tmux.conf | 3 +++ 3 files changed, 28 insertions(+), 17 deletions(-) diff --git a/misc/scripts/default-tmux-session b/misc/scripts/default-tmux-session index 3d50d56..1e6b0ff 100755 --- a/misc/scripts/default-tmux-session +++ b/misc/scripts/default-tmux-session @@ -1,23 +1,31 @@ #!/usr/bin/env bash -SESSION='quak' -# dont forget the '-d' option, otherwise the rest of -# the commands will get executed after the session is closed +DEFAULT_SESSION='quak' +DUMMY_SESSION='dummy' -if $(tmux has-session -t ${SESSION}); then - echo "default session ${SESSION} already exists" +# start dummy session to avoid error messages on `has-session` +tmux new-session -d -s "$DUMMY_SESSION" - # return 1 to report error and abort the `dmux` alias - return 1 +# 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 - tmux new-session -d -s "$SESSION" -n "temp" - tmux new-window -t "$SESSION" -n "dotfiles" -c $HOME/dotfiles - tmux new-window -t "$SESSION" -n "docs" -c $HOME/collection - tmux new-window -t "$SESSION" -n "stuff" -c $HOME - tmux kill-window -t "temp" + # 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 "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" # this causes the script to exit only, when the session is ended or detached - # it also causes the tmux detach command with hang up signal to fail - # therefore the following line is commented out and an alias setup in .bashrc - #tmux attach -t "$SESSION" + # 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" diff --git a/tmux/.config/tmux/keymaps.conf b/tmux/.config/tmux/keymaps.conf index 3c12eb0..c3c8748 100644 --- a/tmux/.config/tmux/keymaps.conf +++ b/tmux/.config/tmux/keymaps.conf @@ -26,8 +26,8 @@ unbind x bind x kill-pane -t +0 # keymaps for splitting -bind v split-pane -v -bind h split-pane -h +bind v split-pane -v -c "#{pane_current_path}" +bind h split-pane -h -c "#{pane_current_path}" bind b break-pane unbind t bind t command-prompt -p "move pane to window:" "join-pane -t '%%'" diff --git a/tmux/.config/tmux/tmux.conf b/tmux/.config/tmux/tmux.conf index d7680f2..92c9d48 100644 --- a/tmux/.config/tmux/tmux.conf +++ b/tmux/.config/tmux/tmux.conf @@ -2,6 +2,9 @@ # use interactive shell instead of login shell set-option -g default-command "/bin/bash" +# .. +set-option -s exit-unattached off + # enable rgb colors set-option -sa terminal-features ',xterm-256color:RGB'