После обновления до macOS Mojave мне было интересно, есть ли настройка, которая автоматически включала бы темный режим в определенное время суток?
Я нашел только настройку, чтобы включать и выключать его вручную.
В случае, если кто-то заинтересован в ответе, который не требует от вас ничего устанавливать, но требует, чтобы вы немного коснулись кода... Вот, пожалуйста....
Как переключить темный режим с помощью Applescript :
tell application "System Events"
tell appearance preferences
set dark mode to not dark mode
end tell
end tell
Как включить темный режим с помощью Applescript :
tell application "System Events"
tell appearance preferences
set dark mode to true
end tell
end tell
Как отключить темный режим с помощью Applescript :
tell application "System Events"
tell appearance preferences
set dark mode to false
end tell
end tell
Существуют довольно надежные приложения, которые могут запускать сценарии или действия в определенное время, но эти приложения в основном довольно обширны и дороги. Я хотел бы упомянуть один, потому что он позволяет вам делать больше, чем просто переключать темный режим: Keyboard Maestro — это что-то вроде Automator, но лучше. Не позволяйте устаревшему виду обмануть вас.
Я бы использовал launchd , потому что вам не нужно ничего устанавливать. Это требует от вас небольшого прикосновения к коду, но ничего серьезного.
Как запустить Applescript в определенное время с помощью файла списка свойств Launchd (plist):
Вам нужно создать новый .plist
файл в ~/Library/LaunchAgents
(~ представляет вашу пользовательскую папку)
/Library/LaunchAgents
(Macintosh HD)..plist
просто текстовый файл, который вы можете отредактировать в любом текстовом редакторе и сохранить как текст с расширениями .plist
..plist
файл с помощью TextEdit.app
, вы не сможете случайно сохранить его как .rtf
файл или что-то в этом роде.Скопируйте и вставьте это в .plist
файл:
<?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>
<string>osascript</string>
указывает на файл Applescript .scpt
, который должен быть запущен. Вы измените это на шаге 3 после создания файла сценария.<key>StartCalendarInterval</key>
, который говорит Hour
и Minute
является местом, где вы устанавливаете время. Текущее установленное время H 21 M 20
= 21:20.Эти шаги, возможно, немного обратные, так как у меня уже есть местоположение скрипта, установленное в файле, .plist
но давайте создадим .scpt
файл дальше.
/Applications/Utilities/Script Editor.app
.
Script
файл. Если вы сами используете скрипт, сохраните его где-нибудь в своем домашнем каталоге. Если вы настраиваете это для всех учетных записей, вам нужно будет хранить их в месте, доступном для всех, например в /Library/Scripts
..plist
файлу с шага 2 и измените строку ниже <string>osascript</string>
, чтобы она указывала на ваш новый Applescript ( .scpt
файл)..plist
из папки или просто удалить.f.lux может переключаться между светлым/темным режимом Мохаве на рассвете/закате («Цветовые эффекты»):
Темная тема OS X на закате: использует обычную тему в течение дня и переключается на темную тему (док-станция и строка меню) каждую ночь на закате. Отключение f.lux также отключит темную тему.
На данный момент нет собственного способа ОС, но вы можете использовать некоторые программы, такие как
» Сова
или напишите свой собственный сценарий в редакторе сценариев Apple , чтобы сделать это, нажав
tell application "System Events"
tell appearance preferences
set dark mode to not dark mode
end tell
end tell
Другой вариант — список запуска, который я создал для себя и выложил на Github.
Мой профиль настроен на 9 вечера и 7:15 утра, вы можете легко изменить это. Я включил одну команду терминала для его установки. Он не устанавливает никакого программного обеспечения, использует только стандартные инструменты macOS. На самом деле я сделал почти то же самое, что Йоонас предложил вам сделать в своем ответе, и поделился им, чтобы вам не пришлось его печатать.
Как упомянул @Gert-JanRoeleveld, у @Joonas во многом правильный подход. Однако есть несколько недостающих деталей, которые необходимо уточнить/улучшить:
launchd
сценарий автоматически запускался при каждом входе в систему, его необходимо поместить в ~/Library/LaunchAgents
или /Library/LaunchAgents
, а имя файла должно соответствовать ключу «Label», т. е. com.time.trigger.darkmode.plist
. Это должен быть обычный текстовый файл. Он не запустится, пока вы не войдете в систему, если вы, launchctl load ~/LaunchAgents/com.time.trigger.darkmode.plist
например./Users/joonaspaakko/Desktop/toggle-darkmode.scpt
. Другие пользователи не будут иметь доступа к этому файлу, поэтому скрипт не будет работать ни для кого другого (обычно это считается плохой практикой).Вместо этого включите AppleScript в сам plist:
<?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>
dark mode
с отрицательным логическим значением внутри команды ) действительно должна быть передана Бретту Терпстра .Другой сторонний вариант — LightsOff .
Он также позволяет контролировать, какие приложения переключают темы, а также может переключать их для некоторых других сторонних приложений со светлой / темной темой, хотя и не для всех .
Рускес
Серебряный Волк
Мохсен