您是否可以编写最简单的shell脚本,以便定期(例如1分钟)更改桌面壁纸(在Ubuntu中)。
壁纸将保存在特定目录中(例如$ HOME / wallpapers)。 我只需要基本的功能。
1)从$HOME/wallpapers
选择随机壁纸
2)将其设置为桌面上的壁纸
3)设置cron每分钟运行一次脚本(不是问题的一部分)。
答案 0 :(得分:9)
#!/bin/bash
wallpaperdir='$HOME/wallpaper'
files=($wallpaperdir/*)
randompic=`printf "%s\n" "${files[RANDOM % ${#files[@]}]}"`
gconftool-2 -t str --set /desktop/gnome/background/picture_filename "$randompic"
保存此脚本并使用命令“crontab -e”编辑您的脚本(它会启动一个编辑器,您将此行放在文件的末尾):
*/1 * * * * /bin/bash /path/to/script.sh
编辑:我以为你正在使用gnome。如果不是,则需要编辑最后一行,因为我的示例使用Gnome Conftool。 ;)
要更改XFCE中的背景,您应该将gconftool-2的行更改为:
echo -e “# xfce backdrop list\n$randompic”>$HOME/.config/xfce4/desktop/backdrops.list
killall -USR1 xfdesktop
答案 1 :(得分:2)
我知道这个答案有点晚,但因为它可以帮助一些人,所以我发布了它。
从septi的代码加上一些修改,这是我的解决方案:
#!/bin/bash
wallpaperdir="$HOME/wallpaper"
files=($wallpaperdir/*)
randompic=`printf "%s\n" "${files[RANDOM % ${#files[@]}]}"`
echo -e "# xfce backdrop list\n$randompic">$HOME/.config/xfce4/desktop/backdrop.list
xfdesktop --reload
单引号必须用双引号替换,以便计算机正确解释$ HOME部分。此外,您要编辑的文件是backdrop.list,而不是backdrops.list。最后,我发现在这种情况下使用killall有点过分,因为你可以简单地重新加载xfdesktop。
我已经在我的电脑上测试了它(Linux Mint Debian Edition),它看起来效果很好。
希望它有所帮助。 =)
编辑:我忘了提到你必须在你的命令之前在crontab中添加DISPLAY =:0.0。这给了
*/1 * * * * DISPLAY=:0.0 wallpaper.sh
答案 2 :(得分:2)
这只是我对这个问题的处理方法。我并不认为这是理想的。
WALLS_PATH=/path/to/images
cd $WALLS_PATH
while [ 1 ]; do
for NEW_WALL in "$WALLS_PATH"/*; do
gsettings set org.gnome.desktop.background picture-uri "file://${NEW_WALL}"
sleep 1800
done
done
答案 3 :(得分:0)
在较新的Ubuntus中尝试此操作:gsettings set org.gnome.desktop.background picture-uri file:///path/to/img.jpg
(来自here的提示)
答案 4 :(得分:0)
对于gnome3,您需要使用gsettings而不是gconftool。
但是,如果您要通过cron执行脚本,它将无法正常工作。
我尝试了很多.sh脚本,但没有人适合我。
最后,我使用这个从文件夹加载随机壁纸的python脚本修复它:
#!/usr/bin/env python
#coding: utf8
import os,random
setup = "/path_to_folder/" + random.choice(os.listdir("/path_to_folder/"))
os.system("DISPLAY=:0 GSETTINGS_BACKEND=dconf gsettings set org.gnome.desktop.background picture-uri 'file://%s'" %(setup))
希望对有同样问题的人有帮助!
答案 5 :(得分:0)
这在Gnome中对我有用:
#!/bin/bash
DIR="/home/user/Pictures/wallpapers"
PIC=$(find $DIR -type f -maxdepth 1 | shuf -n1)
gsettings set org.gnome.desktop.background picture-uri "file://$PIC"