CommandH
macOS には不思議なルールがあります。最後に表示されているアプリは隠せないのです。ほかのアプリをすべて隠したあと、残った 1 つで Cmd+H を押しても何も起きません。ウィンドウはそのままで、デスクトップにたどり着けません。
CommandH はこれを解決する小さなメニューバーアプリです。起動しておけば、最後のアプリでも Cmd+H がいつもどおりに働きます。無料でオープンソースです。
GitHub で見る ↗
最後のアプリを扱う 2 つの方法
アプリが 2 つ以上表示されているときは、CommandH は何もせず、Cmd+H はいつもどおりに動作します。表示されているアプリが 1 つだけになると、選んだ方法で CommandH が代わりに対応します。
- Hide the app(デフォルト):最後のアプリが完全に隠れます。ほかの場面での Cmd+H とまったく同じです。代役を務めるあいだ、CommandH が一時的に Dock に表示されます。
- Show Desktop:ウィンドウが画面の端へスライドし、もう一度 Cmd+H を押すと元に戻ります。CommandH が Dock に表示されることはありません。
macOS が拒否する理由と回避策
CommandH を書く前に、最後のアプリを直接隠す方法を見つかる限り試しました。公開 API、AppleScript、アクセシビリティ、そして 2 つの非公開システムコールです。あるものはその場で拒否され、あるものは成功と報告しながら何も変わりませんでした。隠すことに成功しても、macOS は画面に何かが残るよう、直近に使ったアプリをすぐに再表示してしまいます。
これらの経路はすべて同じチェックに行き着きます。そのチェックが数えるのは通常のアプリ、つまり Dock にアイコンがあるアプリだけです。そこで、表示中のアプリが 1 つ以下になると、CommandH はほぼ透明なウィンドウを持つ通常のアプリに切り替わります。すると最後のアプリはもう最後ではなくなり、そのアプリ自身の Cmd+H が普通に働き、macOS はほかのアプリを再表示する代わりに CommandH にフォーカスを渡します。
権限もデータも不要
CommandH はアクセシビリティや画面収録の権限を求めず、ネットワーク通信も行わず、何も収集しません。画面の内容やキー入力を読み取ることもありません。Show Desktop モードでは、表示中のアプリが 1 つのときだけ Cmd+H を受け取り、状況が変わればすぐに手放します。
見えなくもできるメニューバーアプリ
設定は小さなウィンドウとメニューバーのメニューにあります。CommandH のオン・オフ、方法の選択、ログイン時に開くかどうかを設定できます。メニューバーのアイコンを完全に消して、見えない状態で動かすこともできます。「アプリケーション」フォルダから CommandH を開けば設定が再び表示され、うっかり Cmd+Q を押してもウィンドウが閉じるだけなので、誤って終了することはありません。
動作環境とインストール
CommandH は macOS 14 Sonoma 以降で動作し、MIT ライセンスのもと無料で提供しています。現時点では、1 つのスクリプトでソースコードからビルドしてインストールします。GitHub の README に手順とすべての設定をスクリーンショット付きでまとめています。アプリ全体で Swift 500 行未満です。