一、描述

让办公电脑桌面自动更换壁纸是一个很常见的需求,虽然不少这方面的小软件可以实现这个功能。事实上,在基于Gnome的桌面系统中,我们可以不需要借助任何第三方软件的帮助来让我们的桌面自动更换壁纸。本文的方法适用于基于Gnome的Linux桌面系统,换句话说,就是在Ubuntu和Fedora中都可以。
在我还在用windows 7系统时,当时选择一个主题背景(多张图组成)后,经常不经意间背景会换了,循环的切换桌面壁纸;由于windows上有很多流氓软件,容易中病毒,经常弹窗等各种问题,又由于我又不怎么用电脑玩游戏,主要是做用电脑来办公,因此果断换了自己的办公系统;其实windows用久了,难免想把ubuntu上的一些习惯带过来,例如一些快捷键(win +e ;win +L)等;这些可以自定义的,屏保,类MAC主题等,ubuntu上几乎一切均可自定义啊~ 正所所谓一切皆文件嘛~ 本文主要记录把桌面壁纸做成win7一样的自动切换;猜对 了,配置文件即可~ 真是方便!
前提你得下好喜欢的壁纸放在某目录下!
通过本文提供的脚本与方法生成;
配置

二、自动切换壁纸说明

ubuntu 16.04 系统刚安装完,背景是很单调的,红底~由于我不喜欢这里就不贴图了,谁用谁知道~
因此我们需要自己去网上下载一些自己喜欢的壁纸,美女也好,动漫也好,游戏电影CG也好,自己喜欢就行。我这里是NASA的太空照片,我个人比较喜欢,当然是高清无码的。系统自带的壁纸都在/usr/share/backgrounds/目录下,我们要把下载的壁纸也移动到这个目录子目录

$ cd /home/san/图片/
$ mkdir /usr/share/backgrounds/dongyc -p
$ sudo mv *.jpg /usr/share/backgrounds/dongyc

如图:
ubuntu16.04自动切换桌面壁纸

自动切换壁纸主要由两个XML文件控制

前面介绍过,Gnome自带自动切换壁纸的功能,默认没有启用自动切换,而要使用这个功能,只需要编写和修改两个XML文件即可。首先,到/usr/share/backgrounds/目录中看一下,发现其中不仅只有图片,还有一个contest目录,如下图:

ubuntu16.04自动切换桌面壁纸

在contest目录中,有一个系统自带的xenial.xml文件,这就是一个自动切换壁纸的配置文件。我们可以把该文件当做范本,来编写我们自己的配置文件。将该配置文件打开发现其格式非常简单,如下图:
ubuntu16.04自动切换桌面壁纸

说明:
从该配置文件可以看出,根据壁纸所在的路径,设定好每一张图片先保留多久(秒),这里是300秒,然后切换到另外一张图片,切换过程经过几秒(duration段 5秒)。其内容非常简单,一就看懂的那种。但是要写一个这样的配置文件就有点难度了,特别是图片比较多的情况下,会累死人的,所以我们可以写一个Bash脚本来自动生成一个这样的配置文件。contest目录下的这个xml就是第一个xml文件,也是入口文件;先记下~Bash脚本,后面会讲到!

另外一个XML文件

另一个重要的xml文件位于/usr/share/gnome-background-properties/目录下,如下图:
ubuntu16.04自动切换桌面壁纸
说明:
从图中可以看出 选中的部分是一个整体,其中就包含了前面所说的第一个入口xml文件~
只有在这里的XML配置文件中提到壁纸,才能在Ubuntu的系统设置界面中看到。所以等会儿我们生成了自动切换壁纸的XML配置文件后,只需要把那个配置文件的路径加到这里就行了。

生成入口xml文件脚本

话不多说创建create_backup_xml.sh脚本生成入口xml文件即:/usr/share/backgrounds/contest/xenial-dongyc.xml 脚本内容如下:

#!/bin/bash
# version 2018-12-06 by san

files=`ls -U /usr/share/backgrounds/dongyc/|egrep -v contest`
last_file="empty"

echo '<background>'
echo '  <starttime>'
echo '    <year>2015</year>'
echo '    <month>12</month>'
echo '    <day>06</day>'
echo '    <hour>00</hour>'
echo '    <minute>00</minute>'
echo '    <second>00</second>'
echo '</starttime>'

for current_file in $files
do 
        if [[ $last_file == 'empty' ]]
        then
               last_file=$current_file
                echo  '    <static>'
                echo  '        <duration>300.0</duration>'
                echo  "        <file>/usr/share/backgrounds/dongyc/$last_file</file>"
                echo '    </static>'
        else
                echo '    <transition>'
                echo '         <duration>5.0</duration>'
                echo "         <from>/usr/share/backgrounds/dongyc/$last_file</from>"
                echo "         <to>/usr/share/backgrounds/dongyc/$current_file</to>"
                echo '    </transition>'
                echo '    <static>'
                echo '         <duration>300.0</duration>'
                echo "         <file>/usr/share/backgrounds/dongyc/$current_file</file>"
                echo '    </static>'
                last_file=$current_file
        fi
done
echo '</background>'

执行脚本生成/usr/share/backgrounds/contest/xenial-dongyc.xml

$ ./create_backup_xml.sh >xenial-dongyc.xml
$ sudo cp xenial-dongyc.xml /usr/share/backgrounds/contest/

如图:
ubuntu16.04自动切换桌面壁纸

修改第一个入口xml

修改入口xml文件如下:

$ cd /usr/share/gnome-background-properties/
$ cat xenial-wallpapers.xml

如图:
ubuntu16.04自动切换桌面壁纸

至此xml文件配置自动切换壁纸部分完成,接下来就是应用~

修改自动切换壁纸主题

在桌面上 右击 --> 更改桌面背景(B) --如图:
ubuntu16.04自动切换桌面壁纸

接下来每过五分钟(300秒) 系统桌面就会自动切换啦,循环的,像win7系统~

补充:

Ubuntu 16.04 使用的全新的LightDM作为桌面管理器,默认使用Unity Greeter作为登录管理器。
本文就介绍一些有限的美化方法。
常用个性化登录界面的办法:
在”/usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.xml”中直接修改各项值。
编辑好后保存退出。
刷新schemas
sudo glib-compile-schemas /usr/share/glib-2.0/schemas/

如修改登录背景;
background = "你的图片路径"
默认值:
background = "/usr/share/backgrounds/warty-final-ubuntu.png"

可以指定默认登录背景路径;