56 lines
1.5 KiB
Bash
56 lines
1.5 KiB
Bash
|
#!/usr/bin/env bash
|
||
|
|
||
|
###############################################################
|
||
|
# Tmuxinator FZF Start
|
||
|
###############################################################
|
||
|
#
|
||
|
# Uses fzf to provide a selection list for tmuxinator projects.
|
||
|
#
|
||
|
# Overview:
|
||
|
#
|
||
|
# tmuxinator-fzf-start.sh will open fzf with a multi select
|
||
|
# list of tmuxinator projects. Upon selecting project/s each
|
||
|
# project will have `tmuxinator start` run, and when complete
|
||
|
# tmux will be attached, or if tmux is already running, a
|
||
|
# session selection interface will be provided.
|
||
|
#
|
||
|
# If an initial query is provided, and only one match results,
|
||
|
# the project will be automatically opened without user input.
|
||
|
#
|
||
|
# Usage:
|
||
|
#
|
||
|
# tmuxinator-fzf-start.sh
|
||
|
# tmuxinator-fzf-start.sh "Query"
|
||
|
#
|
||
|
# Expectations:
|
||
|
#
|
||
|
# - tmuxinator is on $PATH
|
||
|
# - fzf is on $PATH
|
||
|
# - tmux is on $PATH
|
||
|
|
||
|
# Allow the user to select projects via fzf
|
||
|
SELECTED_PROJECTS=$(tmuxinator list -n |
|
||
|
tail -n +2 |
|
||
|
fzf --prompt="Project: " -m -1 -q "$1")
|
||
|
|
||
|
if [ -n "$SELECTED_PROJECTS" ]; then
|
||
|
# Set the IFS to \n to iterate over \n delimited projects
|
||
|
IFS=$'\n'
|
||
|
|
||
|
# Start each project without attaching
|
||
|
for PROJECT in $SELECTED_PROJECTS; do
|
||
|
tmuxinator start "$PROJECT" --no-attach # force disable attaching
|
||
|
done
|
||
|
|
||
|
# If inside tmux then select session to switch, otherwise just attach
|
||
|
if [ -n "$TMUX" ]; then
|
||
|
SESSION=$(tmux list-sessions -F "#S" | fzf --prompt="Session: ")
|
||
|
if [ -n "$SESSION" ]; then
|
||
|
tmux switch-client -t "$SESSION"
|
||
|
fi
|
||
|
else
|
||
|
tmux attach-session
|
||
|
fi
|
||
|
fi
|
||
|
|