LoginSignup
0
0

More than 3 years have passed since last update.

emacs で Win10 ロック画面画像を自動コピー

Last updated at Posted at 2020-08-22

Windows10 のロック画面でランダムに出る自然画壁紙を自動的にコピーしておく関数です。
コピー先に無いものだけをコピーします。
init.el 等で日に一度程度実行するといいでしょう。
自分は終了フックで実行しています。

init.el 等でのセットアップ例

ここからソースを取ってきて load-path の通った処に置き require します。
wallpaper-spot 等変更したい変数を再設定します。

終了フックに設定する場合

init.el
(require 'wallpaper-copy)
(setq wallpaper-spot "~/img/landscape/")
(add-hook 'kill-emacs-hook #'(lambda () (wallpaper-copy))) 

フックを汚さないで単純にその場で実行

init.el
(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"

等となります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0