change_wallpaper
因此我根据以下答案得到了这个脚本:在特定时间自动更改 Ubuntu 壁纸并把它贯穿了cron
。
# For changing wallpaper at a certain time
*/1 6,7,8,9,10,11,12,13,14,15,16,17 * * * /home/zero/.bin/change_wallpaper '/home/zero/Pictures/Wallpapers/dawn.jpg'
*/1 18,19,20,21,22,23,0,1,2,3,4,5 * * * /home/zero/.bin/change_wallpaper '/home/zero/Pictures/Wallpapers/dusk.jpg'
总之,每次我启动我的 Ubuntu 时,它必须将壁纸更改为dawn.jpg
早上或dusk.jpg
晚上。
更改壁纸
#!/bin/bash -e
user=$(whoami)
fl=$(find /proc -maxdepth 2 -user "$user" -name environ -print -quit)
for i in {1..5}
do
fl=$(find /proc -maxdepth 2 -user "$user" -name environ -newer "$fl" -print -quit)
done
export DBUS_SESSION_BUS_ADDRESS
DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS "$fl" | cut -d= -f2-)
IMG=$1
gsettings set org.gnome.desktop.background picture-uri "'file://${IMG}'"
有一次,我注意到cron
脚本不再起作用,所以我尝试手动运行它。然后我注意到这个错误。
zero@zerosystem:~$ /home/zero/.bin/change_wallpaper /home/zero/Pictures/Wallpapers/dawn.jpg
(process:5420): dconf-WARNING **: failed to commit changes to dconf: The given address is empty
这是为什么?我还注意到每次运行它时都会有不同的进程号,即(process:5420)
。
答案1
在执行 gsettings 时,如果出现以下错误信息
dconf-警告**:...:无法提交对 dconf 的更改:给定的地址为空
这可能意味着您的环境变量 DBUS_SESSION_BUS_ADDRESS 确实是空的,即它在某个时候已被取消设置。
我通过 export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$UID/bus 解决了这个问题