Exibir uma sequência no status tmux, dependendo da saída do comando


2

Quero que o nome de um programa (uma string, não o nome real) seja exibido na barra de status do tmux, se esse programa estiver em execução.

Isto é 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 estiver 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 o passo anterior retornar 1

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

EDITAR

Eu sou o #(getPid p | awk '$0 != 0 {print \"program\"}')que parece mais simples, mas ainda assim não posso .

EDITAR

Outra abordagem que também funciona na linha de comando:, if [ $(getPid b) != 0 ]; then echo program; fiainda 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 é possível. Eu acho que o problema provavelmente está 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]"

Respostas:


0

Entendi, meu getNamescript deve echo -n, em vez disso, mas é claro que há a questão da atualização.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.