I wrote this handy shell script to fuzzy find my projects and auto attach them to a new tmux session. It is minimal and it works!
#!/usr/bin/env sh # define the fzf command: ./.fzfdir.sh pet # syntax: ./.fzfdir.sh <working_directory> # note: I have base_dir as ~/projects # FZF_COMMAND="fzf-tmux" FZF_COMMAND="fzf-tmux -p --with-nth 1" # find in directories workdir=$1 base_dir=~/projects find_dir=$base_dir/$1 # execute command RESULT=$(ls $find_dir | $FZF_COMMAND) # create a new tmux session and attach to it window_name=$RESULT session_name="neymarsabin/$window_name" workdir=$find_dir/$RESULT send_command="cd $workdir" if ! tmux has-session -t $session_name 2>/dev/null; then ## create new session, provide SESSION and WINDOW name new_session=$(TMUX= tmux new-session -A -d -s $session_name -n $window_name) ## switch and cd into project tmux switch-client -t $session_name tmux send-keys -t $session_name:$window_name "$send_command; clear" C-m else tmux switch-client -t $session_name fi
And, let's bind this to a keybinding in tmux.
bind-key "t" run "~/.fzfdir.sh oss"
You can modify the shell script to your use case. You can checkout the implementation at: https://github.com/neymarsabin/dotfiles_reloaded/blob/trail/scripts/fzfdir.sh
Top comments (0)