Schalten Sie den Dunkelmodus zu einer bestimmten Zeit ein

Nach dem Upgrade auf macOS Mojave habe ich mich gefragt, ob es eine Einstellung gibt, die den Dunkelmodus zu einer bestimmten Tageszeit automatisch einschaltet.

Ich habe nur die Einstellung gefunden, um es manuell ein- und auszuschalten.

welche Einstellung, wo
Ich habe ein AppleScript, das die Änderung vornimmt (es ist eigentlich die gleiche Einstellung, die in früheren Versionen die "Dark Menu Bar and Dock" gesteuert hat), also ist es wahrscheinlich möglich, etwas mit launchctl ...

Antworten (6)

Falls jemand an einer Antwort interessiert ist, bei der Sie nichts installieren müssen, aber nur ein wenig Code berühren müssen ... Hier gehen Sie ....

So schalten Sie den Dunkelmodus mit Applescript um :

tell application "System Events"
    tell appearance preferences
        set dark mode to not dark mode
    end tell
end tell

So aktivieren Sie den Dunkelmodus mit Applescript :

tell application "System Events"
    tell appearance preferences
        set dark mode to true
    end tell
end tell

So schalten Sie den Dunkelmodus mit Applescript aus :

tell application "System Events"
    tell appearance preferences
        set dark mode to false
    end tell
end tell

Es gibt ziemlich robuste Anwendungen, die Skripte oder Aktionen zu einem bestimmten Zeitpunkt ausführen können, aber diese Anwendungen sind meistens ziemlich umfangreich und teuer. Ich wollte einen erwähnen, weil Sie damit mehr tun können, als nur den Dunkelmodus umzuschalten: Keyboard Maestro – Es ist eine Art Automator, aber besser. Lassen Sie sich nicht vom veralteten Aussehen täuschen.

Ich würde launchd verwenden , da Sie nichts installieren müssen. Es erfordert, dass Sie ein wenig Code berühren, aber nichts Wichtiges.

So lösen Sie Applescript zu einem bestimmten Zeitpunkt mit der Launchd-Eigenschaftslistendatei (plist) aus:

  1. Sie müssen eine neue .plistDatei erstellen in ~/Library/LaunchAgents(~ steht für Ihren Benutzerordner)

    • Wenn Sie möchten, dass es für alle Benutzer ausgeführt wird, legen Sie es in /Library/LaunchAgents(Macintosh HD) ein.
    • Dies .plistist nur eine Textdatei, die Sie in jedem Texteditor bearbeiten und als Text mit den Erweiterungen speichern können .plist.
    • Sie haben wahrscheinlich vorhandene Dateien in diesen Ordnern, die Sie duplizieren können, um Ihre eigenen zu erstellen. Wenn Sie eine vorhandene .plistDatei mit öffnen TextEdit.app, speichern Sie sie nicht versehentlich als .rtfDatei oder so.
  2. Kopieren Sie dies und fügen Sie es in die .plistDatei ein:


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>com.time.trigger.darkmode</string>
    <key>Program</key>
    <string>/usr/bin/osascript</string>
    <key>ProgramArguments</key>
    <array>
      <string>osascript</string>
      <string>/Users/joonaspaakko/Desktop/toggle-darkmode.scpt</string>
    </array>
    <key>StartCalendarInterval</key>
    <array>
      <dict>
        <key>Hour</key>
        <integer>21</integer>
        <key>Minute</key>
        <integer>20</integer>
      </dict>
    </array>
  </dict>
</plist>
  • Die Zeile darunter <string>osascript</string>zeigt auf die Applescript- .scptDatei, die getriggert werden soll. Sie werden dies in Schritt 3 ändern, nachdem Sie eine Skriptdatei erstellt haben.
  • Das Array darunter <key>StartCalendarInterval</key>sagt Hourund Minuteist, wo Sie die Zeit einstellen. Die aktuell eingestellte Zeit ist H 21 M 20= 21:20 Uhr

Diese Schritte sind vielleicht etwas rückständig, da ich den Skriptspeicherort bereits in festgelegt habe, .plistaber lassen Sie uns .scptals Nächstes die Datei erstellen.

  1. Führen Sie die Skript-Editor-Anwendung aus /Applications/Utilities/Script Editor.app.
    • Fügen Sie das Applescript ein, das Sie verwenden möchten (am Anfang der Antwort, falls Sie es vergessen haben)
    • Sie können die Applescripts in dieser Anwendung testen, indem Sie die Wiedergabetaste drücken.
    • Als Datei speichern Script. Wenn Sie das Skript nur selbst verwenden, speichern Sie es irgendwo in Ihrem Home-Verzeichnis. Wenn Sie dies für alle Konten einrichten, müssen Sie es an einem Ort speichern, auf den jeder zugreifen kann, z. B. /Library/Scripts.
    • Kehren Sie zu Ihrer .plistDatei aus Schritt 2 zurück und ändern Sie die folgende Zeile <string>osascript</string>so, dass sie auf Ihre neue Applescript ( .scptDatei) zeigt.
  2. Wenn beide Dateien erstellt sind, besteht ein wichtiger Schritt darin, sich abzumelden (oder neu zu starten), da diese Startagenten beim Start im Hintergrund ausgeführt werden.
    • Wenn Sie die Ausführung stoppen möchten, können Sie die .plistaus dem Ordner verschieben oder einfach löschen.
