🌓ダークモード
メニューバーからダークモード切り替えをするアプリケーションを作った。
ダウンロード: https://github.com/mzp/DarkMenuBar/releases
🖼デモ
🌑ダークモードの登場
macOS HighSierraからメニューバーおよびドックを黒にするダークモードが利用できる。さらにMojaveではウインドウ等も黒にできるようになった。
(WWDC 2018 Keynoteより引用)
これらの変更はシステム環境設定から変更できる。
しかし、「周囲が暗いのでダークモードに切り替えたい」「気分転換にモードを変えたい」といったときに、都度システム環境設定を開くのは面倒である。 もっと気軽にメニューバーから切り替えたい。
🌟メニューバーからの切り替え
そこでメニューバーからダークモードのオン・オフをするアプリケーションを作った。https://github.com/mzp/DarkMenuBar/releasesからダウンロードできる。
🛠仕組み
ダークモードへの切り替え
切り替えはSkyLightというprivate frameworkを使うとできる。 こんな感じ。
@objc func enterDarkMode(sender: Any!) { NSLog("%@", "enter dark mode") SLSSetAppearanceThemeLegacy(1) } @objc func leaveDarkMode(sender: Any!) { NSLog("%@", "leave dark mode") SLSSetAppearanceThemeLegacy(0) }
メソッド名にLegacyが含まれてるのが不吉だけど、とりあえず無視する。 /System/Library/PreferencePanes/Appearance.prefPane
をディスアセンブルしてもこれ使ってたので、まちがってはいないと思う。
メニューバーへの組込み
WeatherBar by bgreenleeにある方法でメニューバーに組み込む。
アイコンはSketchで適当に書いた。
ログイン時に起動
ログイン時に起動はHow to launch a macOS app at login? - The.Swift.Devで実現した。
/Applications
に配置しないと動作しないのでデバッグが面倒だった。