Adicionando formatação condicional à linha de status na tela GNU

2

Na tela GNU no status, é possível colocar coisas condicionais, como

%?%F%{+b r}%:%{+b b}%?

% F é o teste; se verdadeiro, ele ativa a formatação em negrito em vermelho% {+ b r}, enquanto, se for falso, ele fica em negrito com formatação em azul% {+ b b}.

Declarações condicionais como essa com% F (que testa o foco) são as únicas que vi em exemplos de arquivos .screenrc ou no manual de tela.

Quais outras declarações condicionais podem ser usadas? O manual diz:
"a parte para a próxima '%?' é exibido somente se um escape '%' dentro da parte se expande para uma string não vazia " o que é um pouco confuso. Por exemplo, posso alterar a cor dependendo da hora do dia ou do dia da semana?

Obrigado

    
por simonb 11.11.2010 / 02:00

1 resposta

2

Crie um script que produza algo quando a condição for verdadeira. Este exemplo produzirá um espaço quando o horário estiver entre 9:00 e 16:59.

#!/bin/bash
time=$(date +%H)
if (( time >= 9 && time <= 16 ))
then
    echo " "
fi

Salve este script. Vamos chamar de "screenbtdaytime". Além disso, faça chmod u+x screenbtdaytime (ou +x sem o u para torná-lo universalmente executável).

Para demonstrar isso, use essa linha em vez do if acima, para que a alteração ocorra a cada 10 segundos, para que você não precise esperar o dia todo para ver o efeito:

if (( $(date +%s) / 10 % 2 ))    # temporary for demo

Agora, em screen , pressione Ctrl-a e : para ativar o prompt de comando e digitar esses dois comandos:

backtick 1 0 1 /path/to/screenbttime
caption always "%?%{+b by}%1'%:%{+b yb} %?%C | %D, %M %d, %Y"

Você pode usar hardstatus em vez de caption , se preferir, acredito.

A alteração de 0 para 60 no comando backtick fará com que as atualizações aconteçam uma vez por minuto, e não na taxa padrão.

Isso atribui o script ao comando backtick 1 (o primeiro "1") que é usado na legenda em que você vê %1' . Você pode ter outros comandos associados a outros números para que você possa ter várias coisas acontecendo.

Como o script gera um espaço durante o tempo designado, ele aciona o condicional %? , que é definido para emitir códigos de cores para texto azul em um plano de fundo amarelo. A parte "else" ( %: ) é executada quando não há saída do script e as cores são amarelas em um plano de fundo azul. Um espaço extra é adicionado no "else" para corresponder visualmente àquele que é exibido como a saída do script.

    
por 11.11.2010 / 03:36