2008/02/11

gnome 心得:換桌布

在 ubuntu 7.10 的 gnome 中,想要找個定時換桌布的工具,一開始,還滿無所適從的~

一開始我到 系統/偏好設定/外觀設定 去找,只有手動換桌布的選項
這對我這個擁有數千張桌布、而又喜歡嘗鮮的人來說(好吧,對我這個懶人來說),實在是件麻煩事 :P

我對換桌布的工具要求很簡單
  • 容易定義桌布路徑,不要讓我一個一個加路徑;最好是指定了一個頂層路徑,程式可以自動把次目錄給加進來
  • 可以做簡單的桌布管理;可以刪除不想要的桌布,可以一個按鍵讓我換桌布

後來在網路上尋尋覓覓,先後找到了幾個工具

1. wallpapoz
由於年代久遠、很久沒用、不好用的狀況下,我已經不知道要寫什麼了 ~~ :p
所以這項先跳過
update: 不好用的原因是,我指定頂層目錄,它不會自動搜尋次目錄,所以很麻煩
其實很多人都推這一個工具程式,所以稍微爬文一下,可以找到很多文章

2. 寫個 script ,用 crontab 自動換桌布
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import glob
import random
import os

# 設定存放圖檔的路徑
path = '/usr/share/backgrounds/'
# 使用此路徑底下 *.png 來用
files = glob.glob(os.path.join(path,'*.png'))
files.extend(glob.glob(os.path.join(path,'*.jpg')))
files.extend(glob.glob(os.path.join(path,'*.tif')))
# 從 files 裡面隨機選一張
picture = files[random.randrange(len(files))]
# 使用 gconftool-2 設定為桌面
os.system("gconftool-2 -t str --set /desktop/gnome/background/picture_filename %s"%picture)
檔案名稱隨便取(chgwp.py),記得要給予 "執行" 的權限;需要有安裝 python 才可以執行
ps. 這段程式我忘記在哪看到的,好像是 ubuntu 正體中文站的討論區,若不希望我擺上來,請來信告知~

update: 有個缺點,只能讀取某一層目錄中所有的桌布,子目錄下的就讀不到了

3. wallpaper tray
這是目前在用,還滿方便的程式
完全符合我的要求
可以用 synaptic 用上述的英文關鍵字找到,安裝後,會出現在 應用程式/美工繪圖 中

有用過 wallpaper changer ,wallpaper master pro 的人,應該會覺的還滿習慣的(當然功能沒那麼多啦)

使用方法:
  • 執行後,現有桌布的小型圖示會出現在工具列上
  • 先指定一個頂層路徑,它會自動搜尋次目錄
  • 設定多久更換一次桌布
  • 也可以直接在工作列的小圖示上按一下強制更換桌布
  • 在小圖示上按右鍵,有 刪除目前桌布(Delete Current Wallpaper) 的選項
更新:
由於 wallpaper-tray 經常會出現 "程式記憶區段錯誤" ,無法正常運作
只好再找一個 shell script 來代替
#!/bin/bash
WALLPAPERS="/home/aeolus/doc/wallpapers" #change this path for your system
ALIST=( `ls -w1 $WALLPAPERS` )
RANGE=${#ALIST[@]}
let "number = $RANDOM"
let LASTNUM="`cat $WALLPAPERS/.last` + $number"
let "number = $LASTNUM % $RANGE"
echo $number > $WALLPAPERS/.last
gconftool-2 -t string -s /desktop/gnome/background/picture_filename $WALLPAPERS/${ALIST[$number]}
只要把 WALLPAPERS 的內容改成放桌布的路徑就好

更新:上述灰色文字僅能讀取一個目錄
重新修正為可以讀取所有子目錄,更新如下
#!/bin/bash
WALLPAPERS="/home/aeolus/doc/wallpapers" #change this path for your system
ALIST=( `find $WALLPAPERS -type f` )
RANGE=${#ALIST[@]}
let "number = $RANDOM"
let LASTNUM="`cat $WALLPAPERS/.last` + $number"
let "number = $LASTNUM % $RANGE"
echo $number > $WALLPAPERS/.last
gconftool-2 -t string -s /desktop/gnome/background/picture_filename ${ALIST[$number]}

後記
其實換桌布是一個很普遍的行為,不曉得為什麼 gnome 不能像 kde 或 mac os X 一樣,把這個很單純的功能包含進去
好在,有需求,就有人開發好用的工具程式



沒有留言: