macOSのLogin ItemsをCLIで管理する方法

Apple

通常は
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を利用している方は、どうぞご利用ください。

タイトルとURLをコピーしました