【cygwin】飽きの来ない背景画像にしたい。


  • 2020-08-13 USERもHOMEもcron実行中は未設定になるようです。

1. 背景

  • 飽きの来ない、Windows10の背景画像を求める。

2. 方針

  • Windowsスポットライトの画像を使ってスライドショーにする。
  • もしかしたら便利なソフトがあるかもしれなけど、cygwin+cronで解決したい。
  • Sylphyhornはcygwinを使う場合に問題がある。

3. Windows10の設定

3.1. Windows スポットライト

  1. 【Win】キー
  2. 設定→個人用設定→ロック画面
  3. 「Windows スポットライト」にする

3.2. スラライドショー

  1. 【Win】キー
  2. 設定→個人用設定→背景
  3. 「スライドショー」にする

4. スクリプト

  • $HOME/logs ディレクトリがある前提
  • exiftool は別途インストールしてください。
    • これがないと縦長の画像も背景になります。
  • cron で動きます。→エラーになっていました…orz(修正)
#!/usr/bin/bash

########## DEFINE

readonly BASENAME=`basename $0 | cut -d. -f1`
readonly LOG_FILE="$HOME/logs/${BASENAME}.log.`date '+%Y%m'`"

#readonly THE_NAME=`basename $HOME`
readonly THE_NAME="username"
readonly SRC_DIR="/cygdrive/c/Users/$THE_NAME/AppData/Local/Packages/Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy/LocalState/Assets"
readonly DST_DIR="/cygdrive/c/Users/$THE_NAME/Documents/Background"
readonly EXIFCMD="/cygdrive/c/Local/bin/exiftool"

readonly IMG_SIZE="1920x1080"

########## MAIN

_copy_()
{
        local jpg dst size

        date '+%Y/%m/%d %H:%M:%S start'

        for jpg in `find . -mtime -21 -size +300k -print`
        do
                dst=$DST_DIR/`echo ${jpg} | cut -c3-12`.jpg

                if [ -f $dst ]
                then
                        echo "found: $jpg"
                else
                        size=`$EXIFCMD $jpg | egrep '^Image Size ' | sed -e 's/\r$//; s/^.*: //;'`

                        if [ $size = $IMG_SIZE ]
                        then
                                echo "copy: $jpg"
                                cp $jpg $dst
                        else
                                echo "skip: $jpg"
                        fi
                fi
        done

        date '+%Y/%m/%d %H:%M:%S done'
}

##########

main()
{
        local mode rtn
        mode=$1

        [ ${mode:-__null__} = "debug" ] \
                && ( _copy_ || rtn=$? ) \
                || ( _copy_ >> $LOG_FILE 2>&1 || rtn=$? )

        if [ ${rtn:-0} != 0 ]
        then
                echo "_copy_: error: rtn=$rtn"
        fi

        return $rtn
}

########## EXEC

cd $SRC_DIR
main "$@"
exit $?

########## END

5. 備考

5.1. Sylphyhorn

  • 仮想デスクトップ毎に背景画像を変えてくれるソフト。なかなか良いです。
  • 切り替え直後、体感で3秒くらいcygwinが入力を受け付けなくなるので諦めました。

以上