Не давайте Mac засыпать из командной строки с помощью keepresso CLI
Keepresso поставляется с небольшим инструментом командной строки, чтобы управлять им из терминала, shell-скрипта, Makefile или задачи CI, не обращаясь к строке меню. Команда называется keepresso, и она работает двумя способами: она может общаться с приложением в строке меню или сама держать Mac активным, как встроенная caffeinate.
Установите команду
Если вы установили Keepresso через Homebrew, команда keepresso уже есть в вашем PATH, ничего делать не нужно:
brew install --cask gyorgysh/keepresso/keepresso
Если вы установили приложение из DMG, инструмент лежит внутри пакета приложения, и ваш PATH пока о нём не знает. Свяжите его один раз:
sudo ln -s /Applications/Keepresso.app/Contents/Helpers/keepresso /usr/local/bin/keepresso
Проверьте, что всё подключено:
keepresso version
Управление приложением
Эти команды передаются приложению Keepresso, запуская его, если оно ещё не работает. Это управляемый скриптами двойник меню.
keepresso start # запустить сессию без ограничения по времени
keepresso start --for 90 # запустить сессию на 90 минут
keepresso start --until 18:00 # работать до заданного времени
keepresso stop # завершить текущую сессию
keepresso toggle # включить или выключить
Так долгая задача может будить Mac при начале и давать ему заснуть по завершении:
keepresso start
make release
keepresso stop
Читайте статус
keepresso status сообщает, выполняется ли сессия, и её код выхода легко использовать для ветвления в скрипте:
0Mac поддерживается активным1не поддерживается2приложение не запущено
keepresso status && echo "awake" || echo "asleep"
Добавьте --json для ответа, пригодного для машинной обработки:
keepresso status --json
То же состояние сессии также отражается в файле, так что приложение в строке меню, строка статуса или виджет могут прочитать его, ничего не запуская:
~/Library/Application Support/Keepresso/status.json
В нём хранится текущее состояние и метки времени в формате ISO 8601.
Автономное удержание без приложения
Иногда вы вообще не хотите привлекать приложение, вам просто нужно, чтобы вот эта конкретная оболочка не давала Mac заснуть, точно как caffeinate. В этом режиме сам процесс keepresso удерживает power assertion, и Mac свободен снова заснуть в момент его завершения.
keepresso -i # удерживать до нажатия Ctrl-C
keepresso -t 3600 # удерживать заданное число секунд
keepresso -w 5123 # удерживать до завершения процесса 5123
keepresso -d # также не давать засыпать дисплею (сочетается с остальными)
keepresso -u # объявить активность пользователя: разбудить дисплей сейчас
Самый полезный паттерн, это привязать бодрствование к жизни команды или оболочки:
keepresso -w $$ & # оставаться активным, пока жива эта оболочка
ffmpeg -i in.mov out.mp4 && keepresso stop
Поскольку эти удержания, это настоящие power assertion macOS, они видны в pmset -g assertions и в собственной панели активности Keepresso, рядом с любым другим приложением, удерживающим Mac активным.
Смотрите также
- Управляйте Keepresso из Shortcuts, Raycast или скрипта о действиях Shortcuts и URL-схеме
keepresso://для автоматизации без терминала. - Альтернатива caffeinate для macOS о том, как Keepresso соотносится со встроенной командой
caffeinate.
Получите Keepresso
Бесплатно и с открытым исходным кодом, для macOS 14 и новее. Установите его и не давайте Mac засыпать на ваших условиях.
Ещё в Использование Keepresso