如何通过文件/脚本更改Conky文本的颜色?


1

我有一个文件,其中包含一个单词,“绿色”,“黄色”或“红色”(此文件通过cron作业更新。

我想用那种颜色在Conky中显示文字。实际文本将保持不变,但颜色将根据该文件更新。有谁知道如何使这项工作?谢谢!

Answers:


2

创建一个输出的bash脚本${color yourcolor}

#!/bin/bash

read -r </path/to/color-file color
echo -n '${color '$color'}'

然后运行它(每10秒钟):

$ {execpi 10 /path/to/script.sh}彩色文字{color}

嵌套的东西${color ${head -1 /path/to/color-file}}也可能有效。


这是你的脚本的另一行#4,如果你的颜色文件由于某种原因包含一些超出第一行的垃圾(例如控制字符),它甚至可以工作:awk 'NR==1{print}' color-filecat在这些情况下我总是避免因为盲目地认为文件只包含一条整齐的线总是有风险的。第一行后面的空行可能已经导致问题。
syntaxerror 2014年

你是对的@syntaxerror我编辑了答案并且还更新了bash-script
micke 2014年

现在看起来还不错,感谢您的快速更新......只是我还是不相信,这将在Conky的工作,没有第一$echo线是用反斜杠转义。Conky总是对这些事情挑剔。:)尽管我可能错了。
syntaxerror 2014年

不,这很酷。无需在单引号内转义。
micke 2014年

0

注意,你需要execp或execpi来执行上面的exec和execi不解析脚本的输出

execp:执行shell命令并以conky显示输出。警告:这比其他变量需要更多的资源。我建议在C中编写想要的行为并发布补丁。这与$ exec的不同之处在于它解析命令的输出,因此您可以在脚本中插入诸如$ {color red} hi!$ {color}之类的内容,并让Conky正确解析它。注意事项:每次Conky循环时,Conky会解析并评估$ execp的输出,然后销毁所有对象。如果你试图在$ execp语句中使用$ execi之类的东西,它将在$ execp语句运行的相同间隔运行,因为它是在每个时间间隔创建和销毁的。

这也适用于简单地捕捉文件,例如:

${execpi 15 cat /path/to/file.log}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.