この記事では、Macで、アプリごと個別にダークモードを自動で設定する方法を解説します。
端末全体の外観モードに関わらず、アプリによって、ダークモードのオン/オフを切り替えたいシーンで便利ですよ。
関連記事 iPhone/iPadでアプリ別にダークモードを自動設定する方法
関連記事 Androidでアプリ別にダークモードを自動設定する方法
ダークモードを特定アプリごと切り替える方法
3パターン紹介します。
- Grayアプリで設定する
- ショートカットのオートメーションで設定する
- Hammerspoonのコードで設定する
比較です。
| 方法 | 特定アプリのみ ライトモード |
特定アプリのみ ダークモード |
アプリ非アクティブ で切り替え |
|---|---|---|---|
| 1 | ◯ | ✕ | – |
| 2 | ◯ | ◯ | ✕ |
| 3 | ◯ | ◯ | ◯ |
端末全体の外観モードがダークモード中も、特定アプリのみライトモードにしたいなら、1が最も簡単でオススメです。
逆のパターン(特定アプリのみダークモード)の場合、2・3が対応しています。3の方が、より手順が難しいですが、アプリ非アクティブを検知して、切り替え可能です。
1. Grayアプリで設定する
Grayアプリなら、端末全体の外観モードがダークモード中も、特定アプリのみライトモードにすることができます。
GitHubからGrayアプリをインストール、起動してください。

Releasesから最新バージョンをダウンロード

ダウンロードしたZipを解凍して、中身をアプリケーションフォルダに移す
Grayアプリを起動すると、アプリ一覧が並びます。
この中でダークモードを適用したくないアプリをクリックして、Light appearance に切り替えましょう。
なおクリックすると、当該アプリは再起動がかかります。作業中の内容があれば、保存してからにしてください。

CotEditorをLight appearanceにする例
設定は以上。
端末全体の外観モードをダークモードに切り替えても、指定したアプリはライトモードのままであれば成功です。

ダークモード中も、CotEditorはライトモードのままの例
なお、アプリをクリックすると Dark appearance にも切り替え可能ですが、機能しません。

CotEditorをDark appearanceにする例

ライトモード中は、CotEditorもライトモードのままの例
以上、説明でした。
以下、余談です(興味のある方のみどうぞ)。
Grayアプリの仕組みとして、以下コマンドを実行しています。
defaults write <Identifier> NSRequiresAquaSystemAppearance -bool YES
これを
ターミナルで実行すれば、同じことを実現できるので、わざわざGrayアプリをインストールする必要はありません。
操作に自信がある方は、お試しください。

CotEditorアプリに対して実行する例。これでCotEditorにはダークモードが反映されなくなる
なお<Identifier>の部分は、ダークモードにしたいアプリケーションIDを指定します。
これは、以下コマンドで調べることが可能です。
osascript -e 'id of app "App Name"'

CotEditorのアプリケーションIDを調べる例
元に戻したい場合は、以下コマンドを実行すればOKです。
defaults delete <Identifier> NSRequiresAquaSystemAppearance

CotEditorアプリに対して、設定を元に戻す例
macOSとして、このコマンドには逆のパターン(つまりシステム全体はライトモードで、一部アプリだけダークモード)が用意されていません。
そのため、このコマンドで動かしているGrayアプリとしても、同様に対応することができません。
これを実現したい場合、次パートで紹介する方法2・3をどうぞ。
2. ショートカットのオートメーションで設定する
プリインストールアプリ
ショートカットを使います。
「オートメーション」の+アイコンをクリックして、新規オートメーションを作成しましょう。

ショートカットを開く

赤枠をクリックして、新規オートメーションを作成
「アプリ」をクリックして、ダークモードを個別設定したいアプリを選択します。

アプリ

CotEditorアプリを選ぶ例
「開いている」・「すぐに実行」をチェックして、次へ 進みます。
なお、実行時に通知 はオフのままでOK。

開いている・すぐに実行 → 次へ
新規ショートカット を開き、検索欄に”外観”と入れて、外観モードを設定 へ進みます。

新規ショートカット

検索欄に”外観”と入れて、外観モードを設定 へ
「外観モードをダークに変更」となっていることを確認して、作成完了です。

外観モードをダークに変更
これだけだと、指定アプリを閉じてもダークモードのままとなるので、もう1つオートメーションを作成します。
先ほどと同じ流れで、指定アプリを選択して、「閉じている」・「すぐに実行」をチェックして、次へ 進みます。

赤枠+アイコンからオートメーションを追加

同じアプリに対して、閉じている・すぐに実行 → 次へ
先ほど同様に 新規ショートカットを作成 → 外観モードを設定 と進み、「外観モードをライトに変更」となっていることを確認して、作成完了です。

