🍎

macでシステム終了をフックする

2024/08/12に公開

バージョンはmacOS Sonoma 14.4.1です。 スクリプトエディタ(AppleScript)が使える環境なら多分できると思います。

やりたいこと

個人的にディレクトリ分けはそこそこしっかり管理する派なのですが、$HOME/Downloads以下は管理が行き届きづらいです。そこで、システム終了時に全て消すようにしたいです。

実行したいスクリプトを用意する

今回の場合はDownloads以下を全て強制で消すようにすれば良いでしょう。

#!/bin/sh
rm -rf $HOME/Downloads/*

実行権限の付与を忘れるとファイルが消されないので注意。

chmod +x /path/to/prepare/script

システム終了をフックする

スクリプトエディタを開いて、適当なディレクトリ以下に新規作成します。以下のようなスクリプトを書きます。

on quit
	do shell script "/path/to/prepare/script"
	continue quit
end quit

書けたらアプリケーションとして保存(ファイルフォーマットで「アプリケーション」を指定)します。
保存画面
アプリケーションは実行しないと動いてくれないので、実行します。Finderからダブルクリックでも起動できますが、起動毎に毎回アプリケーションを手動で起動するのは面倒なので設定→一般→ログイン項目から作成したアプリケーションをログイン時に開くように設定します。これで次回起動以降のシステム終了時にシステム終了(quit)がフックされて、do shell script以下に指定したスクリプトを呼び出すことができます。

Discussion