系统:ubuntu-16.04

右键桌面->更改桌面背景,如下图所示,在右侧缩略图中带有小钟表图标的就表示为动态切换的壁纸:

系统是通过读取这个文件来进行动态壁纸切换的:

/usr/share/backgrounds/contest/xenial.xml

文件主要内容如下:

<background><starttime><year>2014</year><month>09</month><day>21</day><hour>00</hour><minute>00</minute><second>00</second></starttime><static><duration>300</duration><file>/home/kyy/Wallpaper/1019236,106.jpg</file></static><transition><duration>3</duration><from>/home/kyy/Wallpaper/1019236,106.jpg</from><to>/home/kyy/Wallpaper/1019306,106.jpg</to></transition><static><duration>300</duration><file>/home/kyy/Wallpaper/1019306,106.jpg</file></static><transition><duration>3</duration><from>/home/kyy/Wallpaper/1019306,106.jpg</from><to>/home/kyy/Wallpaper/1082502,106.jpg</to></transition><static>......</static><transition>......</transition>......
</background>

其中static标签内file表示当前图像,duration表示当前图像显示的持续时间

transition标签内from和to分别表示不下一步在那两个图片之间切换,duration表示过渡时间

so,系统就是根据这个来进行桌面壁纸动态切换的。不过没切换一次图像就需要写大量代码,我们肯定不会脑残到自己手动去写的,那么的,既然实在Linux下,用shell脚本代替人工自然是最合适不过了

shell脚本实现

  1 #!/bin/bash2 3 #可用文件后缀名列表4 readonly prefixs=("jpg" "jpeg" "png" "bmp")5 6 #动态背景文件地址7 #/usr/share/backgrounds/contest/trusty.xml8 readonly animate_background_file_path="/usr/share/backgrounds/contest/trusty.xml"9  10 #文件列表索引11 index=012 13 #获取图像文件列表14 get_image_files(){15     16     #获取文件所在目录名称17     base_dir="`dirname $1`/`basename $1`/"18     19     for f in `ls $1`20     do    21         #检查文件后缀22         for p in "${prefixs[@]}"23         do24             len_before=${#f}25             f_after=${f%"$p"}26             len_after=${#f_after}27             28             #名称发生改变,说明后缀名称符合条件29             if [ $len_before -ne $len_after ]30             then31                 file_list[$index]="$base_dir$f"32                 echo "获取图像:$base_dir$f"33                 let index=$index+134                 break35             fi36         done37     done38 39 }40  41 42 #写入文件43 replae_file(){44 45     #创建临时文件46     animate_back="animate_back.xml"47     #清空文本内容48     cat /dev/null > $animate_back49     50     echo -e  "<background>" >> $animate_back51     echo -e  "\t<starttime>" >> $animate_back52     echo -e  "\t\t<year>$(date +%Y)</year>" >> $animate_back53     echo -e  "\t\t<month>$(date +%m)</month>" >> $animate_back54     echo -e  "\t\t<day>$(date +%d)</day>" >> $animate_back55     echo -e  "\t\t<hour>00</hour>" >> $animate_back56     echo -e  "\t\t<minute>00</minute>" >> $animate_back57     echo -e  "\t\t<second>00</second>" >> $animate_back58     echo -e  "\t</starttime>" >> $animate_back59 60     #写入文件名称61     index_=062     len=${#file_list[@]}63     for f in "${file_list[@]}"64     do    65         if [ $index_ -eq $((len-1)) ]66         then67             fn=${file_list[0]}68         else69             fn=${file_list[$index_+1]}70         fi71 72         echo -e  "\t<static>" >> $animate_back73         echo -e  "\t\t<duration>${STAY:=300}</duration>" >> $animate_back74         echo -e  "\t\t<file>$f</file>" >> $animate_back75         echo -e  "\t</static>" >> $animate_back        76         echo -e  "\t<transition>" >> $animate_back77         echo -e  "\t\t<duration>${DURATION:=3}</duration>" >> $animate_back78         echo -e  "\t\t<from>$f</from>" >> $animate_back79         echo -e  "\t\t<to>$fn</to>" >> $animate_back80         echo -e  "\t</transition>" >> $animate_back81         82         let index_=$index_+183     done84         85     echo -e  "</background>" >> $animate_back86     87     #移动文件88     mv $animate_back $animate_background_file_path89     if [ $? -eq 0 ]        90     then 91         echo -e  "已经设定好文件"92     fi93 94 }95 96 help(){97     echo98     echo "命令格式:`basename $0` [OPTION] -f Filepath"99     echo "指定图片目录,目录下的图片将作为动态更换的壁纸"
