tmux: Finde "mein" Fenster und überprüfe, ob es aktiv ist

909
user3594846

Ich möchte einen Weg finden, wie ein Programm die folgenden Informationen finden kann:

1) In welchem ​​Fenster renne ich?

2) Ist das Fenster das aktive Fenster?

Die Idee ist, in einem Programm wie WeeChat werde ich zu einem anderen Fenster wechseln und an etwas arbeiten. Beim Wechseln möchte ich 'set_unread_current_buffer' ausführen. Wenn ich zu diesem Fenster zurückkehre, wird WeeChat nach meinen letzten gelesenen Nachrichten eine Zeile haben.

Es gibt einige WeeChat-Plugins, aber sie erfahren, an welche Sitzung WeeChat angehängt ist und ob diese Sitzung aktuell angeschlossen ist oder nicht, und setzt den / away-Status entsprechend.

Ich suche nach etwas Ähnlichem, aber wenn ich Fenster ändere, und set_unread_current_buffer anstelle von / away ausführen

1

1 Antwort auf die Frage

2
Chris Johnsen

Wenn Sie Befehle innerhalb eines tmux-Bereichs ausführen, können Sie die Umgebungsvariable * TMUX_PANE * verwenden, um auf den "enthaltenden" Bereich zu zielen.

So identifizieren Sie das "enthaltende" Fenster:

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

Oder, je nach Ihren Bedürfnissen, möchten Sie vielleicht verwenden window_id. Die Manpage enthält eine Liste anderer Formatvariablen. Bei Ausführung innerhalb eines Bereichs beispielsweise diesen Befehl

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

Wird ausgegeben, 1wenn das Fenster aktiv ist oder 0nicht.

Sie können es verwenden, pane_activewenn Sie darauf achten, ob der bestimmte Bereich aktiv ist.

Wenn Sie einen anderen Bereich überprüfen möchten, müssen Sie Ihre eigene Zielbereichskennung (wie z sess:win.0. B. ) angeben .


* tmux 1.5 und höher legt TMUX_PANEfür den Bereich einen eindeutigen Wert fest, wenn der ursprüngliche Befehl gestartet wird . Andere Programme, die über dieses ursprüngliche Programm ausgeführt werden, erben im Allgemeinen diese Umgebungsvariable.