Não é possível encontrar uma solução real para isso, mas há uma solução alternativa se você puder viver com um espaço extra na sua linha hardstatus
: faça seu script ser executado em dois modos, com base em um argumento de linha de comando.
- No modo de verificação, faça eco de apenas um espaço quando quiser que a cor seja alterada (por exemplo, quando o disco estiver cheio).
- No modo normal, faça eco do espaço livre ou da taxa de preenchimento que você deseja exibir.
Você pode fazer algo assim em .screenrc
:
backtick 1 1 1 /tmp/script.sh check
backtick 2 1 1 /tmp/script.sh normal
hardstatus alwayslastline "%?%1'%{r}%: %?%2'"
A idéia é usar a cláusula else
( %:
) para sempre gerar o mesmo número de caracteres para que a linha de status não salte e use duas invocações do script (uma para obter a cor opcionalmente mudou, um para imprimir o valor real para exibir).
Eu testei isso com esse script, só para ter certeza de que funciona:
#! /bin/bash
secs=$(date +%s)
if [ "${1:-check}" = "check" ] ; then
if (( $secs % 2 == 0 )) ; then
echo " "
fi
exit 0
fi
echo $secs
Com isso, a linha hardstatus
fornece o tempo atual (em segundos desde 01/01/1970, muito prático ...) em vermelho para segundos pares, ou em cores normais para segundos ímpares.