100     echo
101     echo -e "-f[Filepath]\t 图像文件目录"
102     echo -e "-d[Duration]\t 图像切换时长,默认3s"
103     echo -e "-s[StayTime]\t 图像停留时长,默认300s"
104     echo
105     exit 1
106 }
107
108
109 #处理参数
110 while getopts f:s:d: OPTION
111 do
112     case "$OPTION" in
113     f)
114         FILE_PATH="$OPTARG"
115         ;;
116     s)
117         STAY="$OPTARG"
118         ;;
119     d)
120         DURATION="$OPTARG"
121         ;;
122     *)
123         help
124         ;;
125     esac
126 done
127
128 if [ -z "$FILE_PATH" ]
129 then
130     help
131 fi
132
133
134
135 #判断目录是是否存在
136 if [ -d $FILE_PATH ]
137 then
138     #获取到文件列表
139     get_image_files $FILE_PATH
140
141     #获取文件数目
142     file_count=${#file_list[@]}
143
144     if [ $file_count -gt 0 ]
145     then
146         #替换原有动态背景文件
147         echo "共获取到$file_count个图像文件"
148         replae_file
149     else
150         echo "目录$FILE_PATH下不存在符合要求的图像文件:${prefixs[*]}"
151     fi
152
153
154 else
155     echo "不存在目录:$FILE_PATH"
156 fi
157
158
159 exit 0

在ubuntu窗户里,要到那里才可以产生一个 shell程序/脚本?

在ubuntu桌面左上角 ,应用程序/附件/终端,打开终端后敲
gedit test.sh (自己取个名字,这里我用test)
会弹出一个类似windows里记事本一样的窗口,将代码复制进去,
#!/usr/bin/sh
echo "Hello "`whoami`
。。。。。。
echo 'no this num!'
fi 
done 
然后直接关掉,会提示你保存。
然后继续在终端下
bash test.sh 回车,执行后,不要关闭终端。按键盘上的print screen截屏按键,会将当前屏幕截成一个图片,保存位置就放在桌面上好了,注意多次截图文件名不要覆盖了。
然后将图片或通过u盘,或者直接复制到windows系统所在分区,转移走。
然后进入windows系统,打开那些图片,粘贴到word里,或者用windows的画图工具放大用矩形再截一下。

(基本操作应该就是那样了,只是一点没体现出linux的优越性。ubuntu10.04版是吧,不存在10.03版。楼主如果像学linux可以从bash脚本,vim编辑器开始学起。)

ubuntu 下执行shell脚本的问题

诶!你还要去好好去玩一下Linux(不要用图形系统),你问的这些问题,真不好解释
1,chmod +x test.sh:将test.sh变成可执行权限。
2,test.sh 第一行有"#!/bin/sh” 告诉解释器在什么位置。
3,第一步test.sh变成可执行了,./test.sh(运行当前目录下一个可执行文件,这是一个shell脚本,需要解释器,如果有"#!/bin/sh”通过sh解释,如果没有会报错没这个命令)。
4,./test.sh(第三步我以解释什么意思);运行test.sh(将同过path路径去找这个命令,显然这个tesh.sh这个文件不在你path路径下,你怎么能运行呢)。
5,sh test.sh(sh在/bin目录下也就是已经假如path路径,用sh命令解释你这个脚本)

转自:http://www.bkjia.com/Linuxjc/881784.html

Ubuntu 设定壁纸自动切换的shell脚本相关推荐

  1. linux更改桌面壁纸的脚本,ubuntu 桌面 壁纸 自动切换 方法 图解 linux

    ubuntu实在是不错的,桌面效果也是很炫酷的.而对于强大的linux实现win7的自动切换背景也是比较小儿科的.限于水平,讨论一个菜鸟级的方案,请批评指正,tangchao90908@sina.co ...

  2. Gnome3(Ubuntu)壁纸自动切换

    Gnome3的gnome-shell自带自动切换壁纸的功能. 1. 分析其自带的壁纸切换功能,可以发现是由2个文件控制的 不想看的,直接点上面链接看下面第2步 2. 系统怎么来,我们就怎么来 Gnom ...

  3. Lvs别样的自动部署监控shell脚本

    Lvs别样的自动部署监控shell脚本   l 脚本功能: l 实验环境图: l 具体脚本: l 结果验证: l 参考资料: 先申明,本文现在已经在我公司的测试环境和生产测试环境使用.正式环境请用ke ...

  4. 腾讯云域名 OpenWrt 自动更新IP shell脚本

    腾讯云域名 OpenWrt 自动更新IP shell脚本 需要这个功能 然后找了很多资料都没有 看到一篇类似的本文 原文链接:https://blog.csdn.net/qq_38106751/art ...

  5. linux 函数自动补全,Shell脚本中实现自动补全功能

    对于Linuxer来说,自动补全是再熟悉不过的一个功能了.当你在命令行敲下部分的命令时,肯定会本能地按下Tab键补全完整的命令,当然除了命令补全之外,还有文件名补全. Bash-completion ...

  6. i3wm壁纸自动切换

    安装feh 通过feh来进行控制壁纸的切换. # ArchLinux && manjaro 安装 sudo pacman -S feh# Ubuntu 安装 sudo apt-get ...

  7. Ubuntu20 设置桌面壁纸自动切换

    最近电脑系统换成了ubuntu,想把桌面壁纸设置撑自动切换,搜了一下发现都是要修改cml文件的.最后终于找到一个不用修改的方法: 1.首先创建一个文件夹,里面存放下载的所有壁纸 2.打开shotwel ...

  8. 错误时自动退出bash shell脚本[重复]

    本文翻译自:Automatic exit from bash shell script on error [duplicate] This question already has an answer ...

  9. linux脚本使用scp自动传输,使用Shell脚本自动传输SCP文件

    我的unix系统上的目录中有n个文件. 有没有一种方法可以编写Shellscript,该脚本将通过scp将所有这些文件传输到指定的远程系统. 我将在脚本中指定密码,这样就不必为每个文件输入密码. 您能 ...

最新文章

  1. Spring+Dubbo+Zookeeper简单框架与使用
  2. 集成Lua到你的Android游戏 - 转
  3. 网站导航目录要该如何优化?
  4. cin,getline用法和不同
  5. PPT 2016 后台播放功能
  6. cstatic 不调用onpaint_干货 | U盘中毒?不可能的事
  7. aop执行跳过某个方法_简谈前端开发中的AOP(一) -- 前端AOP的实现思路
  8. 设计模式(三):观察者模式与发布/订阅模式区别
  9. github上java项目_GitHub上10,000个最受欢迎的Java项目-以下是他们使用的顶级库
  10. php中goto另一个页面,php中goto操作符的详细介绍
  11. JFreeChart的简单应用及乱码解决
  12. solrcloud配置中文分词器ik
  13. MODIS数据下载、拼接、裁剪、8天合成月方法以及处理过程中遇到的问题及解决办法(简要整理)
  14. bootstrap布局设计在线工具
  15. 计算机术语BOOTP,bootp是什么意思?
  16. linux系统查看dns缓存,如何清空linux的DNS缓存
  17. 【毕业设计】基于STM32及OpenMV的云台追踪装置
  18. 通俗易懂的Kafka零拷贝机制
  19. 前端模拟自动解析手机号姓名地址
  20. 两个可能常用到的几何知识(圆与椭圆的方程、求垂直向量)

热门文章

  1. Android项目:音乐播放器
  2. Linux集群管理软件clustershell
  3. 提出一个问题:《纪念碑谷》
  4. Java零基础学习-笔记05
  5. 怎么打开Office 2007 Excel加密文档
  6. Android 7.0及其以上系统安装安装包时候提示:解析安装包失败
  7. 21_余丙森_概论_2.3_2.4_泊松定理_一维连续r.v.及分布
  8. Python文件部分习题
  9. 解决Navicat连接不上MySQL的问题
  10. 使用hbuilder前端工具直接连接服务器FTP/SFTP连接传输上传文件