☀️ダイナミックデスクトップ壁紙
Mojaveのダイナミックデスクトップでは時刻によって壁紙が変化する。 これを用いてミクさんが部屋の中を歩きまわる壁紙を作成した。
(livetune feat. 初音ミク「Redial」Music Video - YouTubeより)
🖥ダイナミックデスクトップ
macOS Mojaveの紹介ページに記載されているとおり、Mojaveでは時間の経過に応じて壁紙が変化する。
WWDCのキーノートでも、生活にあわせて変化する壁紙のデモがあった。
🛠仕組み
ダイナミックデスクトップ用の壁紙は他の壁紙と同様 /Library/Desktop Pictures
に配置されている。 異様にファイルサイズがでかい。
プレビューで開くと16枚の画像が確認できる。HEIFでは一つのファイルに複数の画像をまとめられるので、その機能を利用している。
それに加えてメタデータに時刻と画像の対応、より正確には太陽の位置と画像の対応を格納している。 ここに関しては、以下の記事が詳しい。
- macOS Mojave dynamic wallpaper – ITNEXT
- macOS Mojave dynamic wallpapers (II) – ITNEXT
- macOS Mojave wallpaper (III) – ITNEXT
💕 作る
WallpaperEngineを使った以下の壁紙の再現を目指す。動きまわってるのがかわいい。
ついったでオススメが流れてきて衝動買いしたWallpaper Engineいいぞ!
— にゃいぼん aka へらぶな (@nyaibon) 2017年1月4日
壁紙が動くだけで謎の未来感に感動している!steamで買えるぞ! pic.twitter.com/hHRSTRAuFg
livetune feat. 初音ミク「Redial」Music Video - YouTubeをダウンロードしてフレームごとに分割する。
youtube-dl 'https://www.youtube.com/watch?v=243vPl8HdVk' ffmpeg -i 'livetune feat. 初音ミク「Redial」Music Video-243vPl8HdVk.mkv' -f image2 %d.png
ここからいい感じの16枚を選ぶ。
複数の画像を束ねた上でメタデータを書き込むのは、mczachurski/wallpapper: Console application for creating dynamic wallpapers for macOS Mojaveで行なう。
brew tap mczachurski/wallpapper brew install wallpapper
macOS Mojave dynamic wallpaper – ITNEXTを参考に定義ファイルを雑に作る。
info.json
[ { "altitude": -0.3427528387535028, "azimuth": 270.9334057827345, "fileName": "1.png", "isPrimary": true, "isForLight": true, "isForDark": false }, { "altitude": -10.239758644725045, "azimuth": 81.77588714480999, "fileName": "2.png", "isPrimary": false, "isForLight": false, "isForDark": false }, { "altitude": -4.247734408075456, "azimuth": 86.33545030477751, "fileName": "3.png", "isPrimary": false, "isForLight": false, "isForDark": false }, { "altitude": 1.3890866331008431, "azimuth": 90.81267037496195, "fileName": "4.png", "isPrimary": false, "isForLight": false, "isForDark": false }, { "altitude": 7.167168970526129, "azimuth": 95.30740958876589, "fileName": "5.png", "isPrimary": false, "isForLight": false, "isForDark": false }, { "altitude": 13.08619419164163, "azimuth": 99.92062963268938, "fileName": "6.png", "isPrimary": false, "isForLight": false, "isForDark": false }, { "altitude": 40.41563946490428, "azimuth": 129.18652208191958, "fileName": "7.png", "isPrimary": false, "isForLight": false, "isForDark": false }, { "altitude": 53.43347266172774, "azimuth": 182.2330942549791, "fileName": "8.png", "isPrimary": false, "isForLight": false, "isForDark": false }, { "altitude": 38.793128200638634, "azimuth": 233.5515919580959, "fileName": "9.png", "isPrimary": false, "isForLight": false, "isForDark": false }, { "altitude": 11.089423171265878, "azimuth": 261.87159046576664, "fileName": "10.png", "isPrimary": false, "isForLight": false, "isForDark": false }, { "altitude": 5.1845753236736245, "azimuth": 266.4432737071051, "fileName": "11.png", "isPrimary": false, "isForLight": false, "isForDark": false }, { "altitude": -6.248309374122789, "azimuth": 275.44204536695247, "fileName": "12.png", "isPrimary": false, "isForLight": false, "isForDark": false }, { "altitude": -12.20770735214888, "azimuth": 280.07031589401174, "fileName": "13.png", "isPrimary": false, "isForLight": false, "isForDark": false }, { "altitude": -39.48933951993012, "azimuth": 309.41857318745144, "fileName": "14.png", "isPrimary": false, "isForLight": false, "isForDark": false }, { "altitude": -52.75318137879935, "azimuth": 2.1750965538675473, "fileName": "15.png", "isPrimary": false, "isForLight": false, "isForDark": false }, { "altitude": -38.04743388682423, "azimuth": 53.50908581251309, "fileName": "16.png", "isPrimary": false, "isForLight": false, "isForDark": true } ]
このファイルを用いてダイナミックデスクトップ用の壁紙を生成する。
wallpapper -o ~/Pictures/redial.heic -i info.json *.png
システム環境設定から設定する。なぜかサムネ画像がおかしい。
時刻を変更して動作を確認する。
✨感想
動画を壁紙にする場合と比較して変化がおだやかなので、そこまで気がちらない。よい。
こちらを覗き込む画像は夜に表示されるようにしている。 なので、出社前は空の部屋で、家かえってきてPCをつけるとミクさんと目があうので、体験としてよい。
もうちょっと応用したいが、変化してたのしい壁紙のアイデアが足りない。WallpaperEngineのときもそういう話をしていた。
「wallpaper engineめっちゃいいじゃん」「作るか」みたいな話をしたけど、結局、壁紙が動画になってるのが最高なんじゃなくて、ミクさんがかわいいだけだわ、という結論になった。
— mzp (@mzp) January 7, 2017