tmux: найди окно "my", проверь, активно ли оно

731
user3594846

Я хочу найти способ, чтобы программа могла найти следующую информацию:

1) В каком окне я работаю?

2) Это окно - активное окно?

Идея в том, что в такой программе, как WeeChat, я переключаюсь в другое окно и работаю над чем-то. Когда я отключаюсь, я хочу запустить 'set_unread_current_buffer' - поэтому, когда я вернусь в это окно, у WeeChat будет строка после моих последних прочитанных сообщений.

Есть некоторые плагины WeeChat, но они выясняют, к какому сеансу присоединен WeeChat и подключен ли этот сеанс в настоящее время, и соответствующим образом устанавливают статус / отсутствующий.

Я ищу что-то подобное, но когда я меняю окна и просто запускаю 'set_unread_current_buffer' вместо / away

1

1 ответ на вопрос

2
Chris Johnsen

If you are running commands inside a tmux pane, then you can use the TMUX_PANE environment variable* to target the “containing” pane.

To identify the “containing” window:

tmux display-message -pt "$TMUX_PANE" '#:#' 

Or, depending on your needs, you might like to use window_id. The man page has a list of other format variables. For example, when run inside a pane, this command

tmux display-message -pt "$TMUX_PANE" '#' 

will output 1 if the pane’s window is active or 0 otherwise.

You might use pane_active if you care whether the specific pane is active.

If you want to check on some other pane, you will need to supply your own target-pane identifier (like sess:win.0).


* tmux 1.5 and later sets TMUX_PANE for the pane to a unique value when starting its initial command; other programs run via this initial program will generally inherit this environment variable.