Ответ 1
Если вы явно не укажете "on" или "off", опция будет переключена. Достаточно следующего:
bind a set-window-option synchronize-panes
Это немного моего tmux.conf
cat tmux.conf
...
bind a set-window-option synchronize-panes on
bind b set-window-option synchronize-panes off
Как вы можете видеть, параметры синхронизации и несинхронизации для панелей привязаны к двум различным ключам. Можно ли переключать синхронизацию/несинхронизм с одним и тем же ключом?
Если вы явно не укажете "on" или "off", опция будет переключена. Достаточно следующего:
bind a set-window-option synchronize-panes
Это должно быть возможно с комбинацией run-shell
и tmux show-option
, что-то вроде (проверено в tmux 2.3):
bind a run-shell "if [[ `tmux show-options -w | grep 'synchronize-panes.*on'` ]]; then toggle=off; else export toggle=on; fi; tmux display-message \"sync panes tmux: \$toggle\"; tmux set-option -w synchronize-panes \$toggle &> /dev/null"
(это вариант переключения режима мыши, найденного в список рассылки пользователей TMux)
Tmux не включает это по умолчанию. Это можно сделать, написав script, но это не тривиально.
Более общее решение, основанное на ответе Фрэнка Шмитта:
!/usr/bin/bash
USAGE="USAGE: $0 OPTION_NAME ON_STATE OFF_STATE"
OPTION_NAME=$1
ON_STATE=$2
OFF_STATE=$3
if [[ "$#" != 3 ]]; then
echo $USAGE
exit 1
fi
if [[ `tmux show-option -w | grep "$OPTION_NAME $ON_STATE"` ]]; then
OPTION_VALUE=$OFF_STATE
else
OPTION_VALUE=$ON_STATE
fi
tmux display-message "monitor activity: $OPTION_NAME $OPTION_VALUE"
tmux set-option -w $OPTION_NAME $OPTION_VALUE > /dev/null
script берет имя опции, значение включения и значение выключения. Не очень хорошо протестирован, но работает для простых случаев, таких как:
PATH_TO_SCRIPT_ABOVE monitor-activity on off
В вашем .tmux.conf:
bind-key <SOME_KEY> run-shell "tmux_toggle_option monitor-activity on off"