私の場合,壁紙ディレクトリの下にサブディレクトリを掘ってジャンル毎に壁紙を入れているため,ls
コマンドではうまくファイルパスを抜けない.
しかしそこは,find
をうまく使えば絶対パスで抜ける.
set-background.sh
# !/bin/sh
PICDIR=~/Pictures/wallpapers
TARGETFILE=$HOME/.config/nitrogen/bg.jpg
interval=900
while true
do
if [ ! -e ~/.config/nitrogen/bg-saved.cfg ]; then
echo First of all you have to setup ~/.config/nitrogen/bg-saved.cfg
echo Next, change 'file' value into \$TARGETFILE.
else
JPGLIST=$(find ${PICDIR} -type f)
NUM_JPG=$(echo "$JPGLIST" | wc -l)
RAND=$(expr $(date +%s) % ${NUM_JPG} + 1)
SRC=$(echo "$JPGLIST" | head -${RAND} | tail -1)
cp -f ${SRC} ${TARGETFILE}
nitrogen --restore
sleep $interval
fi
done
私の環境では左側ディスプレイが1,右側ディスプレイが0なので,xin_-1に設定する.xin_-0だと画像が右・左にぶった切れてしまう.
.config/nitrogen/bg-saved.cfg
[xin_-1]
file=/home/username/.config/nitrogen/bg.jpg
mode=0
bgcolor=#000000
これは普通.以前はfehを使っていたが,4Kディスプレイを2分割して縦長に使うようになったので壁紙はぶちぬきにしたくなったのであった.
.xmonad/xmonad.hs
myStartupHook = do
--spawn "feh --bg-fill -z ~/Pictures/wallpapers/*"
spawn "/home/username/bin/set-background.sh"
追記
参考文献を書き忘れてた.
基本はそのまんまパクもとい参考にさせていただいたが,サブディレクトリ対応をしたのと,変数RAND
の設定時に+1をしないと境界条件でエラーを吐いたのが,この記事のnewなところ.