概要
このスクリプトは Unlag Neo というMacアプリをビルド・起動します。 画面収録 や アクセシビリティ の権限確認と取得処理を含みます。 フルスクリーン検知や、 ステータスバーアイコン の表示も実装。 Swift で主要ロジックを記述し、Bashでアプリ構造を構築。 権限不足時のアラート表示や再起動処理も備えた設計。
Unlag Neo: macOS 画面収録・権限管理アプリのビルドスクリプト解説
-
Unlag Neo アプリのmacOS用パッケージ生成スクリプト
- 既存の Unlag Neo.app が存在する場合、エラーを表示して終了
- 必要なディレクトリ構造( Contents/MacOS, Contents/Resources)の作成
-
Swift コードのコンパイル・埋め込み
- 権限管理や画面収録ロジックをSwiftで実装
- swiftc コマンドで直接バイナリを生成し、アプリ本体に配置
-
画面収録権限 の確認・取得処理
- CGPreflightScreenCaptureAccess で権限チェック
- 権限未取得の場合、 CGRequestScreenCaptureAccess でリクエスト
- 権限がない場合はアラートを表示し、設定画面への誘導・再起動・終了を選択肢として提示
-
アクセシビリティ権限 の確認・取得処理
- AXIsProcessTrusted でアクセシビリティ権限を確認
- 未取得時はアラート表示、設定画面誘導、再起動・終了の選択肢
-
フルスクリーンウィンドウ検知 ロジック
- AXUIElement や CGWindowListCopyWindowInfo を利用し、現在のフロントアプリのウィンドウ状態を判定
- ディスプレイ全体を覆うウィンドウがあるかをチェック
-
ステータスバーアイコン の生成・表示
- NSStatusBar を利用し、22x22のカスタムアイコン("UN"の文字入り)を描画
- メニューから「有効化」「フルスクリーン時の一時停止」「ログイン時自動起動」などの設定を切り替え可能
-
画面キャプチャのダミー実装
- ScreenCaptureKit を利用し、1x1ピクセルのダミーキャプチャを10秒ごとに実行
- フレームは破棄されるが、権限維持や動作確認に利用
-
権限取得後の再起動処理
- 権限付与後に Unlag Neo を自動で再起動するロジックを実装
権限アラート・ユーザー誘導の詳細
-
画面収録権限アラート
- 権限未取得時、「設定を開く」「アプリ再起動」「終了」の選択肢を提示
- 設定画面を開いた後、「再起動」または「終了」の追加ダイアログを表示
-
アクセシビリティ権限アラート
- 画面収録権限同様、「設定を開く」「再起動」「終了」の選択肢
- 状態管理フラグでアラートの多重表示を防止
フルスクリーン検知・ウィンドウ管理
- AXUIElement 経由でフォーカスウィンドウや全ウィンドウを取得
- ウィンドウの位置・サイズ情報からディスプレイ全面を覆うかを判定
- CGWindowListCopyWindowInfo でFinder以外のフロントアプリのウィンドウを解析
ステータスバー&ユーザーインターフェース
- NSStatusBar でステータスアイコンを設置
- メニュー項目として各種スイッチ(有効化、フルスクリーン時の一時停止、ログイン時自動起動)を用意
- メニューアクションで各種設定のオンオフを即時反映
まとめ
- Unlag Neo はmacOS向けの画面収録権限・アクセシビリティ権限管理およびフルスクリーン検知ツール
- シンプルなBash+Swift構成で、権限取得や再起動を自動化
- ステータスバーからの直感的な操作性と、ユーザーへの明確な権限誘導を両立