【Mac】脱Raycast! SpotlightでMacをシャットダウン/再起動/すべてのアプリを終了する方法

Macユーザー必携アプリの筆頭といえば、マルチコマンドランチャーアプリ「Raycast」。Apple標準の「Spotlight」の超絶上位互換、みたいな存在。

しかし、MacOS TahoeでSpotlightに大幅アップデートが入り、使い勝手が大幅に向上しました。というわけで、Raycastでやっているようなことを、Spotlightでもできないかな?と脱Raycastに向けていろいろ試しているところです。

今回は、Raycastの機能でも僕がかなり使っている「シャットダウン」「再起動」「すべてのアプリを終了」をSpotlightで同じように実現する方法をご紹介します。

Raycastとは?

Raycastとは、ひとことで言うならば「Macの操作をキーボードだけで完結させるためのアプリ」。

アプリの起動はもちろん、ファイルの検索や計算機能、Macのシャットダウンや再起動などもすべてRaycastを起点として、キーボード入力だけで完結します。そう、Macで作業をするにはすべてRaycastから、なのです。

ちなみに、Raycast登場以前はAlfredが主流でしたし、僕も使っていました。

MacにはSpotlightという標準アプリがあるにも関わらず、です。Macファンとしてこれがどんなに悲しかったことか。過去に、Spotlightを拡張するためのさまざまなサービスも登場しましたが、結局AlfredやRaycastの牙城を崩すことはできませんでした。公式なのに…。

macOS TahoeでSpotlightが覚醒!

しかし、そんな不遇なSpotlightも徐々にグレードアップし、macOS Tahoeでついに覚醒しつつあります。最大の目玉は「クリップボード管理」ができるようになったこと!!これはマジで革命なんですよ。

Spotlightがついにクリップボード管理に対応。ただ、まだちょっとバグがある感じ

これまではPasteNowのようなサードパーティアプリを入れたり、それこそRaycastの機能を使うなどしていましたが、ついにMac公式のSpotlightでできるようになったのです!!うぉー!もうあれですよ、ずっと成長を見守ってきたアイドルがついに日の目を見たくらいの喜びがありますよ。

と、そんなこんなで、そろそろ脱Raycastの準備でも始めるか。と思い立った次第であります。

SpotlightでRaycast的なことをするための下準備

というわけで、Spotlightを自分なりに育てて、いずれはRaycastを卒業できるように準備していこう、ということですが、ここで重要なのが、これまたMacの公式アプリである「ショートカット」。

たとえばショートカットアプリを使って、RaycastのようにMacをシャットダウン / 再起動、そして「すべてのアプリを終了する」といったことを実現することができます。

つまりSpotlight自作のショートカットを呼び出して、やりたいことを実行する、そんな流れとなります。

Spotlightとショートカットとの連携。これが肝です。

ショートカットアプリ。使っていない人も多いのでは?

SpotlightでMacをシャットダウン / 再起動する方法

というわけで、実際に機能を実装していきましょう。

Macをシャットダウンするショートカットを作成する

まずはMacをシャットダウンするショートカットを作成していきます。

ショートカットアプリを起動して新規作成画面を開きます。ショートカットアプリを起動するには、command + space でSpotlightを起動し、「ショートカット.app」と入力し、enter 。もちろん途中までの入力でも最上部に出ていれば enter でいけます。

上部の + ボタン または command + N で新規作成画面を出します。

右のサイドバーで「apple」と検索し「AppleScriptを実行」を選択します。すると、左側のペインにAppleScriptのブロックが現れます。

デフォルトで入力されているスクリプトをすべて削除して、下記をペーストします。

-- Finder経由で自作のダイアログを出す
tell application "Finder"
	activate
	set userResult to display dialog "システム終了しますか?" buttons {"キャンセル", "システム終了"} default button "システム終了" with icon note
end tell

-- システム終了
if button returned of userResult is "システム終了" then
	tell application "System Events"
		shut down
	end tell
end if

ショートカットのタイトルを「システム終了」に変更し、ウインドウを閉じます。

Spotlightで「システム終了」と入力してみましょう。トップに今作ったショートカットが出てきたら enter で実行します。

こんな↓ダイアログが出てきたら「システム終了」してみましょう。もちろん重要なデータは保存しておいてくださいね。

無事シャットダウンできたら完成です。

クイックキーを登録

クイックキーを登録しておくと、希望するワードで確実にトップに表示することができます。

最初は勝手に「シ終」などと入力されているかもしれません。これを例えば「shutdown」と変更すると、次回から「shutdown」と入力すると確実にトップに表示されます。もっと短くするなら「shut」でもOK。

ショートカット名にShut Downと入れてもいい

英語でshutショートカット名に「システム終了 Shut Down」などと入れた方が、より安定してトップに出てくるかもしれません。

同じように、Macを再起動するショートカットを作成する

同じ手順でMacを再起動するショートカットを作成していきます。

違いは名前とAppleScript。名前を再起動(または 再起動 Restart など)にして、AppleScriptの内容をこちらに変更してください。

-- Finder経由で自作のダイアログを出す
tell application "Finder"
	activate
	set userResult to display dialog "再起動しますか?" buttons {"キャンセル", "再起動"} default button "再起動" with icon note
end tell

-- 再起動
if button returned of userResult is "再起動" then
	tell application "System Events"
		restart
	end tell
end if

Spotlightですべてのアプリを終了する方法

こちらも同じように、ショートカットを作成していきます。

手順は同じで、以下のAppleScriptをコピペします。

名前は「すべてのアプリを終了する Quit All」などにしておきましょう。

use AppleScript version "2.4"
use scripting additions

-- 【設定エリア】終了させたくないアプリを書く カンマ区切り ダブルクォーテーション
set exclusionList to {"Finder"}

tell application "System Events"
	-- 名前とIDのリストを取得
	set allNames to name of every process whose background only is false
	set allIDs to bundle identifier of every process whose background only is false
end tell

repeat with i from 1 to count of allNames
	set targetName to item i of allNames
	set targetID to item i of allIDs
	
	-- 1. Finderなどの除外リストにあるものはスキップ
	if exclusionList does not contain targetName then
		
		-- 2. 「ショートカット」アプリ自体は、途中で消すとスクリプトが止まるので一旦スキップ
		if targetName is not "Shortcuts" then
			try
				if targetID is not missing value then
					tell application id targetID to quit
				end if
			on error
				-- エラー無視
			end try
		end if
		
	end if
end repeat

-- 3. 全ての処理が終わった最後に、ショートカットアプリ自身を終了させる
try
	tell application "Shortcuts" to quit
end try

おわりに

というわけで、SpotlightでMacをシャットダウン、再起動、すべてのアプリ終了ができるようになりました。

ちなみに、ショートカットはiCloud同期ができるので、複数のMac共有で使えますし、またMac移行の際も自動的に反映されます。ここがRaycastを上回るメリットと言えます。

ただし、残念なことに、このショートカットを使う技はRaycastでも同じことができるし、さらに言えば速度も精度もまだまだRaycastの足元にも及ばないのが現状です。

まぁそんな悲しいことを言っていても始まらないので、Raycastも残しつつ、今後もSpotlight活用を掘り下げていこうかと思います。

それではよきSpotlight生活を!