Eu gostaria de poder desligar minha tela da linha de comando.
Eu sei que existe o atalho de teclado ctrl+ ⇧+, ⏏mas quero fazê-lo a partir de um script de shell ou remotamente.
Há algum caminho?
Eu gostaria de poder desligar minha tela da linha de comando.
Eu sei que existe o atalho de teclado ctrl+ ⇧+, ⏏mas quero fazê-lo a partir de um script de shell ou remotamente.
Há algum caminho?
Respostas:
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.
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.
Instale o aplicativo na pasta Aplicativos e, a partir do Terminal ou SSH, execute open /Applications/Sleep\ Display.app
Clique com o botão direito do mouse no aplicativo na pasta Downloads e clique em "Mostrar conteúdo do pacote". Navegue Contents/MacOS
e 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 sleepdisplay
no Terminal ou através do SSH e o display entrará em suspensão imediatamente.
Espero que isto ajude!
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.
O script a seguir fará o trabalho (no Leopard e posterior), mas deve ser executado com sudo
:
A premissa é que pmset
pode 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
no macOS Sierra
pmset displaysleepnow
caffeinate -u -t 1
pmset -g powerstate IODisplayWrangler | tail -1 | cut -c29
resultados <4 são uma exibição adormecidaum servidor HTTP de pequeno nó para definir o status da tela do seu Mac remotamente: https://github.com/ycardon/switch-api
"echo $[$(pmset -g powerstate IODisplayWrangler | tail -1 | cut -c29) - 4]"
(usando isso como true / false "a tela está ativada?").
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.
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ê.
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
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 .
Aqui está -
sudo su
pmset displaysleepnow
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.
Não há necessidade de aplicativo extra, basta usar tell application "Finder" to sleep
O aplicativo Launchbar funciona igualmente bem como Alfred. No meu caso, a barra de espaço CMD e S [Sleep] - simples e rápido