Tmux: запретить переход на определенную панель

Я хотел бы удалить панель из выбора с помощью ctrl+b arrow-keys. Это потому, что у меня есть панель, отображающая время с помощью tmux clock-mode -t 2, и я никогда не хочу переключаться на эту панель.


person Nicky Lim    schedule 08.07.2018    source источник


Ответы (1)


Это решение похоже на проблему, на которую я ответил на дочернем сайте unix.stackexchange, и оно не идеально.

tmux имеет флаг для каждой панели, сообщающий, находится ли она в режиме. Например, display -p #{pane_in_mode} для панели в режиме часов выводит 1. К сожалению, вы не можете различить, скажем, режим копирования и режим часов. Однако, если у вас маловероятно, что одновременно будет много панелей в режиме, вы можете написать небольшой сценарий оболочки для перехвата соответствующих привязок и проверить, не попало ли результирующее движение в панель в режиме. режим. Если да, то скрипт повторяет движение, возможно, к следующему окну.

Создайте следующий файл mytmux в PATH и сделайте его исполняемым (chmod +x mytmux):

#!/bin/bash
# https://stackoverflow.com/a/51232832/5008284
noclock(){
        tmux "$@"
        inmode=$(tmux display -p '#{pane_in_mode}')
        [ "$inmode" = 1 ] && tmux "$@"
        exit 0
}
case $1 in
-noclock)shift
        : ${1?select-pane cmd and args}
        noclock "$@" ;;
esac

затем настройте следующие привязки в вашем ~/.tmux.conf:

bind-key    -T prefix o     run-shell 'mytmux -noclock select-pane -t :.+'
bind-key    -T prefix l     run-shell 'mytmux -noclock select-pane -l'
bind-key -r -T prefix Up    run-shell 'mytmux -noclock select-pane -U'
bind-key -r -T prefix Down  run-shell 'mytmux -noclock select-pane -D'
bind-key -r -T prefix Left  run-shell 'mytmux -noclock select-pane -L'
bind-key -r -T prefix Right run-shell 'mytmux -noclock select-pane -R'

Вам нужно будет расширить это, если вы хотите, например, обрабатывать несколько сеансов. Я поставил select-pane -l в привязках, но это бесполезно, так как если он будет повторяться, он просто вернется туда, откуда вы начали.

person meuh    schedule 08.07.2018