tmux: найди окно "my", проверь, активно ли оно
Я хочу найти способ, чтобы программа могла найти следующую информацию:
1) В каком окне я работаю?
2) Это окно - активное окно?
Идея в том, что в такой программе, как WeeChat, я переключаюсь в другое окно и работаю над чем-то. Когда я выключаюсь, я хочу запустить 'set_unread_current_buffer' - поэтому, когда я вернусь в это окно, у WeeChat будет строка после моих последних прочитанных сообщений.
Существуют некоторые плагины WeeChat, но они выясняют, к какому сеансу присоединен WeeChat и подключен ли этот сеанс в настоящее время, и соответствующим образом устанавливают статус / отсутствующий.
Я ищу что-то подобное, но когда я меняю окна и просто запускаю 'set_unread_current_buffer' вместо /away
1 ответ
Если вы выполняете команды внутри панели tmux , то вы можете использовать переменную окружения TMUX_PANE *, чтобы указать на "содержащую" панель.
Чтобы определить "содержащее" окно:
tmux display-message -pt "$TMUX_PANE" '#{session_name}:#{window_index}'
Или, в зависимости от ваших потребностей, вы можете использовать window_id
, Страница man содержит список других переменных формата. Например, при запуске внутри панели эта команда
tmux display-message -pt "$TMUX_PANE" '#{window_active}'
будет выводить 1
если окно панели активно или 0
иначе.
Вы могли бы использовать pane_active
если вам важно, активна ли конкретная панель.
Если вы хотите проверить какую-либо другую панель, вам нужно будет указать собственный идентификатор целевой панели (например, sess:win.0
).
* tmux 1.5 и более поздние комплекты TMUX_PANE
для панели с уникальным значением при запуске своей начальной команды; другие программы, запускаемые через эту исходную программу, обычно наследуют эту переменную среды.