Created
February 2, 2022 13:51
-
-
Save vrinek/dc401714ad8e8212d49b13bce422432a to your computer and use it in GitHub Desktop.
Fish function to run multiple commands in parallel
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
argparse "n/name=" "c/commands=+" -- $argv | |
or return | |
set n (count $_flag_commands) | |
tmux has-session -t "$_flag_name" | |
if test "$status" -eq "0" | |
echo "tmux session already exists for $_flag_name, maybe still running?" | |
echo "Try `tmux new -As $_flag_name` to attach to it." | |
return 1 | |
end | |
tmux new-session -ds "$_flag_name" -x $COLUMNS -y $LINES | |
# Split the first pane into many | |
for i in (seq 2 $n) | |
tmux split-window -t "$_flag_name" | |
end | |
# Even out tiles horizontally and vertically | |
tmux select-layout -t "$_flag_name":0.0 tiled | |
for i in (seq $n) | |
set pane (math $i-1) | |
tmux send-keys -t "$_flag_name":0."$pane" "fish -c \"$_flag_commands[$i] && exit\" && exit" Enter | |
end | |
tmux attach-session -t "$_flag_name" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment