Exibe uma string no status do tmux dependendo da saída do comando

2

Eu quero que o nome de um programa (uma string, não o nome real) apareça na barra de status do tmux se esse programa estiver sendo executado.

Isso é o que eu tenho no meu set -g status-right :

#{?#{!=:#(getPid p),0},program,}

Onde:

  • #(getPid p) é o script que estou executando, que retorna 0 se o programa não está sendo executado ou não 0 (um PID ou wc -l), caso contrário
  • #{!=:#(getPid p),program,} deve retornar 1 ou 0 dependendo do resultado da etapa anterior
  • #{?#{!=:#(getPid p),0},program,} deve imprimir "programa" se a etapa anterior retornar 1

Mas não consigo nem imprimir 1 ou 0 com apenas o primeiro passo #{!=:#(getPid p),0} . Não tenho certeza se isso é suportado, talvez apenas #{} flags sejam suportados em condicionais, não #()

EDITAR

Estou com #(getPid p | awk '$0 != 0 {print \"program\"}') , o que parece mais simples, mas ainda não é possível.

EDITAR

Outra abordagem que também funciona na linha de comando: if [ $(getPid b) != 0 ]; then echo program; fi , ainda nada na barra de status.

EDITAR

Eu decidi fazer meu script ecoar o nome do programa, então tudo que eu preciso é #(getPid p) , mas ainda não vou. Eu acho que o problema é provavelmente em outro lugar. Esta é a linha 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]"
    
por vesperto 02.02.2018 / 15:02

1 resposta

0

Entendi, meu script getName deve echo -n , mas é claro que há o assunto da atualização.

    
por 16.02.2018 / 10:51

Tags