Pywal 不在 crontab 上更改 GNOME 上的墙纸

Pywal not changing wallpaper on GNOME on crontab

我正在尝试使用 cron 和 pywal 每 15 分钟制作一次随机壁纸脚本 运行 以更改终端颜色托盘。这是我的脚本:

#!/bin/bash

export PATH="$PATH:$HOME/.local/bin/"
files=($HOME/Imagens/wallpapers/*)
image="$(printf "%s\n" "${files[RANDOM % ${#files[@]}]}")"
wal -i $image 

这是我正在使用的 cron 行:

*/15 * * * * DISPLAY=:0 ~/.scripts/random-wallpaper

当我从终端 运行 以及在 i3wm 上使用 cron 时,这工作正常,但是当我切换到 gnome 时,它​​只是改变了终端的颜色,因为它应该使用新壁纸作为参考,但墙纸不会改变。我尝试使用 DISPLAY=:0.0,使用 .而不是它,没有任何效果。

我需要一些帮助来找出问题所在。

我在寻找解决方案时遇到了这个 post。我最初对 wal 的尝试在 awesomewm 中做了一些与我类似的事情,其中​​终端颜色会改变但背景不会。这是我最终修复它的方法,尽管我确信这不是理想的解决方案。请注意,我不确定这是否适用于 gnome,因为我在 awesomewm 和 xmonad 之间来回切换。但是,您可以调整我的方法以满足您的需要。我使用以下 cron 行执行此操作:

* * * * * /bin/wal -a 95 -i "$HOME/wallpaper/" -n; DISPLAY=:0 feh --bg-scale "$(< "${HOME}/.cache/wal/wal")"

这里要注意的重要部分是 wal 的 -n 标志禁止 wal 设置背景(不是你的问题),但文件路径在 .cache/wal/wal 文件中仍然发生变化。另外,请注意,我只是将目录传递给 wal,它会从目录中随机选择一张图片。然后我使用 feh 设置背景,但需要使用 DISPLAY=:0 来传递环境变量。我不知道 feh 是否可以为 gnome 设置背景,但至少以这种方式使用 wal 可能会简化您的脚本,也许考虑使用 wal 之外的其他东西来设置背景可能会有所帮助。也许您可以使用 gsettings 在 gnome 中设置背景,但初步观察告诉我其他人似乎无法使用 gsettings 和 cron 作业设置背景,但我真的不能这么说,因为我并不完全熟悉您的方式可以从终端设置 gnome 中的背景(除了 运行 wal 从终端)。也许这个 post 在 S.O 上。如果上述使用 feh 的方法没有,将帮助您在 gnome 中进一步执行此操作。