分页: 1 / 1

随机更换壁纸的脚本,能凑合用

发表于 : 2008-09-17 14:59
c\nc

代码: 全选

#!/bin/bash
WD="${HOME}/picture/Wallpaper/random 0" # 壁纸目录(目前不能包含中文)
INTERVAL=1 # 更换时间间隔(秒)
DELAY=0 # 第一次更换壁纸前的暂停时间(秒)
TYPES=":image/jpeg:image/jpg:image/png:image/x-ms-bmp:image/gif:" # 文件类型
# -----------------------------------------------------------------------------
HISTORY=$HOME/.swp_history
# 此处是个死循环 @@
(export IFS=$'\n'
while sleep $DELAY; do	
	# 获取文件列表
	files="$(for f in "$WD"/*; do
			if [[ $TYPES =~ :$(file -bi "$f"): ]]; then 				
				echo "$f" && let "i++"
			fi
		done)"
	# 将文件列表和已经更换过的壁纸历史对照,得到剩余壁纸序列	
	que=(`echo "$files" | cat - "$HISTORY" 2>/dev/null | sort | uniq -u`) 
	ub=$((${#que[@]} - 1))
	# 如果已经没有壁纸可显示,清空历史重来
	if [ $ub -lt 0 ]; then
	 	: > "$HISTORY"
		continue;
	fi
	# 随机取出一张壁纸,更换成功后写入历史
	if [ $ub -eq 0 ]; then x=0; else let "x = $RANDOM % ub + 1"; fi
	path="${que[$x]}"	
	gconftool-2 --set "/desktop/gnome/background/picture_filename" \
		    --type "string" "$path"
	[[ $? -eq 0 ]] && echo "$path" >> "$HISTORY"
	sleep $INTERVAL
done)
exit 0
:shock: :x

发表于 : 2008-09-17 15:09
solcomo
:shock: :x

发表于 : 2008-09-17 20:35
c\nc
楼上的,象棋能走了?

发表于 : 2008-09-17 21:12
solcomo
早就能走了...
就是想走哪走哪
viewtopic.php?t=136903&highlight=

发表于 : 2008-09-17 22:19
sinyadvan
不错,顶之,记得有个用python写的

Re: 随机更换壁纸的脚本,能凑合用

发表于 : 2008-10-18 0:20
goodluck1982
我是用 cron 定时执行一个随机设定墙纸的脚本的

Re: 随机更换壁纸的脚本,能凑合用

发表于 : 2008-10-19 13:25
delectate
这个不错

改下,可以弄成显示时间的壁纸啦!