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に作って貰いましたが、頻繁に使うようでしたら購入を検討するのもいいかもしれません。
https://apps.apple.com/jp/app/lingon-3/id450201424?mt=12