Добавление условного форматирования к строке состояния на экране GNU

На экране GNU в состоянии возможно поместить условные вещи, такой как

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

%F является тестом; если верный это включает полужирный красный % форматирования {+b r}, тогда как, если ложь это включает полужирный синий % форматирования {+b b}.

Условные операторы как это с %F (который тестирует на фокус) являются единственными, которые я видел в примерах .screenrc файлов или в экранном руководстве.

Что могут использоваться другие условные операторы? В руководстве говорится:
"часть к следующему '%?' отображен, только если Escape '%' в части расширяется до непустой строки", которая немного сбивает с толку. Я могу, например, изменить цвет в зависимости от времени суток или дня недели?

Спасибо

2
задан 11.11.2010, 03:46

1 ответ

Создайте сценарий, который производит что-то, когда условие верно. Этот пример произведет пространство, когда время будет между 9:00 и 16:59.

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

Сохраните этот сценарий. Давайте назовем это "screenbtdaytime". Кроме того, сделайте chmod u+x screenbtdaytime (или +x без u сделать его универсально исполняемым).

Для демонстрации этого используйте эту строку вместо if выше так изменения происходит каждые 10 секунд, таким образом, Вы не должны ожидать весь день для наблюдения эффекта:

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

Теперь в screen нажмите Ctrl-a и: поднять командную строку и тип в этих двух командах:

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

Можно использовать hardstatus вместо caption если Вы предпочитаете, я верю.

Изменение 0 кому: 60 в backtick команда заставит обновления произойти однажды минута, а не на уровне по умолчанию.

Это присваивает сценарий команде 1 обратной галочки (первое "1"), который используется в подписи, где Вы видите %1`. Можно было связать другие команды с другими числами, таким образом, у Вас может быть несколько вещей, продолжающихся.

Так как сценарий производит пространство в течение назначенного времени, он инициировал условное выражение %? который установлен на коды цвета вывода для синего текста на желтом фоне. "Еще" часть (%:) выполняется, когда нет никакого вывода из сценария, и цвета являются желтыми на синем фоне. Дополнительное пространство включено "еще" для визуального соответствия тому, которое отображено как вывод сценария.

2
ответ дан 09.01.2020, 03:37

Теги

Похожие вопросы