Ubuntu默认没有提供自定义桌面壁纸动画的工具,所以写了一个脚本搞这个事情。
直接看代码里面的注释吧。
#!/bin/bash
#生成的临时文件
xmlFileName=wall.xml
#文件生成后,把文件复制到目标位置,让系统能够识别出来
#由于目标位置是需要root用户才能有权限执行的,所以后面使用了sudo命令,需要输入密码
#当前用户如果不在sudo用户组里面,无法执行此文件
#不同版本的Ubuntu,使用不同的文件名,15.10使用的文件名是wily,这样可以使用默认动画壁纸即可
#因为15.10的版本代号是Wily Werewolf(狡猾的狼人)
targetFileName=/usr/share/backgrounds/contest/wily.xml
#这里是直接把/usr/share/backgrounds/目录下的所有文件作为桌面壁纸文件
#如果需要其他位置的图片,直接换路径即可
dir=/usr/share/backgrounds/*
#先写出XML的头
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" > $xmlFileName
echo "" >> $xmlFileName
echo "<background>" >> $xmlFileName
echo " <starttime>" >> $xmlFileName
echo " <year>2009</year>" >> $xmlFileName
echo " <month>08</month>" >> $xmlFileName
echo " <day>04</day>" >> $xmlFileName
echo " <hour>00</hour>" >> $xmlFileName
echo " <minute>00</minute>" >> $xmlFileName
echo " <second>00</second>" >> $xmlFileName
echo " </starttime>" >> $xmlFileName
echo "" >> $xmlFileName
#定义一个函数,用于写文件转换的部分
writeXML()
{
echo " <static>" >> $xmlFileName
#延迟,加上transition的5秒,正好是1800秒,即30分钟
echo " <duration>1795.0</duration>" >> $xmlFileName
echo " <file>$1</file>" >> $xmlFileName
echo " </static>" >> $xmlFileName
echo " <transition>" >> $xmlFileName
echo " <duration>5.0</duration>" >> $xmlFileName
echo " <from>$1</from>" >> $xmlFileName
echo " <to>$2</to>" >> $xmlFileName
echo " </transition>" >> $xmlFileName
}
#把/usr/share/backgrounds下面所有的图片,都添加到一个动画的xml文件里面
first=""
last=""
for file in $dir
do
#仅处理文件
if [ -f $file ]; then
#记录下第一个文件,用于把最后一个跳转到第一个
if [ -z "$first" ]; then
first=$file
fi
#如果last变量还未赋值,表示第一次循环,暂时不写文件
#只有当last不为空的时候,才开始写文件,并且把last变量作为from,当前文件作为to
if [ -n "$last" ];
then
$(writeXML $last $file)
fi
#记录下最后一个文件,每次写入的时候都需要使用此变量
#并且循环完以后,还要把最后一个文件跳转到第一个文件,循环播放
last=$file
fi
done
#这是最后一个文件了,跳转到第一个文件
$(writeXML $last $first)
#结束XML
echo "</background>" >> $xmlFileName
#移动文件到目标位置
sudo mv $xmlFileName $targetFileName
看看新的Ubuntu 15.10默认壁纸:http://www.linuxdiyf.com/linux/14706.html
Ubuntu设定壁纸自动切换的shell脚本:http://www.linuxdiyf.com/linux/13602.html
动态壁纸给Linux发行版添加活力背景:http://www.linuxdiyf.com/linux/12898.html
Ubuntu下创建动态壁纸指导:http://www.linuxdiyf.com/linux/8327.html
启用Ubuntu 15.04的新壁纸:http://www.linuxdiyf.com/linux/11647.html