diff --git a/.local/bin/tmux-sessionizer b/.local/bin/tmux-sessionizer new file mode 100755 index 0000000..aa70e71 --- /dev/null +++ b/.local/bin/tmux-sessionizer @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +if [[ $# -eq 1 ]]; then + selected=$1 +else + selected=$(find ~/code -mindepth 1 -maxdepth 1 -type d | fzf) +fi + +if [[ -z $selected ]]; then + exit 0 +fi + +selected_name=$(basename "$selected" | tr . _) +tmux_running=$(pgrep tmux) + +if [[ -z $TMUX ]] && [[ -z $tmux_running ]]; then + tmux new-session -s $selected_name -c $selected + exit 0 +fi + +if ! tmux has-session -t=$selected_name 2>/dev/null; then + tmux new-session -ds $selected_name -c $selected +fi + +if [[ -z $TMUX ]]; then + tmux attach -t $selected_name +else + tmux switch-client -t $selected_name +fi diff --git a/.tmux.conf b/.tmux.conf index 2e41fd7..332cc7a 100644 --- a/.tmux.conf +++ b/.tmux.conf @@ -13,6 +13,7 @@ bind | split-window -h bind - split-window -v unbind '"' unbind % +bind-key -r f run-shell "tmux neww ~/.local/bin/tmux-sessionizer" # reload config file (change file location to your the tmux.conf you want to use) bind r source-file ~/.tmux.conf \; display 'Reloaded tmux config!' diff --git a/.zshrc b/.zshrc index 5b2cfc4..71e2358 100644 --- a/.zshrc +++ b/.zshrc @@ -47,6 +47,8 @@ if [ -f $HOME/.local/bin/mise ]; then eval "$($HOME/.local/bin/mise activate zsh)" fi +bindkey -s ^f "tmux-sessionizer\n" + source ~/.aliases fpath+=~/.zfunc autoload -U compinit; compinit -d