システム環境設定(System Preferences)の「一般」で「メニューバーとDockを暗くする」(Dark Mode)の設定を変更した際のNotificationを受信して、現在のModeを検出するAppleScriptです。
ただ、ステータスバーに画像アイコンを表示して、Dark Mode/Light Modeに応じてアイコン画像を切り替えるだけなら、別にNotificationを受信して画像を差し替えるようなことをしなくても、
set aBar to current application’s NSStatusBar’s systemStatusBar()’s statusItemWithLength:(current application’s NSVariableStatusItemLength)
aBar’s setTitle:"TEST MENU"
aBar’s setMenu:statMenu
set anImage to (current application’s NSImage’s imageNamed:"statusBarIconImage")
anImage’s setTemplate:true –これだけでDark Modeの切り替えに自動対応
aBar’s setImage:anImage
★Click Here to Open This Script
ぐらいで対応できます(Xcode上のAppleScript Project)。
AppleScript名:Dark ModeのNotificationを受信する |
— Created 2018-05-01 by Takaaki Naganoya — 2018 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" use framework "AppKit" –Save This Script as "stay open applet" to try. on run current application’s NSDistributedNotificationCenter’s defaultCenter()’s addObserver:me selector:"darkModeChanged:" |name|:"AppleInterfaceThemeChangedNotification" object:(missing value) end run on quit current application’s NSDistributedNotificationCenter’s defaultCenter()’s removeObserver:me |name|:"AppleInterfaceThemeChangedNotification" object:(missing value) continue quit –超重要 end quit on darkModeChanged:(aNotification) set curMode to (my currentDarkMode:"test") as string display notification curMode end darkModeChanged: on currentDarkMode:(aNotification) tell application "System Events" tell appearance preferences set curMode to (dark mode) end tell if (curMode as boolean) = true then return "Dark" else return "Light" end if end tell end currentDarkMode: |
More from my site
(Visited 100 times, 1 visits today)
アラートダイアログ上にpath control x2を表示 v2 – AppleScriptの穴 says:
[…] 部品はひととおり作ってあったので、組み合わせただけです。アピアランスの変更Notificationを受信する部品や、アピアランステーマを判定する部品などです。 […]