Як я можу заснути дисплей від терміналу?


49

Я хотів би мати можливість вимкнути екран із командного рядка.

Я знаю, що є комбінація клавіш ctrl+ +, але я хочу це зробити зі скрипту оболонки або віддалено.

Чи є спосіб?


Це може допомогти: apple.stackexchange.com/questions/34884/…
Хорхе

Ви також можете прочитати: stackoverflow.com/questions/1239439 / ...
jm666

Відповіді:


71

В OS X 10.9 можна просто зробити pmset displaysleepnow. Це негайно вимкне ваш дисплей, не змінюючи жодних налаштувань і не переводячи весь хост у режим сну.

Ескаліровані привілеї здаються не потрібними (принаймні, для останніх версій OS X), але якщо ви отримаєте повідомлення про неадекватні привілеї, ви можете це зробити sudo pmset displaysleepnow.

На основі відгуків коментаторів, це не доступно в ОС X 10.8 або раніше.


22

У той час як я не зміг знайти команду , яка буде спати дисплей спочатку, є додаток завантаження , який буде робити це. Тут є два варіанти.

  1. Встановіть додаток у папку «Програми» та запустіть термінал або SSH open /Applications/Sleep\ Display.app

  2. Клацніть правою кнопкою миші на додаток із папки "Завантаження" та натисніть "Показати зміст пакета". Перейдіть до Contents/MacOSта скопіюйте файл сну дисплея.

    Перейдіть до /usr/bin(ви можете використовувати ярлик + + Gта введіть каталог) та вставте двійковий файл. Тепер ви зможете набрати команду sleepdisplayв термінал або через SSH, і дисплей негайно перейде до сну.

Сподіваюся, це допомагає!


7

Ось простий скрипт оболонки, який це зробить.

#!/usr/bin/env bash
open /System/Library/Frameworks/ScreenSaver.framework/Versions/A/Resources/ScreenSaverEngine.app

Це запустить / запустить усі налаштування, які ви включили для Screen Saver на цьому комп’ютері.


Мені це подобається. Я копіюю / вставляю цей код у файл / usr / local / bin / ss, chmod + x на ньому, і тепер можу набрати 'ss' у командному рядку, щоб активувати заставку. Екранна заставка, у свою чергу, налаштована на запит пароля через хвилину після активації заставки (яку можна знизити далі, я вважаю, якщо потрібно)
fwielstra

7

Наступний скрипт виконає роботу (в Leopard та пізніших версіях), але його потрібно запустити sudo:

Припущення полягає в тому, що pmsetможна встановити час до сну дисплея, але проблема полягає в тому, що значення 0 вимикає функцію, а не встановлює затримку на нуль, а значення 1 - повну хвилину затримки. Магія тут полягає в тому, що значення 2 ^ 31, схоже, зберігається як негативний нуль, який магічно функціонує як «негайно вимкнути дисплей».

У Тигра і раніше було потрібне інше магічне число, тому що для зберігання затримки, хвилин, поки дисплей не вимкнеться, використовується внутрішня змінна розмір біт.

Це імітує поведінку control- shift- ejectі може використовуватися на MacBook Airs без 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

5

на macOS Sierra

  • дисплей сну: pmset displaysleepnow
  • нестандартний дисплей: caffeinate -u -t 1
  • тестовий стан: pmset -g powerstate IODisplayWrangler | tail -1 | cut -c29результати <4 - сплячий дисплей

невеликий сервер HTTP-сервера для віддаленого встановлення статусу екрана вашого Mac: https://github.com/ycardon/switch-api


Ви можете отримати 0 або ненульовий код виходу для умовної логіки, виконавши "echo $[$(pmset -g powerstate IODisplayWrangler | tail -1 | cut -c29) - 4]"(використовуючи це значення true / false "екран увімкнено?").
atwixtor

4

Виконайте таку команду, щоб виконати короткий AppleScript, який переводить дисплей у режим сну:

osascript -e 'tell application "System Events" to sleep'

Ім'я команди передбачає , що це може поставити всю систему сну при деяких обставинах, але я не міг зробити це сталося в обмеженому тестуванні: Я тестував його за допомогою сценарію оболонки я почав незадовго перед виконанням цієї команди, і було запущено на кілька хвилин, поки я "не прокинув" систему. Він продовжував друкувати вихід протягом усього часу.


2

Дуже сподіваюся, що ця відповідь не надто вибита з колії. Мій улюблений спосіб спати, перезапустити, вимкнути - і найголовніше заблокувати - Mac використовує Альфред (запуск програми).

Тут не потрібні сценарії, знання сценаріїв або використання терміналу, що є геніальним.

Однак якщо ви конкретно ХОЧЕТЕ використовувати термінал, це, ймовірно, не є рішенням для вас.



1

Ви можете скористатися pmsetкомандою, щоб змінити значення для дисплея, щось подібне

pmset -a displaysleep 1

(потрібен корінь)


1

Погляньте на мачлонг проекту github з відкритим кодом

За замовчуванням він просто запускає заставку, але ви можете перевести дисплей у режим сну:

maclock --display

Під обкладинками - це сценарій bash, який по суті просто викликає:

pmset displaysleepnow

1

Що ж, це стара, але, здається, ніде справді не вдається відповісти на це питання.

Я змусив 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

Я також включив його в робочий процес Альфреда .


1

Я це зробив із sudo shutdown -s now.

Зауважте, що для цього вам знадобиться привілей адміністратора.



-1

Використання Альфреда (безкоштовно в AppStore) - це прекрасний спосіб перевести дисплей у режим сну, просто написавши: "спати". Не стає простішим за це.

Звичайно, Альфред робить набагато більше того, ви також можете перезапустити, вийти з системи, порожнє сміття, блокування, відключення та багато іншого.


1
Це не відповідає його необхідності робити це віддалено або через ssh.
TJ Luoma

-2

Не потрібні додаткові програми, просто користуйтеся tell application "Finder" to sleep


1
Це не спить весь комп'ютер?
nohillside

-2

Додаток Launchbar працює однаково добре, як і Альфред. У моєму випадку пробіл CMD потім S [Сон] - простий і швидкий


Це не дає відповіді на запитання. gregseth шукає не спосіб перевести комп'ютер у режим сну за допомогою сторонньої утиліти, а спосіб перевести дисплей у режим сну з командного рядка .
Тимофі Мюллер-Хардер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.