通常は
System Preferences
-> Users & Groups
-> Login Items
で管理されているログイン時に自動で起動するアプリケーションをCLIから管理する方法についてです。
概要
基本的にはAppleScriptを実行することで管理することができます。
AppleScriptをExecuteしてくれるコマンドであるosascript
を実行することによってCLIで管理できます。
現在登録されているアプリケーションを取得
$ osascript -e 'tell application "System Events" to get the name of every login item'
Alfred 3, auto_mount_nas, Android File Transfer Agent, BetterTouchTool, Synergy, Flux, witchdaemon, Dropbox, MusicManagerHelper, LadioCast, Backup and Sync
カンマスペース区切りで出力されるので、再利用するにはちょっと加工が必要そうです。
追加
Rambox.app
を 追加するケースは下記のとおり。
$ osascript -e 'tell application "System Events" to make login item at end with properties {name: "Rambox",path:"/Applications/Rambox.app", hidden:false}'
削除
$osascript -e 'tell application "System Events" to delete login item "Rambox"'
例えばMitamaeでは
CLIで管理できればMitamaeのような構成管理ツールで管理しやすくなります。
execute
を利用してみると下記のようになります。
execute "make login item" do
command 'osascript -e 'tell application "System Events" to make login item at end with properties {name: "Rambox",path:"/Applications/Rambox.app", hidden:false}''
not_if 'osascript -e 'tell application "System Events" to get the name of every login item''
not_if osascript -e 'tell application "System Events" to get the name of every login item' | awk -F ", " '{for (i=1; i<=NF; i++) print($i)}' | grep '^Rambox$'
user node.user
end
これだけではaction :delete
のような挙動は制御できないのでresourceを作成した方が良いでしょう。
Mitamae::Plugin::Resource::LoginItem
というわけでresource pluginを作成した。
macOSでMitamaeを利用している方は、どうぞご利用ください。