Como posso dormir a exibição no Terminal?

Respostas:

71

No OS X 10.9, você pode simplesmente fazer pmset displaysleepnow. Isso desligará imediatamente a tela sem alterar nenhuma das configurações ou colocar o host inteiro no modo de suspensão.

Privilégios escalados não parecem ser necessários (pelo menos nas versões recentes do OS X), mas se você receber uma mensagem sobre privilégios inadequados, poderá fazê-lo sudo pmset displaysleepnow.

Com base nos comentários dos comentaristas, isso não está disponível no OS X 10.8 ou anterior.

Sarah G
fonte
22

Embora eu não tenha sido capaz de encontrar um comando que interrompa a exibição nativamente, há um aplicativo que você baixa para fazer isso. Existem duas opções a partir daqui.

  1. Instale o aplicativo na pasta Aplicativos e, a partir do Terminal ou SSH, execute open /Applications/Sleep\ Display.app

  2. Clique com o botão direito do mouse no aplicativo na pasta Downloads e clique em "Mostrar conteúdo do pacote". Navegue Contents/MacOSe copie o arquivo sleepdisplay.

    Navegue para /usr/bin(você pode usar o atalho + + Ge digite o diretório) e cole o arquivo binário. Agora você poderá digitar o comando sleepdisplayno Terminal ou através do SSH e o display entrará em suspensão imediatamente.

Espero que isto ajude!

Matt Love
fonte
7

Aqui está um script de shell simples que fará isso.

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

Isso executará / iniciará as configurações que você ativou para o Screen Saver nesse computador.

afragen
fonte
Eu gosto deste. Copiei / colei esse código em um arquivo / usr / local / bin / ss, chmod + x, e agora posso digitar 'ss' em uma linha de comando para ativar a proteção de tela. O protetor de tela por sua vez, está configurado para pedir uma senha de um minuto após a ativação do protetor de tela (o que poderia ser reduzida ainda mais, creio eu, se necessário)
fwielstra
7

O script a seguir fará o trabalho (no Leopard e posterior), mas deve ser executado com sudo:

A premissa é que pmsetpode definir um tempo até a exibição em suspensão, mas o problema é que o valor 0 desativa o recurso, em vez de definir o atraso como zero, e o valor 1 é um atraso completo de um minuto. A mágica aqui é que um valor de 2 ^ 31 parece ser armazenado como zero negativo, que magicamente funciona como "desligar a tela imediatamente".

No Tiger e versões anteriores, era necessário um número mágico diferente, porque uma variável de tamanho de bit diferente era usada internamente para armazenar o atraso, em minutos, até que o visor desligasse.

Isso imita o comportamento de control- shift- eject, e pode ser usado no MacBook Airs sem uma ejectchave.

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

no macOS Sierra

  • exibição de suspensão: pmset displaysleepnow
  • ativar a exibição: caffeinate -u -t 1
  • estado de teste: pmset -g powerstate IODisplayWrangler | tail -1 | cut -c29resultados <4 são uma exibição adormecida

um servidor HTTP de pequeno nó para definir o status da tela do seu Mac remotamente: https://github.com/ycardon/switch-api

Yann Cardon
fonte
Você pode obter um código de saída 0 ou diferente de zero para a lógica condicional fazendo isso "echo $[$(pmset -g powerstate IODisplayWrangler | tail -1 | cut -c29) - 4]"(usando isso como true / false "a tela está ativada?").
atwixtor
4

Execute o seguinte comando para executar um AppleScript curto que coloca a tela em suspensão:

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

O nome do comando sugere que ele pode colocar o sistema inteiro em suspensão em algumas circunstâncias, mas não pude fazer isso acontecer em testes limitados: testei-o com um script de shell iniciado pouco antes de executar este comando e que estava em execução por alguns anos. minutos até eu "acordar" o sistema. Ele continuou a imprimir a saída durante todo o tempo.

Daniel Beck
fonte
2

Realmente espero que essa resposta não esteja muito fora do comum. Minha maneira favorita de dormir, reiniciar, desligar - e o mais importante - bloquear - um Mac está usando Alfred (o iniciador de aplicativos).

Não requer scripts, conhecimento de scripts ou uso de terminal, o que é brilhante.

No entanto, se você QUER especificamente usar o terminal, essa provavelmente não é a solução para você.

Mitch Rosen
fonte
2

Despertar: caffeinate -u -t 2

Dormir: pmset displaysleepnow

Dermot
fonte
1

Você pode usar o pmsetcomando para alterar o valor de displaysleep, algo como

pmset -a displaysleep 1

(requer raiz)

da4
fonte
1

Dê uma olhada no maclock do projeto github de código aberto

Por padrão, ele apenas lança o protetor de tela, mas você pode colocar a tela para dormir com:

maclock --display

Nos bastidores, é um script bash que está basicamente chamando:

pmset displaysleepnow
rublo
fonte
1

Bem, essa é antiga, mas parece que não há respostas realmente boas para essa pergunta em nenhum lugar.

Consegui que um AppleScript funcione, embora exija um aplicativo de terceiros, não mantido e não registrável - Extra Suites. Pode ser baixado no site antigo do desenvolvedor .

# 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

Também o incorporei em um Alfred Workflow .

Bruce
fonte
1

Eu fiz isso com sudo shutdown -s now.

Observe que você precisará de privilégio de administrador para fazer isso.

Tom Shen
fonte
0

Aqui está -

sudo su
pmset displaysleepnow
Manas Sharma
fonte
-1

O uso de Alfred (gratuito na AppStore) é uma ótima maneira de colocar a tela no modo de espera, basta escrever: "sleep". Não fica mais simples que isso.

Claro que Alfred faz muito mais do que isso, você também pode reiniciar, fazer logout, esvaziar lixo, bloquear, desligar e muito mais.

Alejandro Escobell
fonte
1
Isso não atende à sua necessidade de fazer isso remotamente ou via ssh.
TJ Luoma
-2

Não há necessidade de aplicativo extra, basta usar tell application "Finder" to sleep

user81191
fonte
1
Isso não dorme o computador inteiro?
nohillside
-2

O aplicativo Launchbar funciona igualmente bem como Alfred. No meu caso, a barra de espaço CMD e S [Sleep] - simples e rápido

Norm Beazer
fonte
Isso não responde à pergunta. O gregseth não está procurando uma maneira de colocar o computador em modo de suspensão com um utilitário de terceiros, mas uma maneira de colocar a tela em repouso na linha de comando .
Timothy Mueller-Harder