En quelques lignes de Python, il est simple de savoir si le dark mode est activé par l'utilisateur.

Voici la fonction principale :

def current_theme() -> str:
    """Get the current OS theme."""
    raise NotImplementedError


def dark_mode_in_use() -> bool:
    """Does the user has the Dark mode set?"""
    return current_theme() == "dark"

Il y a plusieurs approches possibles pour la définition de current_them().


Rubicon-ObjC

Rubicon-ObjC

from rubicon.objc import ObjCClass

def current_theme() -> str:
    NSUserDefaults = ObjCClass("NSUserDefaults")
    theme = NSUserDefaults.standardUserDefaults.stringForKey("AppleInterfaceStyle")
    return theme.lower() if theme else ""

PyObjC

PyObjC

from Foundation import NSUserDefaults

def current_theme() -> str:
    theme = NSUserDefaults.standardUserDefaults().stringForKey_("AppleInterfaceStyle")
    return theme.lower() if theme else ""

Historique

  • 2023-04-05 : refactorisation du code utilisant PyObjC, et ajout du code pour Rubicon-ObjC.