55 lines
1.5 KiB
Bash
Executable file
55 lines
1.5 KiB
Bash
Executable file
#!/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
|
|
|