Python code to detect dark mode in OS X El Capitan to change the status bar menu icon

谁说我不能喝 提交于 2019-12-02 11:58:55

问题


I have objective C code to detect dark mode to change the status bar:

[[NSDistributedNotificationCenter defaultCenter] addObserver:self selector:@selector(darkModeChanged:) name:@"AppleInterfaceThemeChangedNotification" object:nil];

Similarly, how can we do the same in python?


回答1:


Try these following lines wherever you want to detect the mode (dark mode or light mode).

center = NSDistributedNotificationCenter.defaultCenter()
center.addObserver_selector_name_object_(self,"enableDarkMode",'AppleInterfaceThemeChangedNotification',None)



回答2:


I don't know if you can do this directly from within python. But at least you can invoke the terminal command defaults read -g AppleInterfaceStyle.

Currently its behavior is like this: If its exit code is 0, it reports "dark mode". If it is 1 (error), you can assume light mode. This isn't very clean in my opinion, but it works and is used successfully from a Java program.

How to spawn a new process from within python is a different question, which has already been answered.




回答3:


In python os module may come in handy to detect the mode.

Basically, we use python to access and run terminal command to find AppleInterfaceStyle property in default settings.

import os

has_interface = os.popen("defaults find AppleInterfaceStyle").read()
if not has_interface:
    print("Use a light Style")
else:
    interface_system = os.popen("defaults read -g AppleInterfaceStyle").read()
    print("Interface Style:" + interface_system) # interface_system = 'Dark\n'


来源:https://stackoverflow.com/questions/37108924/python-code-to-detect-dark-mode-in-os-x-el-capitan-to-change-the-status-bar-menu

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!