2016年03月04日
壁紙に孫の写真を貼っています。
で、かわいい写真がたくさんあるので頻繁に壁紙を入れ替えてみたいんです。
しかし、その度にマウスを使って壁紙の入れ替え操作をするのは大変です。
そこでコマンド一発で変更出来ないかと思ってやってみました。
といってもパソコンはubuntu(Linux)です。
そのシェルスクリプト
cd /home/xxx/photo
ct=`ls *.jpg -1 | wc -l `
rn=`od -vAn -tu2 -N2 </dev/urandom`
no=$(( rn % ct ))
n=0
for a in `ls *.jpg`
do
[ $n -eq $no ] && img=$a
n=$(( n+1 ))
done
/usr/bin/gsettings set org.gnome.desktop.background picture-uri \
file:///home/xxx/photo/$img
説明
まず、肝心なのが壁紙をセットするコマンド、
/usr/bin/gsettings set org.gnome.desktop.background picture-uri $wall
で変更できます。
$wall はセットしたい写真のファイル名です。
ct=`ls *.jpg -1 | wc -l `
は写真の枚数を取得します。
rn=`od -vAn -tu2 -N2 </dev/urandom`
乱数を所得します。$RANDOM でもいいんですがシェルによっては使えません。
あとは乱数を使って写真の中から一枚えらびます。
本当はこれを crontab に入れて自動変更したかったんですが、なぜか crontabでは動きません。仕方なく画面にショートカットを作って変更したくなったらショートカットをクリックする、という方法でやっています。
それでも背景の通常の変更操作よりはるかに速いです。
おまけ
壁紙でスライドショーをするスクリプトです。
cd /home/xxx/photo
for img in `ls *.jpg`
do
/usr/bin/gsettings set org.gnome.desktop.background picture-uri \
file:///home/xxx/photo/$img
sleep 10s
done