外観モードをライトに変更

オートメーションが2つ完成した
さっそく指定アプリを開いてみましょう。
自動的にダークモードに切り替わり、アプリを閉じると元の外観モードに戻れば成功です。

CotEditorを開くと、自動でダークモードがオン

CotEditorを閉じると、自動でダークモードがオフ
以上、説明でした。
なお留意点として、ここでいう「アプリを閉じる」とは、「アプリを終了する( ⌘ + Q )」を指します。
つまり、以下ケースはすべて”起動中”と判定され、オートメーションは発動しません(=ダークモードは切り替わりません)。
- 別アプリに切り替えた
- ウィンドウを閉じただけ( ⌘ + W )
- 最小化した( ⌘ + M )
- バックグラウンドにまわった
上記ケースでもダークモードを切り替えたい場合、次パートで紹介する方法3をどうぞ。
3. Hammerspoonのコードで設定する
Hammerspoon(ハンマースプーン)という自動化ツールを使います。
公式サイト(http://www.hammerspoon.org/)から最新版をインストールしてください。

赤枠Downloadをクリック

最新バージョンをダウンロード

ダウンロードしたZipを解凍して、中身をアプリケーションフォルダに移す
Hammerspoonを起動すると、メニューバーにアイコンが表示されます。
クリックして、Open Config へ進みます。

Open Config
以下コードを入力します。
local appWatcher = hs.application.watcher.new(function(name, event, app) if name == "App Name" then if event == hs.application.watcher.activated then hs.osascript.applescript('tell application "System Events" to tell appearance preferences to set dark mode to true') elseif event == hs.application.watcher.deactivated then hs.osascript.applescript('tell application "System Events" to tell appearance preferences to set dark mode to false') end end end) appWatcher:start()
うち”App Name“の箇所には、ダークモードを個別設定したいアプリ名を入れます。
アプリ名は、アプリケーション一覧から名前をコピーするのが確実です。

アプリ名をコピー
たとえば
Safariのダークモードを個別設定するなら、以下コードになります。
local appWatcher = hs.application.watcher.new(function(name, event, app) if name == "Safari" then if event == hs.application.watcher.activated then hs.osascript.applescript('tell application "System Events" to tell appearance preferences to set dark mode to true') elseif event == hs.application.watcher.deactivated then hs.osascript.applescript('tell application "System Events" to tell appearance preferences to set dark mode to false') end end end) appWatcher:start()

Safariはダークモードに切り替えるコード
コードを入力したら 保存 して、Hammerspoonを終了→起動してください。

保存

Hammerspoonを終了したあと、再び起動する
設定は以上。
さっそく指定アプリを開いてみましょう。
自動的にダークモードに切り替わり、アプリを閉じると元の外観モードに戻れば成功です。
ここでいう「アプリを閉じる」とは、以下全パターンを含みます。
- アプリを終了する( ⌘ + Q )
- 別アプリに切り替えた
- ウィンドウを閉じただけ( ⌘ + W )
- 最小化した( ⌘ + M )
- バックグラウンドにまわった

Safariを開くと、ダークモードになる例

Safariが非アクティブになると、ライトモードになる例
先ほどのコード雛形は、特定アプリのみダークモードにするパターンを記載しています。
もし逆のパターン(特定アプリのみライトモード)にしたい場合、2つ目の赤字trueと、3つ目の赤字falseを入れ替えてください。
たとえば
Safariなら、以下コードになります。
local appWatcher = hs.application.watcher.new(function(name, event, app) if name == "Safari" then if event == hs.application.watcher.activated then hs.osascript.applescript('tell application "System Events" to tell appearance preferences to set dark mode to false') elseif event == hs.application.watcher.deactivated then hs.osascript.applescript('tell application "System Events" to tell appearance preferences to set dark mode to true') end end end) appWatcher:start()
以上、説明でした。
指定アプリの非アクティブを検知して、ダークモード⇔ライトモードの切り替えを実現できる点で、Hammerspoonはとても便利です。
一方、切り替えのたびに画面がチラつくため、合わなければ前パートの方法1・2をどうぞ。
〆:ダークテーマをアプリ個別で設定しよう!
以上、Macでアプリ別にダークモードを自動設定する方法! 特定アプリごと個別に切り替えよう の説明でした。
端末全体の外観モードとは別に、特定アプリだけ常にダークモード(もしくはライトモード)にしたい場合、今回紹介したやり方で実現することが可能です。
ニーズに合わせて、3パターンの手順を紹介したので、ぜひお試しあれ。
コメント