アーキテクチャ
Random Video Wallpaper は意図的に小さく作っています。デスクトップ階層の ウィンドウには AppKit、再生には AVFoundation を使います。
構成要素
scripts/run-video-wallpaperは実行ファイルをビルドし、ローカル.appを作り、入力を検証してopenで起動します。scripts/build-release-appはdist/に配布用.app、zip、DMG を作成します。scripts/stop-video-wallpaperは.video-wallpaper.pidに記録された プロセスを停止します。Sources/RandomVideoWallpaper/main.swiftは CLI 解析、プレイリスト走査、 ウィンドウ作成、再生処理を持ちます。
ウィンドウモデル
アプリは macOS のデスクトップウィンドウ階層にボーダーレスウィンドウを作ります。 各ウィンドウはマウス入力を無視し、すべての Space に参加し、ディスプレイ変更に追従します。
これは動画壁紙の可逆的な近似です。macOS には任意の動画をシステム壁紙にする 公開 API がありません。
再生モデル
各画面は 2 つの AVPlayerLayer スロットを持つ WallpaperPlayer を所有します。 次のクリップは非アクティブなスロットに準備されます。現在のクリップが終わると、 準備済みクリップを開始し、レイヤーの opacity をアニメーションしてクロスフェードします。
プライバシーモデル
アプリが読むのはコマンドラインで渡されたローカルパスだけです。 ネットワーク通信、ファイル名のアップロード、メディアデータベースの保持は行いません。
配布モデル
リリーススクリプトは開発用に ad-hoc 署名したローカルビルドを作成します。 一般配布では Developer ID Application 証明書、hardened runtime 署名、 notarization、notarization ticket の staple を行ってから zip または DMG を公開します。