opamp_sando's blog

クソザコが割りと適当なことを書くためにある備忘録です。あとたまに普通の日記も書きます

i3で壁紙をローテーションする

うちではfehを使ってi3の壁紙を設定している。

exec --no-startup-id feh --bg-scale $HOME/Pictures/wallpaper.png

これで$HOME/Pictures/wallpaper.pngが起動時に自動で壁紙に設定される。

普段から壁紙のローテーションはどのOSでもあんまりしないけど、なんとなくやってみた。

#!/bin/sh

#
# wplotate [FILE OR DIRECTORY]PATH [LOTATE_TIME]
#
# If LOTATE_TIME is omitted, this script behaves like "feh --bg-scale PATH".

# this needs feh command.
# -R option is suported by sort command.

if test $# -eq 0 ;then
    echo "wplocate [FILE|DIRECTORY] [LOTATE_TIME]"
    exit 1
fi

TARGET=$1
LOTATE_TIME=0

if test $# -eq 2;then
    LOTATE_TIME=$2
fi

if test $LOTATE_TIME -eq 0 ;then
    feh --bg-scale $TARGET
else
    while true;do
        for f in `ls $TARGET | sort -R`;do
            feh --bg-scale $TARGET/$f
            sleep $LOTATE_TIME
        done
    done
fi

こんなスクリプトを書いてみた。
エラー処理とかあんまりしてないので変な使い方したら変な挙動すると思うけど・・・

これを適当な場所に保存してi3の設定ファイルに

exec --no-startup-id $HOME/path/to/script $HOME/Pictures/wallpapers 3600

みたいにすると、最後に指定している秒数で壁紙が変わるようになる。 第一引数には壁紙のファイルが入ったディレクトリを指定する。ただし特に判別はしていないので、壁紙にできる画像ファイル以外のファイル(テキストファイルとか)を入れても普通 fehに渡してしまうので多分変な動作をする。
あと、最後の秒数を省略して第一引数を画像ファイルへのPATHにすると普通に壁紙を指定できる。

自分で使う分には間違えた使い方はしないので多分訂正とか面倒くさくてしないのでこんな感じで。

Firefox ブラウザ無料ダウンロード