Quiero que el nombre de un programa (una cadena, no el nombre real) aparezca en la barra de estado de tmux si ese programa se está ejecutando.
Esto es lo que tengo en mi set -g status-right
:
#{?#{!=:#(getPid p),0},program,}
Dónde:
#(getPid p)
es el script que estoy ejecutando, que devuelve 0 si el programa no se está ejecutando o no 0 (un PID o wc -l) en caso contrario#{!=:#(getPid p),program,}
debe devolver 1 o 0 dependiendo del resultado del paso anterior#{?#{!=:#(getPid p),0},program,}
debería imprimir "programa" si el paso anterior devuelve 1
Pero ni siquiera puedo imprimir 1 o 0 con solo el primer paso #{!=:#(getPid p),0}
. No estoy seguro de si esto es compatible, tal vez solo #{}
se admitan indicadores en condicionales, no#()
EDITAR
Estoy decidido a #(getPid p | awk '$0 != 0 {print \"program\"}')
lo que parece más simple, pero todavía no lo puedo hacer.
EDITAR
Otro enfoque que también funciona en la línea de comandos: if [ $(getPid b) != 0 ]; then echo program; fi
todavía no hay nada en la barra de estado.
EDITAR
Decidí hacer que mi script hiciera eco del nombre del programa, así que todo lo que necesito es #(getPid p)
, pero todavía no puedo. Creo que el problema probablemente esté en otra parte. Esta es la línea completa:
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]"
Respuesta1
Entendido, mi getName
script debe echo -n
hacerlo, pero, por supuesto, está la cuestión de la actualización.