Ceci est un peu de mon tmux.conf
cat tmux.conf
...
bind a set-window-option synchronize-panes on
bind b set-window-option synchronize-panes off
Comme vous pouvez le voir, les options de synchronisation et de désynchronisation des volets sont liées à deux clés différentes. Est-il possible de basculer la synchronisation/désynchronisation avec la même clé?
Si vous ne spécifiez pas explicitement "on" ou "off", l'option sera basculée. Les éléments suivants suffiraient:
bind-key a set-window-option synchronize-panes\; display-message "synchronize-panes is now #{?pane_synchronized,on,off}"
ne pas attacher ou désactiver. c'est basculer bind-key a set-window-option synchronize-panes
Cela devrait être possible avec une combinaison de run-Shell
et tmux show-option
, quelque chose comme (testé dans 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"
(il s'agit d'une variante d'une bascule en mode souris trouvée sur la liste de diffusion des utilisateurs TMux )
Une solution plus générique basée sur la réponse de Frank Schmitt:
!/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
Le script prend le nom de l'option, la valeur on et la valeur off. Pas très bien testé mais fonctionne pour des cas simples comme:
PATH_TO_SCRIPT_ABOVE monitor-activity on off
Dans votre .tmux.conf:
bind-key <SOME_KEY> run-Shell "tmux_toggle_option monitor-activity on off"