Skip to content

アーキテクチャ

Random Video Wallpaper は意図的に小さく作っています。デスクトップ階層の ウィンドウには AppKit、再生には AVFoundation を使います。

構成要素

  • scripts/run-video-wallpaper は実行ファイルをビルドし、ローカル .app を作り、入力を検証して open で起動します。
  • scripts/build-release-appdist/ に配布用 .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 を公開します。

Released under the MIT License.