#!/bin/sh
#
#    tmux-send-command-to-all-panes
#    Copyright (C) 2014 Dustin Kirkland
#
#    Authors: Dustin Kirkland <kirkland@byobu.org>
#
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, version 3 of the License.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.

# Read command from the tmux paste buffer (set by the S-F9 keybinding via
# set-buffer "%%").  This avoids shell-quoting the user's text entirely,
# so single quotes, dollar signs, and semicolons all pass through correctly.
# Fall back to $@ for callers that still pass the command as arguments.
if [ $# -gt 0 ]; then
	_cmd="$*"
else
	_cmd=$(tmux show-buffer 2>/dev/null) || true
fi
[ -z "$_cmd" ] && exit 0
w=$(tmux list-windows | grep "\*" | awk -F: '{print $1}')
for p in $(tmux list-panes | $BYOBU_SED -e "s/:.*//"); do
	tmux send-keys -l -t $w.$p "$_cmd" || true
	tmux send-keys -t $w.$p Enter || true
done
unset _cmd
