Я хотел бы иметь возможность отключить мой экран из командной строки.
Я знаю, что есть сочетание клавиш ctrl+ ⇧+, ⏏но я хочу сделать это из сценария оболочки или удаленно.
Есть ли способ?
Я хотел бы иметь возможность отключить мой экран из командной строки.
Я знаю, что есть сочетание клавиш ctrl+ ⇧+, ⏏но я хочу сделать это из сценария оболочки или удаленно.
Есть ли способ?
Ответы:
В OS X 10.9 вы можете просто сделать pmset displaysleepnow
. Это немедленно отключит ваш дисплей без изменения каких-либо настроек или перевода всего хоста в спящий режим.
Повышенные привилегии, кажется, не требуются (по крайней мере, в последних версиях OS X), но если вы получите сообщение о неадекватных привилегиях, вы можете это сделать sudo pmset displaysleepnow
.
На основе отзывов от комментаторов, это не доступно в OS X 10.8 или ранее.
Несмотря на то, что я не смог найти команду, которая изначально будет отображать спящий режим, есть приложение, которое вы загрузите и которое сделает это. Здесь есть два варианта.
Установите приложение в папку «Приложения» и запустите из терминала или SSH open /Applications/Sleep\ Display.app
Щелкните правой кнопкой мыши приложение из папки «Загрузки» и нажмите «Показать содержимое пакета». Перейдите Contents/MacOS
и скопируйте файл sleepdisplay.
Перейдите к /usr/bin
(вы можете использовать сочетание клавиш ⇧+ ⌘+ Gи ввести каталог) и вставить двоичный файл. Теперь вы сможете ввести команду sleepdisplay
в Терминал или через SSH, и дисплей сразу перейдет в спящий режим.
Надеюсь это поможет!
Вот простой сценарий оболочки, который сделает это.
#!/usr/bin/env bash
open /System/Library/Frameworks/ScreenSaver.framework/Versions/A/Resources/ScreenSaverEngine.app
Это запустит / запустит любые настройки, которые вы включили для Заставки на этом компьютере.
Следующий скрипт выполнит эту работу (в Leopard и более поздних версиях), но его необходимо запустить с помощью sudo
:
Предполагается, что pmset
можно установить время до отключения дисплея, но проблема в том, что значение 0 отключает функцию, а не устанавливает задержку на ноль, а значение 1 - полная минутная задержка. Волшебство здесь заключается в том, что значение 2 ^ 31, похоже, сохраняется как отрицательный ноль, который магически функционирует как «немедленно выключить дисплей».
В Tiger и более ранних версиях требовалось другое магическое число, потому что для хранения задержки в минутах использовалась внутренняя переменная размера в битах, пока дисплей не выключился.
Это имитирует поведение control- shift- ejectи может быть использован на MacBook Соотношение эфиры без ejectключа.
#!/bin/bash
original_setting=`/usr/bin/pmset -g | /usr/bin/awk '/displaysleep/ {print $2}'`
magic_number=2147483648
/usr/bin/pmset -a displaysleep $magic_number; sleep 1; /usr/bin/pmset -a displaysleep $original_setting
на macOS Сьерра
pmset displaysleepnow
caffeinate -u -t 1
pmset -g powerstate IODisplayWrangler | tail -1 | cut -c29
результаты <4 - спящий дисплейHTTP-сервер небольшого узла для удаленной установки состояния экрана вашего Mac: https://github.com/ycardon/switch-api
"echo $[$(pmset -g powerstate IODisplayWrangler | tail -1 | cut -c29) - 4]"
(используя это для true / false "is screen on?").
Выполните следующую команду, чтобы выполнить короткий AppleScript, который переводит дисплей в спящий режим:
osascript -e 'tell application "System Events" to sleep'
Название команды предполагает, что в некоторых обстоятельствах она может перевести всю систему в спящий режим, но я не смог этого сделать в ограниченном тестировании: я протестировал его с помощью сценария оболочки, который я запустил незадолго до выполнения этой команды, и он работал в течение нескольких минут, пока я "не разбудил" систему. Он продолжал печатать вывод в течение всего времени.
Очень надеюсь, что этот ответ не слишком удачен. Мой любимый способ спать, перезагружаться, выключаться - и, самое главное, блокировать - Mac использует Alfred (панель запуска приложений).
Это не требует каких-либо сценариев, знания сценариев или использования терминала, что замечательно.
Однако, если вы специально хотите использовать терминал, это, вероятно, не решение для вас.
Ну, это старый вопрос, но, похоже, нигде нет хороших ответов на этот вопрос.
Я получил AppleScript для работы, хотя для этого требуется стороннее, не поддерживаемое и не регистрируемое приложение - Extra Suites. Его можно скачать на старом сайте разработчика .
# Gets the current state of the upper left hot corner, then sets it to sleep display.
tell application "System Events"
tell expose preferences
set givenActivty to get the activity of the top left screen
set the properties of the top left screen corner to {activity:sleep display}
end tell
end tell
# Uses Mouse to Activate upper left hot corner. [Moving directly to {0, 0} does not work
tell application "Extra Suites"
ES move mouse {1, 1}
ES move mouse {0, 0}
end tell
# Restores state of upper left hot corner.
tell application "System Events"
tell expose preferences
delay 1
set the activity of the top left screen corner to givenActivty
end tell
end tell
# Gets rid of Extra Suites nag window.
tell application "Extra Suites"
quit
end tell
Я также включил его в рабочий процесс Альфреда .
Ну вот -
sudo su
pmset displaysleepnow
Использование Alfred (бесплатно в AppStore) - отличный способ перевести дисплей в спящий режим, просто написав: «sleep». Не становится проще, чем это.
Конечно, Альфред делает гораздо больше, вы также можете перезагрузить компьютер, выйти из системы, очистить корзину, заблокировать, завершить работу и многое другое.
Приложение Launchbar работает так же хорошо, как Альфред. В моём случае пробел CMD тогда S [Sleep] - просто и быстро