您能编写最简单的shell脚本,它会定期更改桌面墙纸(在Ubuntu中)(例如1分钟)。Shell脚本更换桌面壁纸
壁纸将保存在特定的目录(例如$ HOME/wallpapers)。 我只需要基本的功能。
1)选择$HOME/wallpapers
2随机墙纸)将其设置为墙纸在桌面上
3)设定cron来运行每分钟(的问题不属于脚本)。
您能编写最简单的shell脚本,它会定期更改桌面墙纸(在Ubuntu中)(例如1分钟)。Shell脚本更换桌面壁纸
壁纸将保存在特定的目录(例如$ HOME/wallpapers)。 我只需要基本的功能。
1)选择$HOME/wallpapers
2随机墙纸)将其设置为墙纸在桌面上
3)设定cron来运行每分钟(的问题不属于脚本)。
#!/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
谢谢。我正在使用gnome和xfce。你知道如何在XFCE中改变它吗? – xralf 2011-04-05 12:11:08
我用过 '#!/ bin/bash
files =(/ home/xralf/wallpapers/*)
randompic ='printf“%s \ n”“$ {files [RANDOM%$ {#files [ ]}]}“'
CP ”$ randompic“ desktop_picture.jpg
CP desktop_picture.jpg在/ usr /共享/ XFCE4 /背景
killall xfdesktop在
xfdesktop' 但预计它不工作。 –
xralf
2011-04-05 12:17:41
我编辑了我的第一个答案,因为评论功能对于发布代码并不是非常有用;-) – tamasgal 2011-04-05 12:21:34
试试这个在新Ubuntus:)我知道这gsettings set org.gnome.desktop.background picture-uri file:///path/to/img.jpg
(尖从here
答案有点晚了,但因为它可以帮助一些人,所以我发布了它。
从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)上测试过它,并且它看起来很完美。
希望它有帮助。 =)
编辑:我忘了提及,你必须添加DISPLAY =:0.0之前你的命令,在crontab。这给了
*/1 * * * * DISPLAY=:0.0 wallpaper.sh
这只是我在这个问题上的做法。我不认为这是理想的。
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
对于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))
希望它可以帮助的人与我同样的问题!
这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"
一个简短的说明:不要依赖/解析'ls'结果,'find'更适合。 – 2017-10-12 08:17:10
也许这应该askubuntu.com问? – Kaivosukeltaja 2011-04-05 11:15:45
这里有5259个问答,标签bash。在askubuntu上只有144.问题是关于编程。 Ubuntu更多的是关于桌面环境。 – xralf 2011-04-05 12:21:54
基本上这个答案取决于你的**桌面环境** /窗口管理器。这个问题中的每个人,包括OP似乎使用Gnome,所以使用gnome工具的答案很有效。对于使用KDE/XFCE/LXDE/MATE /其他浏览器的未来访问者,请问您的DE如何以编程方式设置其壁纸。 – 2017-07-16 21:45:43