Ich möchte, dass der Name eines Programms (eine Zeichenfolge, nicht der tatsächliche Name) in der Tmux-Statusleiste angezeigt wird, wenn das Programm ausgeführt wird.
Das hier habe ich in meinem set -g status-right
:
#{?#{!=:#(getPid p),0},program,}
Wo:
#(getPid p)
ist das Skript, das ich ausführe. Es gibt 0 zurück, wenn das Programm nicht läuft, oder nicht 0 (eine PID oder wc -l), andernfalls#{!=:#(getPid p),program,}
sollte 1 oder 0 zurückgeben, abhängig vom Ergebnis des vorherigen Schritts#{?#{!=:#(getPid p),0},program,}
sollte "Programm" ausgeben, wenn der vorherige Schritt 1 zurückgibt
Aber ich kann nicht einmal 1 oder 0 mit nur dem ersten Schritt drucken #{!=:#(getPid p),0}
. Ich bin nicht sicher, ob dies unterstützt wird, vielleicht #{}
werden nur Flags für Bedingungen unterstützt, nicht#()
BEARBEITEN
Ich bin auf #(getPid p | awk '$0 != 0 {print \"program\"}')
das eingestellt, was einfacher erscheint, aber es geht trotzdem nicht.
BEARBEITEN
Ein anderer Ansatz, der auch in der Befehlszeile funktioniert:, if [ $(getPid b) != 0 ]; then echo program; fi
immer noch nichts in der Statusleiste.
BEARBEITEN
Ich habe beschlossen, dass mein Skript den Programmnamen wiedergibt, sodass ich nur noch brauche #(getPid p)
, aber trotzdem geht es nicht. Ich denke, das Problem liegt wahrscheinlich woanders. Dies ist die vollständige Zeile:
set -g status-right "#(getName p) |#[fg=colour239,bg=colour236,nobold,nounderscore,noitalics]#[fg=colour253,bg=colour239] %Y-%m-%d | %H:%M #[fg=colour103,bg=colour239,nobold,nounderscore,noitalics]#[fg=colour236,bg=colour103]"
Antwort1
Verstanden, mein getName
Skript muss echo -n
stattdessen, aber natürlich muss noch die Aktualisierung durchgeführt werden.