Alterar cor da tela “hardstatus” dinamicamente

3

Eu mostro o espaço livre no disco rígido na tela hardstatus . Mas também quero mudar a cor desse valor quando for menor que um valor para me alertar.
Eu fiz um script que verifica isso e retorna uma string, se é verdade ou nada, se é falso.
Mas o problema é mudar a cor na tela hardstatus . Esta é a linha:

hardstatus alwayslastline "%?%27'%{+B r}%?Velocidad"

O hardstatus funciona, mas não mostro a saída da verificação de script (% 27), apenas mudo a cor. Mas %? precisa de uma string não vazia para fazer isso. Como posso fazer isso?

    
por Juan Simón 07.08.2011 / 14:44

1 resposta

4

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.

    
por 26.02.2012 / 14:57