Bitte machen Sie deutlich, dass die Zeile unter <string>osascript</string> geändert werden muss. (da es derzeit Ihren Benutzerordner enthält. Stellen Sie außerdem klar, dass sich die Dateien an einem anderen Ort befinden sollten, wenn sie global ausgeführt werden sollen.
@Gert-JanRoeleveld, um ehrlich zu sein, bin ich mir nicht ganz sicher, wie ich das machen würde. Dies sind beide Dinge, die ich in der Antwort erwähne, und ich kann sehen, wie sie übersehen oder sogar falsch interpretiert werden könnten, aber ich kann diese Wörter nicht vernünftig verdrehen, um sie klarer zu machen. Das Beste, was mir einfiel, war, die Aufzählungszeichen in Zahlen zu ändern, um die Idee zu verstärken, dass sie wichtig zu lesen sind, und nicht nur kleine Hinweise. Ich weiß es aber nicht. Sie können die Antwort gerne bearbeiten, wenn Sie Ideen haben, wie Sie sie verbessern können.
Ich habe dies anfangs verwendet und ihm Punkte für Gründlichkeit gegeben, aber es lohnt sich auch, unter apple.stackexchange.com/a/346808/25450 nachzuschauen , um zu sehen, wie das Skript in die Plist eingefügt wird, indem die Schritte 2 und 3 zusammengeführt werden.

f.lux kann bei Sonnenaufgang/Sonnenuntergang zwischen den Hell-/Dunkel-Modi von Mojave wechseln ("Farbeffekte"):

OS X Dunkles Design bei Sonnenuntergang: Verwendet tagsüber das normale Design und wechselt jede Nacht bei Sonnenuntergang zum dunklen Design (Dock und Menüleiste). Durch das Deaktivieren von f.lux wird auch das dunkle Design deaktiviert.

Ooh, ich habe diese App vergessen!

Momentan gibt es keinen nativen Betriebssystemweg, aber Sie können einige Software wie verwenden

» Nachteule

Nachteule

oder schreiben Sie Ihr eigenes Skript im Apple Script Editor, um es per Mausklick zu erledigen

tell application "System Events"

  tell appearance preferences

    set dark mode to not dark mode

  end tell

end tell

Eine weitere Option ist eine Launchd-Plist, die ich für mich selbst erstellt und auf Github geteilt habe.

Mein Profil ist auf 21 Uhr und 7:15 Uhr eingestellt, Sie können dies einfach ändern. Ich habe einen einzelnen Terminalbefehl hinzugefügt, um es zu installieren. Es installiert keine Software, verwendet nur Standard-MacOS-Tools. Tatsächlich habe ich so ziemlich das Gleiche getan, was Joonas Ihnen in seiner Antwort vorgeschlagen hat, und es geteilt, damit Sie es nicht abtippen müssen.

https://github.com/superman-lopez/switchdarkmode

Wie @Gert-JanRoeleveld erwähnt hat, hat @Joonas weitgehend den richtigen Ansatz. Es gibt jedoch ein paar fehlende Details, die geklärt/verbessert werden müssen:

  • Wie bereits erwähnt, wenn Sie möchten, launchddass dieses Skript automatisch startet, wenn Sie sich anmelden, muss es in ~/Library/LaunchAgentsoder platziert werden /Library/LaunchAgents, und der Dateiname sollte mit dem „Label“-Schlüssel übereinstimmen, dh com.time.trigger.darkmode.plist. Es muss eine reine Textdatei sein. Es wird nicht gestartet, bis Sie sich das nächste Mal anmelden, es sei denn, Sie launchctl load ~/LaunchAgents/com.time.trigger.darkmode.plistzum Beispiel.
  • Die Implementierung (wie derzeit geschrieben) ruft derzeit ein externes AppleScript auf, das unter /Users/joonaspaakko/Desktop/toggle-darkmode.scpt. Andere Benutzer haben keinen Zugriff auf diese Datei, und daher funktioniert das Skript für niemanden (dies wird allgemein als schlechte Vorgehensweise angesehen).

Fügen Sie stattdessen das AppleScript in die plist selbst ein:

<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
  <dict>
    <key>Label</key>
      <string>com.time.trigger.darkmode</string>
    <key>Program</key>
      <string>/usr/bin/osascript</string>
    <key>ProgramArguments</key>
    <array>
      <string>osascript</string>
      <string>-e</string>
      <string>tell app "System Events" to tell appearance preferences to set dark mode to not dark mode</string>
    </array>
    <key>StartCalendarInterval</key>
    <array>
      <dict>
        <key>Hour</key>
          <integer>21</integer>
            <key>Minute</key>
          <integer>20</integer>
      </dict>
   </array>
  </dict>
</plist>

  • (Es ist nicht erforderlich, den Skripteditor zu verwenden oder überhaupt eine AppleScript-Datei zu erstellen.)
  • Außerdem, sofern ich mich nicht irre: Die Gutschrift für die 'Toggle'-Funktion (Lesen des Werts von dark modemit einem negierten booleschen Wert innerhalb des Befehls ) muss wirklich an Brett Terpstra gehen .
Außerdem, FWIW, gibt es eine schöne Implementierung unter github.com/katernet/darkmode , wo der Hell- und Dunkelmodus bei Sonnenuntergang und Sonnenaufgang basierend auf Ort und Datum umgeschaltet wird.
Ich mag diese Änderung mit dem Skript in der plist. Ich habe mich für local.toggle-dark-mode für das Skript/Label entschieden, aber ich denke, das hängt davon ab, wie Sie die Dateien verwalten möchten. Ich möchte gerne auf einen Blick wissen, welche mir gehören.

Eine weitere Option von Drittanbietern ist LightsOff .

Es ermöglicht auch die Steuerung, welche Apps Themen wechseln, und kann sie auch für einige andere Apps von Drittanbietern mit hellen/dunklen Themen wechseln, wenn auch nicht für alle .