Malheureusement, la modification des fichiers de préférences système nécessitera toujours des autorisations administratives, ce que l'utilisateur doit explicitement donner à votre script.
Heureusement, il existe un moyen d'y parvenir sans modifier les fichiers de préférences du système ! À l'aide d'AppleScript, on peut demander au démon des événements système de modifier l'apparence du système.
Je teste ceci sur mon ordinateur portable professionnel, qui ne me permet pas de modifier les préférences d'accessibilité, et je ne sais donc pas si le terminal y est activé (je soupçonne qu'il ne l'est pas). En outre, cela ne fait pas de script GUI ! (J'ai enregistré le gif ci-dessous alors que les Préférences Système n'étaient pas en cours d'exécution). Au lieu de cela, il exécute la même action que celle qui consiste à cocher la case dans les Préférences Système, mais sans avoir besoin d'accéder à cette case.
J'espère que cela fonctionnera pour vous !
AppleScript
-- Toggle dark mode
tell application "System Events" to tell appearance preferences to set dark mode to not dark mode
-- Enable dark mode, even it it's already enabled
tell application "System Events" to tell appearance preferences to set dark mode to true
-- Disable dark mode, even it it's already disabled
tell application "System Events" to tell appearance preferences to set dark mode to false
Bash
Vous ne voulez pas que quelque chose déclenche un AppleScript ? Je suis d'accord avec vous. Vous pouvez exécuter n'importe quel AppleScript depuis bash (et donc le terminal) en le passant comme une chaîne de caractères à la fonction osascript -e
commandement :
# Toggle dark mode
osascript -e 'tell application "System Events" to tell appearance preferences to set dark mode to not dark mode'
# Enable dark mode, even it it's already enabled
osascript -e 'tell application "System Events" to tell appearance preferences to set dark mode to true'
# Disable dark mode, even it it's already disabled
osascript -e 'tell application "System Events" to tell appearance preferences to set dark mode to false'
J'ai créé une application de validation de concept qui présente cette technique, ainsi que quelques autres :