我有一个嵌套的目录结构,下有旅行图片~/Pictures/Shotwell-Import/YYYY/MM/DD/
。
我希望我的桌面背景能从这些图片中随机挑选。
不幸的是,Cinnamon 似乎期望一个平面目录,其中图片位于顶层。
知道如何规避这个限制吗?
谢谢!
答案1
您可以使用 cron 作业作为解决方法。
带有示例目录结构的说明。根据需要修改。
假设嵌套目录结构位于/home/USERNAME/Pictures/Shotwell-Import
写一个shell脚本
在以下位置创建脚本文件/home/USERNAME/Pictures/set-random-image.sh
:
#!/bin/bash
# Change to directory containing this script.
# See http://stackoverflow.com/a/3355423/246724
cd "$(dirname "$0")"
# Set the pictures directory
PICDIR="/home/USERNAME/Pictures/Shotwell-Import"
# Randomly pick one of the pictures.
# See http://www.webupd8.org/2009/11/3-lines-script-to-automatically-change.html
PICFILE=$(find $PICDIR -iregex '.*\.\(jpeg\|jpg\|png\)' | shuf -n1)
# Prevent a "dconf-WARNING **: failed to commit changes to dconf: Cannot autolaunch D-Bus without X11 $DISPLAY"
# Omit the last letter of "cinnamon-session" for the character limit in pgrep.
PID=$(pgrep -u $LOGNAME cinnamon-sessio)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)
# Set Cinnamon background image.
# Other desktop environments need different command.
gsettings set org.cinnamon.desktop.background picture-uri "file://$PICFILE"
尝试脚本/设置文件权限
配置文件权限以便您可以执行此脚本。然后执行一次脚本。
cd /home/USERNAME/Pictures
# Copy an example picture to mybkg.jpg
./set-random-image.sh
# Permission problems?
chmod u+rwx set-random-image.sh
# Now it should work!
./set-random-image.sh
# Do it again a few times, and see the background change.
# If this does not work, this tutorial will be useless to you.
./set-random-image.sh
./set-random-image.sh
配置背景图片
现在将其设置为背景图像。您可能可以使用命令行来执行此操作,但我认为在 UI 中执行此操作更为透明。
打开“设置”>“背景”对话框。
在“设置”选项卡中,禁用“以幻灯片形式播放背景”。我们不需要幻灯片,因为我们将创建一个 cron 作业。
在“图像”选项卡中,配置/home/USERNAME/Pictures/mybkg.jpg
为背景图像。您将需要左下角的“+”图标来添加文件夹/home/USERNAME/Pictures
,然后选择文件夹中的图像。
配置 cron 作业
类型crontab -e
。添加以下行以每分钟更改一次:
* * * * * /home/USERNAME/Pictures/set-random-image.sh
稍等一下,看看背景是否发生变化。
注意:Cinnamon 设置与文件复制
在此答案的先前版本中,脚本会将图像复制到默认位置,而不是更改肉桂设置。优点是这对于其他桌面环境同样有效。缺点是每分钟不必要的磁盘写入,这对 SSD 可能是不利的。偏执狂最终获胜,所以我改变了这个答案。