Shell脚本更改桌面壁纸

时间:2011-04-05 11:13:06

标签: bash shell gnome wallpaper

您是否可以编写最简单的shell脚本,以便定期(例如1分钟)更改桌面壁纸(在Ubuntu中)。

壁纸将保存在特定目录中(例如$ HOME / wallpapers)。 我只需要基本的功能。

1)从$HOME/wallpapers选择随机壁纸 2)将其设置为桌面上的壁纸
3)设置cron每分钟运行一次脚本(不是问题的一部分)。

6 个答案:

答案 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"