Мини-проект: изменение цвета терминала в зависимости от времени суток - PullRequest
7 голосов
/ 28 января 2010

Добрый вечер,

Я довольно новичок в Unix, так что, возможно, этот мини-проект слишком амбициозен. Надеясь, что кто-то может указать в правильном направлении.

Работаю в кабине, и я не вижу, насколько светло снаружи. Вообще я использую желтый терминал утром (солнечный) и черный / зеленый после 3:00 (ночь).

Что бы я хотел сделать (частично просто попрактиковаться в своей игре). Стоит написать скрипт, который в 3:00 изменит цвет всех моих терминалов. Если это сработает, может быть, я заставлю их менять каждый час или что-то в этом роде. Это будет безопасно? Это возможно?

Вот некоторые из моих характеристик: Солярис 10 Баш оболочка Гном

Я смотрю на это прямо сейчас: Изменение темы терминала Gnome программно

Ответы [ 3 ]

4 голосов
/ 28 января 2010

Если бы я делал это, я бы начал с PROMPT_COMMAND . Bash запустит этот скрипт непосредственно перед отображением приглашения.

У вас есть несколько вариантов. Вы можете иметь скрипт внутри PROMPT_COMMAND:

PROMPT_COMMAND='if [ is_morning ]; then echo "MORNING_COLORS'; else echo "EVENING_COLORS"; fi

Или вы можете заставить PROMPT_COMMAND выполнить внешнюю команду (которая также может быть скриптом bash или вы можете использовать другой язык, если хотите), чтобы выполнить всю работу там:

PROMPT_COMMAND=/path/to/setcolor_timeofday

Единственная дыра, которую я вижу в этом, заключается в том, что если у вас есть программа, работающая при изменении времени (например, с помощью tail -f для просмотра файла), фон не изменится, пока вы не вернетесь в приглашение bash .

2 голосов
/ 28 января 2010

Изменение цвета переднего плана и фона оболочки с помощью PS1 в bash будет самым легким, как указали здесь другие. Подход R Samuel Klatchko с PROMPT_COMMAND, вероятно, самый универсальный. Однако это имеет недостатки. Bash может использовать только «скучные» цвета фона, и его цвета переднего плана / фона могут быть переопределены любым приложением. Модифицировать тему терминала Gnome программно, особенно в режиме реального времени, будет гораздо сложнее, но результаты будут намного красивее.

0 голосов
/ 28 января 2010

Используйте cron , это планировщик заданий Unix. И установите его для запуска команды, которая меняет .bashrc, как в вопросе, который вы связали. Проблема в том, что он будет работать только для новых терминалов, если у вас есть некоторые открытые, он не изменит их.

...