红联Linux门户
Linux帮助

Ubuntu自定义桌面壁纸动画

发布时间:2015-11-08 10:35:02来源:/java_star/作者:

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