Windows10 のロック画面でランダムに出る自然画壁紙を自動的にコピーしておく関数です。
コピー先に無いものだけをコピーします。
init.el 等で日に一度程度実行するといいでしょう。
自分は終了フックで実行しています。
init.el 等でのセットアップ例
ここからソースを取ってきて load-path
の通った処に置き require
します。
wallpaper-spot
等変更したい変数を再設定します。
終了フックに設定する場合
(require 'wallpaper-copy)
(setq wallpaper-spot "~/img/landscape/")
(add-hook 'kill-emacs-hook #'(lambda () (wallpaper-copy)))
フックを汚さないで単純にその場で実行
(require 'wallpaper-copy)
(setq wallpaper-spot "~/img/landscape/")
(wallpaper-copy)
コピー対象の選び方
件の画像の元ファイルは変な長ったらしいハッシュ値のようなファイル名が適当につけられていて、内容に関わらず名前がかぶったりする場合もあるようなので、同じものかどうかは実体で比較しています。
サイズが同じなら先頭 256 バイトを比較して同一かどうか区別しています。
完全比較ではないですが jpeg なので違う画像ならこれでたまたま一致してしまうことはないと思うので、 コピー先にはまだ無い画像として拡張子をつけてコピーします。 (元ファイルには拡張子がない)
カスタマイズ変数
wallpaper-assets
コピー元ディレクトリ。
多分みんな同じなので通常は再設定しなくても大丈夫です。
wallpaper-spot
コピー先ディレクトリ。
デフォルトは ~/spot/
ですが無ければ自動的に make-directory されます。
wallpaper-bin-cmp-length
バイナリ比較サイズです。 バイト単位指定でデフォルトは 256 です。
これも特に変更しないでも大丈夫だと思います。
wallpaper-dup-suffix
実体は違うがコピー先に既にある名前の場合、ファイル名ノードの最後にこの文字列をつけて別の名前にしてコピーします。
デフォルトは _
で
"foo.jpg" -> "foo_.jpg"
"foo_.jpg" -> "foo__.jpg"
等となります。