¿Cómo puedo dormir la pantalla desde la Terminal?

Respuestas:

71

En OS X 10.9, simplemente puedes hacer pmset displaysleepnow. Esto inmediatamente apagará su pantalla sin cambiar ninguna de sus configuraciones o poner a dormir todo el host.

Parece que no se requieren privilegios escalonados (al menos con versiones recientes de OS X), pero si recibe un mensaje sobre privilegios inadecuados, podría hacerlo sudo pmset displaysleepnow.

Según los comentarios de los comentaristas, esto no está disponible en OS X 10.8 o anterior.

Sarah G
fuente
22

Si bien no he podido encontrar un comando que suspenda la pantalla de forma nativa, hay una aplicación que descargue que lo hará. Hay dos opciones desde aquí.

  1. Instale la aplicación en la carpeta Aplicaciones y desde Terminal o SSH ejecute open /Applications/Sleep\ Display.app

  2. Haga clic derecho en la aplicación desde la carpeta Descargas y haga clic en "Mostrar contenido del paquete". Navegue Contents/MacOSy copie el archivo sleepdisplay.

    Navegue hasta /usr/bin(puede usar el acceso directo + + Gy escriba el directorio) y pegue el archivo binario. Ahora podrá escribir el comando sleepdisplayen Terminal o mediante SSH y la pantalla se apagará inmediatamente.

¡Espero que esto ayude!

Matt Love
fuente
7

Aquí hay un simple script de shell que lo hará.

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

Esto ejecutará / iniciará cualquier configuración que haya habilitado para Screen Saver en esa computadora.

Afragen
fuente
Me gusta este. Copié / pegué este código en un archivo / usr / local / bin / ss, chmod + x en él, y ahora puedo escribir 'ss' en una línea de comandos para activar el protector de pantalla. El protector de pantalla a su vez está configurado para solicitar una contraseña un minuto después de activar el protector de pantalla (creo que podría reducirse aún más, si es necesario)
Fwielstra
7

El siguiente script hará el trabajo (en Leopard y versiones posteriores), pero debe ejecutarse con sudo:

La premisa es que pmsetpuede establecer un tiempo hasta que la pantalla se apague, pero el problema es que un valor de 0 desactiva la función, en lugar de establecer el retraso en cero, y un valor de 1 es un retraso completo de un minuto. La magia aquí es que un valor de 2 ^ 31 parece estar almacenado como cero negativo, que mágicamente funciona como "apagar la pantalla inmediatamente".

En Tiger y versiones anteriores, se necesitaba un número mágico diferente, porque internamente se usaba una variable de tamaño de bit diferente para almacenar el retraso, en minutos, hasta que la pantalla se apaga.

Esto imita el comportamiento de control- shift- eject, y puede usarse en MacBook Airs sin una ejectclave.

#!/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
Daniel
fuente
5

en macOS Sierra

  • visualización del sueño: pmset displaysleepnow
  • pantalla de despertador: caffeinate -u -t 1
  • estado de prueba: los pmset -g powerstate IODisplayWrangler | tail -1 | cut -c29resultados <4 son una pantalla de sueño

un pequeño servidor HTTP de nodo para configurar el estado de la pantalla de su Mac de forma remota: https://github.com/ycardon/switch-api

Yann Cardon
fuente
Puede obtener un código de salida 0 o distinto de cero para la lógica condicional haciendo "echo $[$(pmset -g powerstate IODisplayWrangler | tail -1 | cut -c29) - 4]"(usando esto a verdadero / falso "¿está encendida la pantalla?").
atwixtor
4

Ejecute el siguiente comando para ejecutar un AppleScript corto que apague la pantalla:

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

El nombre del comando sugiere que podría suspender todo el sistema en algunas circunstancias, pero no pude hacer que eso suceda en pruebas limitadas: lo probé con un script de shell que comencé poco antes de ejecutar este comando, y eso se ejecutó durante algunos minutos hasta que "desperté" el sistema. Había seguido imprimiendo resultados durante todo el tiempo.

Daniel Beck
fuente
2

Realmente espero que esta respuesta no esté demasiado fuera de lo común. Mi forma favorita de dormir, reiniciar, apagar, y lo más importante, bloquear, una Mac está usando Alfred (el iniciador de aplicaciones).

No requiere ningún script, conocimiento de scripts o uso de terminal, lo cual es brillante.

Sin embargo, si específicamente QUIERES usar el terminal, probablemente esta no sea la solución para ti.

Mitch Rosen
fuente
2

Despertar: caffeinate -u -t 2

Dormir: pmset displaysleepnow

Dermot
fuente
1

Podría usar el pmsetcomando para cambiar el valor de displays sleep, algo así como

pmset -a displaysleep 1

(requiere root)

da4
fuente
1

Echa un vistazo al proyecto de código abierto Maclock del proyecto Github

De manera predeterminada, solo inicia el protector de pantalla, pero puede suspender la pantalla con:

maclock --display

Debajo de las cubiertas, es un script bash que esencialmente solo llama:

pmset displaysleepnow
rublo
fuente
1

Bueno, este es viejo, pero parece que no hay realmente buenas respuestas para esta pregunta en ningún lado.

Obtuve un AppleScript para funcionar, aunque requiere una aplicación de terceros, sin mantenimiento y sin registro: Extra Suites. Se puede descargar en el antiguo sitio web del desarrollador .

# 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

También lo he incorporado en un flujo de trabajo de Alfred .

Bruce
fuente
1

Lo hice con sudo shutdown -s now.

Sin embargo, tenga en cuenta que necesitará privilegios de administrador para hacer esto.

Tom Shen
fuente
0

Aqui tienes -

sudo su
pmset displaysleepnow
Manas Sharma
fuente
-1

Usar Alfred (gratis en la AppStore) es una excelente manera de poner la pantalla en modo de suspensión simplemente escribiendo: "dormir". No se vuelve más simple que eso.

Por supuesto, Alfred hace mucho más que eso, también puede reiniciar, cerrar sesión, vaciar la papelera, bloquear, apagar y muchas cosas más.

Alejandro Escobell
fuente
1
Esto no responde a su necesidad de hacerlo de forma remota o mediante ssh.
TJ Luoma
-2

No necesita una aplicación adicional, solo use tell application "Finder" to sleep

usuario81191
fuente
1
¿Esto no duerme toda la computadora?
nohillside
-2

La aplicación Launchbar funciona igual de bien que Alfred. En mi caso, barra espaciadora CMD y luego S [Suspender]: simple y rápido

Norma Beazer
fuente
Esto no responde la pregunta. Gregseth no está buscando una manera de poner la computadora en suspensión con una utilidad de terceros, sino una forma de poner la pantalla en suspensión desde la línea de comandos .
Timothy Mueller-Harder