Добрый вечер,
Я довольно плохо знаком с Unix поэтому, возможно, этот мини-проект слишком амбициозен. Надеясь кто-то мог указать в в правильном направлении.
При работе в кабине и я не вижу, насколько легкий это снаружи. В целом я использую желтый терминал, утром (солнечный) и черное/зеленое прошлое 3:00 (ночь).
Что я хотел бы сделать (частично только для осуществления моего удара). Должен записать сценарий, который в 3:00 изменит цвет всех моих терминалов. Если это будет работать, возможно, то я заставлю их изменяться каждый час или что-то как этот. Это было бы безопасно? Действительно ли это возможно?
Вот некоторые мои спецификации: Солярис 10 Gnome оболочки Bash
Я смотрю на это прямо сейчас: тема терминала Gnome Изменения программно
Если бы я делал это, я бы начал с Prompt_command . Bash запустит этот скрипт непосредственно перед отображением подсказки.
У вас есть пара вариантов. У вас может быть сам скрипт в Appment_command:
PROMPT_COMMAND='if [ is_morning ]; then echo "MORNING_COLORS'; else echo "EVENING_COLORS"; fi
или вы могли бы иметь Prompt_command запустить внешнюю команду (которая также может быть сценарием Bash, или вы могли бы использовать другой язык, если вы хотите) сделать всю работу там:
PROMPT_COMMAND=/path/to/setcolor_timeofday
Единственная дыра, которую я вижу в этом, так это то, что если у вас есть программа, работающая, когда время меняется (например, с использованием хвоста
, чтобы посмотреть файл), фон не изменится, пока вы не вернетесь к подсказка Bash.
Изменение оболочки переднего плана и цветов фона через PS1 в Bash будет самым простым, как указано другими здесь. Подход Сэмюэля Клачачко с Approw_Command, вероятно, самый универсальный. Однако это имеет недостатки. Bash может использовать только «тусклые» цвета фона, а цвета на переднем плане / фона могут быть переопределены любым приложением. Изменение темы терминала GNOME программно, особенно в реальном времени, будет гораздо сложнее, но произведет много красивых результатов.
Используйте cron, это Unix-планировщик заданий. И установите его на выполнение команды, которая изменяет .bashrc, как в вопросе, который вы связывали. Проблема в том, что он будет работать только для новых терминалов, если у вас есть несколько открытых, он их не изменит.