現在のアピアランスがDark ModeかLight Modeかを検出するAppleScriptです。macOS 10.14以降用です。
System Eventsに問い合わせれば簡単に確認できますが、アプレット内/Cocoa Application内でSystem Eventsを呼び出すとセキュリティダイアログが表示されてしまうので、このぐらいで表示されてしまうのは癪なので、Cocoaの機能を利用して検出してみました。
AppleScript名:ダークモードの検出 v4 |
— – Created by: Takaaki Naganoya – Created on: 2019/12/13 — – Copyright © 2019 Piyomaru Software, All Rights Reserved — use AppleScript version "2.7" — Mojave (10.14) or later use framework "Foundation" use scripting additions set apRes to retLightOrDark() of me on retLightOrDark() set curAppearance to ((current application’s NSAppearance)’s currentAppearance()’s |name|()) as string set aDark to (current application’s NSAppearanceNameDarkAqua) as string if curAppearance = aDark then return true else return false end if end retLightOrDark |
System Eventsを使うとこんな感じになりますが、、、
AppleScript名:ダークモードの検出 v3 |
set apRes to retLightOrDark() of me
on retLightOrDark() tell application "System Events" tell appearance preferences return dark mode –returns true in dark mode end tell end tell end retLightOrDark |
More from my site
(Visited 102 times, 1 visits today)
新型アプリケーション「Kamenoko」をMac App Storeレビューに提出 – AppleScriptの穴 says:
[…] 、このアプリケーションでSystem Eventsを呼び出す必要はなかったのですが、Dark Modeの検出がmacOS 10.13でうまく働かなかったので、System EventsでDark Modeの検出を行わせるようにしていました。 […]
Xcode上で作成したアプリケーション上でDark Mode検出 – AppleScriptの穴 says:
[…] で作成したAppleScriptアプリケーションでDark Modeの検出を行いたいときに、NSAppearance’s currentAppearance()で取得したら、正しくModeの検出が行えませんでした。同じコードをスクリプトエディ […]