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

ubuntu16.04自動切換桌面桌布

一、描述

讓辦公電腦桌面自動更換桌布是一個很常見的需求,雖然不少這方面的小軟體可以實現這個功能。事實上,在基於Gnome的桌面系統中,我們可以不需要藉助任何第三方軟體的幫助來讓我們的桌面自動更換桌布。本文的方法適用於基於Gnome的Linux桌面系統,換句話說,就是在Ubuntu和Fedora中都可以。
在我還在用windows 7系統時,當時選擇一個主題背景(多張圖組成)後,經常不經意間背景會換了,迴圈的切換桌面桌布;由於windows上有很多流氓軟體,容易中病毒,經常彈窗等各種問題,又由於我又不怎麼用電腦玩遊戲,主要是做用電腦來辦公,因此果斷換了自己的辦公系統;其實windows用久了,難免想把ubuntu上的一些習慣帶過來,例如一些快捷鍵(win +e ;win +L)等;這些可以自定義的,屏保,類MAC主題等,ubuntu上幾乎一切均可自定義啊~ 正所所謂一切皆檔案嘛~ 本文主要記錄把桌面桌布做成win7一樣的自動切換;猜對 了,配置檔案即可~ 真是方便!
前提你得下好喜歡的桌布放在某目錄下!
通過本文提供的指令碼與方法生成;
配置

二、自動切換桌布說明

ubuntu 16.04 系統剛安裝完,背景是很單調的,紅底~由於我不喜歡這裡就不貼圖了,誰用誰知道~
因此我們需要自己去網上下載一些自己喜歡的桌布,美女也好,動漫也好,遊戲電影CG也好,自己喜歡就行。我這裡是NSA的太空照片,我個人比較喜歡,當然是高清無碼的。系統自帶的桌布都在/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系統~