Kann ich tmux so einstellen, dass nach Abschluss eines Prozesses eine Warnung in einem nicht aktiven Fenster ausgelöst wird?
Zum Beispiel: Ich starte einen langen Build-Prozess. Ich möchte benachrichtigt werden, wenn es abgeschlossen ist, nicht jedes Mal, wenn es einen Status druckt.
Da gibt es 3 Lösungen die ich kenne, keine wirklich ideal. Sie können diese Befehle in Ihre ~/.tmux.conf
setzen oder sie direkt als Tmux-Befehl über Strg-B :
ausführen.
Überwachen und alarmieren, wenn sich die Ausgabe ändert (Sie können dann die Ausgabe an anderer Stelle umleiten, so dass sich die Ausgabe erst ändert, wenn der Befehl abgeschlossen ist):
%Vor%Überwachen und alarmieren, wann immer sich die Ausgabe nicht geändert hat (30 Sekunden hier):
%Vor% ( veraltet und eines Tages durch eine bessere Option ersetzt ) Überwachen und alarmieren Sie bewer Die Ausgabe enthält eine Zeichenfolge, die einem bestimmten Muster entspricht (und möglicherweise Ihren Befehl wie my-command; echo foobar
ausführen):
$ some-command; tmux display-message "Task 1 done"
. Die Nachricht wird jedoch nur für eine kurze Dauer angezeigt, die über :set -g display-time 4000
definiert wurde.
Wenn Sie visual-*
auf off
(Standard) beibehalten, wird nur der Name des Fensters hervorgehoben, in dem die Warnung aufgetreten ist, ohne dass eine globale Warnmeldung angezeigt wird.
Weitere Informationen zu diesen Einstellungen finden Sie in der tmux man-Seite
Ich bin überrascht, dass diese Antwort noch nicht gegeben wurde: Sie können dafür die tmux-Fenstereinstellung visual-bell
verwenden. Mit bell-action
können Sie dann konfigurieren, ob Sie Glocken nur für das aktuelle Fenster oder nur für das nicht aktuelle Fenster (andere) anzeigen möchten. Persönlich bevorzuge ich die Sekunde, da Sie kein von der Shell erzeugtes Rauschen sehen werden, und Sie interessieren sich wahrscheinlich nicht für die Benachrichtigung, wenn sie sich im aktuellen Fenster befindet.
Wenn ein Prozess eine Glocke erzeugt, wird tmux den Titel des Fensters, das die Glocke läutet, sowie eine "Glocke im Fenster X" Benachrichtigung anzeigen.
Dann klingeln Sie am Ende des Vorgangs. Zum Beispiel:
%Vor% (oder &&
||
anstelle von ;
, wenn Sie nur bei Erfolg oder Misserfolg jeweils klingeln möchten)
Sie können Ihr laufendes Skript mit einem & amp; & amp; Bash-Derivat, das einen tmux-Befehl aufruft, um Sie zu benachrichtigen. Verwenden von & amp; & amp; bedeutet, dass Sie nur benachrichtigt werden, wenn das Skript mit Fehlercode 0 beendet wird. Wenn Sie möchten, dass es Sie trotzdem benachrichtigt, verwenden Sie einfach;
Wie bei den tmux-Befehlen, die das Skript umhüllen sollen, schauen Sie sich diese Bündel an, sie sollten ausreichen Auswahlfenster Split-Fenster -h 'Exec Echo ...' send-keys
Ich habe endlich eine Lösung gefunden, die für mich funktioniert. Ich verwende zsh
für meine Shell, die ein Feature namens "Hook Functions" hat - Shell-Funktionen, die bei bestimmten Aktionen ausgeführt werden: Ссылка .
Es ist wahrscheinlich, dass andere Shells eine ähnliche Funktion haben.
Die von mir verwendete Hook-Funktion ist precmd
, die jedes Mal ausgeführt wird, wenn die Eingabeaufforderung angezeigt wird. dh wenn ein Befehl gerade beendet wurde.
In meinem .zshrc
:
Dies sendet eine Glocke an tmux
, was dazu führt, dass nur das Fenster hervorgehoben wird, in dem der Befehl ausgeführt wurde.
Wenn Sie sich bereits auf dieses tmux
-Fenster konzentriert haben, geschieht dies nicht, weil die Glocke sofort gelöscht wird.
Der Vorteil dieses Ansatzes besteht darin, dass er nicht auf alle visuellen Aktivitäten ausgelöst wird. Es wird nur ausgelöst, wenn ein Befehl abgeschlossen ist.
Tags und Links tmux