
Mac OS X – Hiding Login Items Window
自宅で使っているMacを起動してOS Xにログインした際に様々なアプリを自動で起動するようにしています。主に仕事やプライベートで使っているLINEやWhatsAppといったコミュニケーション目的にクライアントアプリですが、システム環境設定 -> ユーザとグループ -> ログイン項目にそれらのアプリを追加して自動起動するようにしています。しかし、結構な確率で非表示にチェックを入れていてもアプリウィンドウが隠れない、最小化されない、非表示にならない、という事態が起こります。

OS Xからの指示でアプリの読み込み完了後にウィンドウを隠すアプリ側の対応が必要なのではないかと思うのですが、Mac起動後クリーンな画面で使い始めたいのに残念です。
そこで、AppleScriptで自動起動したいアプリを立ち上げて、それらのウィンドウを隠す、というスクリプトを組んでみました。
delay 30 tell application "Leaf" to activate tell application "Microsoft Teams" to activate tell application "WhatsApp" to activate tell application "Skype" to activate tell application "LINE" to activate delay 10 tell application "Finder" set visible of process "Leaf" to false set visible of process "Microsoft Teams" to false set visible of process "WhatsApp" to false set visible of process "Skype" to false set visible of process "LINE" to false end tell
スクリプトエディターを立ち上げ、上述のスクリプトをベースに起動したいアプリ名(” “で囲まれているアプリ名)を書き換え、それをアプリケーションとして保存すれば使えるはずです。保存したアプリをダブルクリックすると、30秒経過してからアプリが起動して、さらに10秒後にアプリのウィンドウが非表示になると思います。(初回はシステム環境設定のプライバシー設定を変更するよう警告が表示されると思います。)
意図的に最初に30秒の遅延を入れているのは、私が使っているMacBook Pro (Retina, 13-inch, Early 2015)がパフォーマンス的に遅く、OSや他のアプリ等の読み込みに時間がかかるのでCPUが落ち着いてからアプリ起動を始めるためです。
後はログイン項目から個別のアプリを削除して、このスクリプトのアプリケーションをログイン項目に追加すれば完了です。

この方法を使ってもウィンドウを非表示に出来ないソフトウェアKVMのBarrierというアプリがありますが、これも別の方法でウィンドウを隠すことが出来ます。別の機会にまた紹介したいと思います。