2024/07/03

macOSでQuickTime Playerの「最近使った項目」を定期的に消去する方法

macOSでQuickTime Playerの「最近使った項目」を180分ごとに自動的に消去する方法@Sonoma

多くの青少年たちにとって、何よりものプライバシーとなり得るQuickTime Playerの履歴消去です。

もちろんメニューから手動で消すことはできますが、ちまちま消す手間と消し忘れて大惨事になる悲劇をなくしたい!w


~/Library/Containers/com.apple.QuickTimePlayerX/Data/Library/Preferences/com.apple.QuickTimePlayerX.plist

のファイルを消去すれば履歴は消えるのですが、どうもセキュリティの関係で自動処理のために使うLaunchAgentsからシェルスクリプトでの実行は "Operation not permitted" と出てエラーになってしまうようです。

そこでAppleScriptのGUIスクリプティングを使い、メニューにある「メニューを消去」を押すことにしました。

GUIスクリプティングですのでQuickTimeが起ち上がっている(メニューにアクセスできる状態の)必要があります。

以下、ブログを書くことからだいぶ遠ざかっていたので、大まかな部分はChatGPTに自動作成して貰いました。


1. AppleScriptの作成

まず、AppleScriptエディタを開き、以下のスクリプトを記述します。このスクリプトはQuickTime Playerの「最近使った項目」を消去するものです。

tell application "System Events" try tell process "QuickTime Player" click menu item "メニューを消去" of menu 1 of menu item "最近使った項目を開く" of menu 1 of menu bar item "ファイル" of menu bar 1 end tell end try end tell

スクリプトを「ClearQTMenu.scpt」という名前で保存します。

2. プロパティリストファイルの作成

次に、`LaunchAgents`のプロパティリストファイルを作成します。これにより、スクリプトが180分ごとに自動実行されます。

LaunchAgentsとLaunchDaemonsの違いは「ザリガニが見ていた」さんが分かりやすくまとめてくれています。

自動ロード
OS起動時・ログイン時には、以下の設定ファイルは自動的にロードされる。

/Users/zari/Library/LaunchAgents
zariユーザーがログインした時だけ、ロードされる。
/Library/LaunchAgents
各ユーザーがログインした時に、それぞれロードされる。(サードパーティの設定)
/Library/LaunchDaemons
OS起動時にロードされる。(サードパーティの設定)
/System/Library/LaunchAgents
各ユーザーがログインした時に、それぞれロードされる。(OSXの設定)
/System/Library/LaunchDaemons
OS起動時にロードされる。(OSXの設定)
LaunchAgentsとLaunchDaemonsの違い
LaunchAgents とは...

ログイン時にロードされる。
各ユーザーごとのlaunchdの子プロセスとなる。
GUI環境を利用したプロセスも、起動できる。

LaunchDaemons とは...

OS起動時にロードされる。
PID 1 のlaunchdの子プロセスとなる。
GUI環境を利用しないプロセスのみ、起動できる。

引用元:プロセスの源流を見に行く - ザリガニが見ていた...。 https://zariganitosh.hatenablog.jp/entry/20110805/toward_process_origin


以下の内容を`~/Library/LaunchAgents/com.example.clearqtmenu.plist`というファイルに保存します。

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>com.example.clearqtmenu</string> <key>ProgramArguments</key> <array> <string>/usr/bin/osascript</string> <string>/path/to/ClearQTMenu.scpt</string> </array> <key>StartInterval</key> <integer>10800</integer> <!-- 180分ごとに実行(秒で指定)--> <key>RunAtLoad</key> <true/> </dict> </plist>

`/path/to/ClearQTMenu.scpt`の部分は、実際に保存したAppleScriptファイルのパス(絶対パス)に置き換えてください

3. LaunchAgentのロード

作成したプロパティリストファイルを`launchctl`を使ってロードします。ターミナルを開き、以下のコマンドを実行します。

launchctl unload ~/Library/LaunchAgents/com.example.clearqtmenu.plist launchctl load ~/Library/LaunchAgents/com.example.clearqtmenu.plist

これで、AppleScriptが180分ごとに自動実行されるようになります。

4. アクセシビリティ権限の設定

最後に、`osascript`にアクセシビリティ権限を与える必要があります。システム環境設定を開き、「セキュリティとプライバシー」→「アクセシビリティ」の順に選択します。「+」ボタンをクリックして`/usr/bin/osascript`を追加し、権限を与えます。

※この部分は実行時にOSが許可するかどうか聞いてきます。

これで設定は完了です。

(QuickTime Playerが起動している状態なら)QuickTime Playerの「最近使った項目」を180分ごとに自動的に消去するスクリプトが動作するようになります。


以上です

余談ですがLaunchAgents等のxmlで書かれたプロパティリストをGUIで手軽に書く Lingon というソフト(有料)を昔愛用していました。

今回はChatGPTに作って貰いましたが、頻繁に使うようでしたら購入を検討するのもいいかもしれません。

「Lingon 3」をMac App Storeで

https://apps.apple.com/jp/app/lingon-3/id450201424?mt=12