Как изменить цвет текста Conky через файл / скрипт?

3397
Trevor

У меня есть файл, который содержит одно слово, «зеленый», «желтый» или «красный» (этот файл обновляется с помощью задания cron.

Я хотел бы использовать этот цвет для отображения текста в Conky. Фактический текст останется прежним, но цвет будет обновляться в зависимости от этого файла. Кто-нибудь знает, как сделать эту работу? Спасибо!

1

2 ответа на вопрос

2
micke

Создайте bash-скрипт, который выводит $:

#!/bin/bash  read -r </path/to/color-file color echo -n '$' 

И запустить его в conky (каждые 10 секунд):

$ Цветной текст здесь

Нечто подобное $}может также работать.

Вот альтернативная строка # 4 для вашего скрипта, которая будет работать даже в том случае, если ваш цветной файл содержит какой-то мусор (например, управляющие символы) за пределами 1-й строки по какой-то причине: `awk 'NR == 1 ' color-file`. Я бы всегда избегал `cat` в этих случаях, потому что всегда рискованно слепо предполагать, что файл будет содержать только одну аккуратную строку. Пустая строка после первой строки может вызвать проблемы. syntaxerror 9 лет назад 0
Вы правы @syntaxerror Я отредактировал ответ, а также обновил bash-скрипт micke 9 лет назад 0
Теперь выглядит неплохо, спасибо за быстрое обновление ... за исключением того, что я все еще не уверен, что это будет работать в Conky * без * первого `$` в строке `echo`, экранированного обратной косой чертой. Конки всегда разборчив в этих вещах. :) Хотя я могу ошибаться. syntaxerror 9 лет назад 0
Нет, это круто Нет необходимости убегать внутри одинарных кавычек. micke 9 лет назад 0
0
DRAD

Обратите внимание, что вам понадобится execp или execpi, чтобы выполнить вышеизложенное, поскольку exec и execi не анализируют выходные данные скрипта.

execp: выполняет команду оболочки и отображает вывод в conky. Предупреждение: это занимает намного больше ресурсов, чем другие переменные. Я бы порекомендовал написать код поведения на C и опубликовать патч. Это отличается от $ exec тем, что он анализирует выходные данные команды, поэтому вы можете вставить в ваш скрипт такие вещи, как $ hi! $, и Conky правильно его проанализирует. Предостережения: Conky анализирует и оценивает выходные данные $ execp каждый раз, когда Conky делает цикл, а затем уничтожает все объекты. Если вы попытаетесь использовать что-то вроде $ execi в операторе $ execp, оно будет функционально выполняться с тем же интервалом, что и оператор $ execp, так как он создается и уничтожается через каждый интервал.

Это также работает с простым катанием файла, такого как:

$ 

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