再起動・ログアウトなどのダイアログをショートカットで表示する方法

通常macOSではメニューバーのアップルマークをクリックして「スリープ」や「再起動」、「ログアウト」などを実行できるが一部の動作にはキーボードショートカットがない。

ここではキーボードショットカットで上記画像のようなダイアログを自由に生成する方法を紹介する。

ダイアログ生成の手順

Automatorでクイックアクションのワークフローを作る

下準備としてmacOSにデフォルトでインストールされている「Automator」を起動しよう。

「新規書類」をクリックして上記の画面になったら「クイックアクション」を選択。

まず画面中央上部にある「ワークフローが受け取る項目」を「入力なし」に設定。

続いて左パネルから「AppleScriptを実行」をダブルクリックしてワークフロー作成画面にコード入力画面を表示させる。

赤枠内のデフォルトで記述されているスクリプトは削除しておく。

ひとまずこれで下準備は完了。

スクリプトを入力してダイアログを作る

続いて入力画面に好みに応じて以下のいずれかのスクリプトを貼り付ける。

「再起動/ログアウト」のダイアログの場合

set question to display dialog "再起動/ログアウト" buttons {"再起動", "ログアウト", "キャンセル"} default button 3
 set answer to button returned of question
 if answer is equal to "再起動" then
     tell application "System Events"
         restart
     end tell
 end if
 if answer is equal to "ログアウト" then
     tell application "System Events"
         log out
     end tell
 end if
 if answer is equal to "キャンセル" then
     return
 end if

再起動/シャットダウンのダイアログの場合

set question to display dialog "再起動/シャットダウン" buttons {"再起動", "シャットダウン", "キャンセル"} default button 3
 set answer to button returned of question
 if answer is equal to "再起動" then
     tell application "System Events"
         restart
     end tell
 end if
 if answer is equal to "シャットダウン" then
     tell application "System Events"
         shutdown
     end tell
 end if
 if answer is equal to "キャンセル" then
     return
 end if

スリープ/再起動のダイアログの場合

set question to display dialog "スリープ/再起動" buttons {"スリープ", "再起動", "キャンセル"} default button 3
 set answer to button returned of question
 if answer is equal to "スリープ" then
     tell application "System Events"
         sleep
     end tell
 end if
 if answer is equal to "再起動" then
     tell application "System Events"
         restart
     end tell
 end if
 if answer is equal to "キャンセル" then
     return
 end if

ここでは上記3種類のスクリプトを紹介したがスクリプトを見てみると分かる通り、このスクリプトは自由に書き換え可能なため、例えば「スリープ/ログアウト」といった組み合わせのダイアログを作ることも可能だ。

また「再起動/ログアウト」などのダイアログに表示するメッセージも自由に変更できる。

スクリプトを貼り付けたらファイルメニューから好きなタイトルを付けてワークフローを保存しよう。

アクセスシビリティにAutomatorを追加する

続いて「システム環境設定」の「セキュリティとプライバシー」を開いて「プライバシー」タブの「アクセシビリティ」をクリックして「+」ボタンから「Automator」を追加してチェックを付けておく。

キーボードショートカットにAutomatorのワークフローを割り当てる

続いてシステム環境設定の「キーボード」を開いて「ショートカットタブ」に移動する。

左パネルのサービスの項目をクリックして下にスクロールすると先ほど保存したワークフロー(上記画像ではShutdown-logout)が表示されているので、あとはこのワークフローに好きなキーボードショートカットを割り当てればOKだ。

以降はここで設定したショートカットキーを押すだけで先程のダイアログが表示されるようになる。

アプリメニューのサービスからも実行可能

なお、キーボードショートカットを使用せずともアプリケーションメニューの「サービス」の項目内からもクリックで先程のショートカットが実行可能だ。

まとめ

以上、再起動やスリープ、ログアウトなどを実行するダイアログをキーボードショートカットで表示させる方法を紹介した。

スクリプト自体は非常に簡単な構造なので自分なりに書き換えて好みのダイアログを作ってもいいだろう。