我有一个脚本将一张精确的图像设置为壁纸,我希望它在每次运行时检查它是否仍然是相同的图像。如果没有,它会询问您是否要再次将壁纸更改为该图像。它是更大项目的一部分,目前它的工作原理如下:
- 脚本检测用户目录中是否有 .config.txt 文件
- 如果没有,它会询问您是否要更改背景
- .config.txt 在此过程中创建
我在互联网上搜索了这个问题的答案。不幸的是,大多数主题都与 Ubuntu 相关,而且它们根本没有帮助。我尝试过“定位背景”命令,但没有看到任何合法内容,天哪,我已经搜索了大部分列出的目录。我也在 .cache 中搜索,但仍然一无所获。
答案1
库存 Kali 壁纸图像存储在:
/usr/share/images/desktop-base/
当前壁纸是通过链接 到您想要将其设置为的/etc/alternatives/desktop-background
任何 .png 文件来设置的;/usr/share/images/desktop-base/
尽管您可以将其链接到您选择的任何其他文件夹中的 .png 文件。
答案2
如果你可以设置文件
gsettings set org.gnome.desktop.background picture-uri file:///path/to/the/file
然后你可以得到该文件与
gsettings get org.gnome.desktop.background picture-uri
这将为您提供一个类似的字符串'file:///usr/share/images/desktop-base/desktop-background.xml'
,该字符串很好,但需要先进行解析,然后才能直接将其用作另一个 shell 命令的参数。所以我们可以轻松地去掉引号和file://
带有 的部分cut
,例如:
gsettings get org.gnome.desktop.background picture-uri | cut -d/ -f3- | cut -d\' -f1
(注意:返回的文件对我来说实际上是一个 XML 文件,但我没有使用 GNOME,所以我不知道这在实时系统上如何工作。在您之前,这里可能需要执行另一个处理步骤可以开始比较文件。)
由于您已经知道要比较的文件的名称,因此您可以用来cmp
比较这两个文件:
cmp my/file.jpg "$(gsettings get org.gnome.desktop.background picture-uri | cut -d/ -f3- | cut -d\' -f1)"
cmp
0
如果文件相同,则设置返回值(true);如果文件不同或出现问题,则设置非零 (false)。我们可以用它来决定下一步做什么,也许使用||
仅当前一个命令返回非零(假)时才会运行命令的运算符。我们还可以cmp
通过开关抑制输出-s
。这给了我们这个命令,例如,您可以将其作为常规 cron 作业运行:
cmp -s my/file.jpg "$(gsettings get org.gnome.desktop.background picture-uri | cut -d/ -f3- | cut -d\' -f1)" || gsettings set org.gnome.desktop.background picture-uri file:///full/path/to/my/file.jpg