1. 程式人生 > >ubuntu16.04自動切換桌面壁紙

ubuntu16.04自動切換桌面壁紙

pap 高清 nag 更改 流氓 問題 三方 bash 做成

一、描述

讓辦公電腦桌面自動更換壁紙是一個很常見的需求,雖然不少這方面的小軟件可以實現這個功能。事實上,在基於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

如圖:
技術分享圖片

自動切換壁紙主要由兩個XML文件控制

前面介紹過,Gnome自帶自動切換壁紙的功能,默認沒有啟用自動切換,而要使用這個功能,只需要編寫和修改兩個XML文件即可。首先,到/usr/share/backgrounds/目錄中看一下,發現其中不僅只有圖片,還有一個contest目錄,如下圖:

技術分享圖片

在contest目錄中,有一個系統自帶的xenial.xml文件,這就是一個自動切換壁紙的配置文件。我們可以把該文件當做範本,來編寫我們自己的配置文件。將該配置文件打開發現其格式非常簡單,如下圖:
技術分享圖片

說明:
從該配置文件可以看出,根據壁紙所在的路徑,設定好每一張圖片先保留多久(秒),這裏是300秒,然後切換到另外一張圖片,切換過程經過幾秒(duration段 5秒)。其內容非常簡單,一就看懂的那種。但是要寫一個這樣的配置文件就有點難度了,特別是圖片比較多的情況下,會累死人的,所以我們可以寫一個Bash腳本來自動生成一個這樣的配置文件。contest目錄下的這個xml就是第一個xml文件,也是入口文件;先記下~Bash腳本,後面會講到!

另外一個XML文件

另一個重要的xml文件位於/usr/share/gnome-background-properties/目錄下,如下圖:
技術分享圖片
說明:
從圖中可以看出 選中的部分是一個整體,其中就包含了前面所說的第一個入口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/

如圖:
技術分享圖片

修改第一個入口xml

修改入口xml文件如下:

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

如圖:
技術分享圖片

至此xml文件配置自動切換壁紙部分完成,接下來就是應用~

修改自動切換壁紙主題

在桌面上 右擊 --> 更改桌面背景(B) --如圖:
技術分享圖片

接下來每過五分鐘(300秒) 系統桌面就會自動切換啦,循環的,像win7系統~

ubuntu16.04自動切換桌面壁紙