Comment puis-je dormir l'affichage du terminal?

Réponses:

71

Sous OS X 10.9, vous pouvez simplement faire pmset displaysleepnow. Cela éteindra immédiatement votre écran sans modifier aucun de vos paramètres et sans mettre tout l'hôte en veille.

Les privilèges étendus ne semblent pas être nécessaires (du moins avec les versions récentes d'OS X), mais si vous recevez un message sur les privilèges inadéquats, vous pouvez le faire sudo pmset displaysleepnow.

D'après les commentaires des commentateurs, cette option n'est pas disponible sous OS X 10.8 ou une version antérieure.

Sarah G
la source
22

Bien que je n’aie pas été en mesure de trouver une commande qui mette en veille l’affichage de manière native, il existe une application que vous téléchargez qui le fera. Il y a deux options à partir d'ici.

  1. Installez l'application dans le dossier Applications et à partir de l'exécution du terminal ou de SSH open /Applications/Sleep\ Display.app

  2. Cliquez avec le bouton droit sur l'application dans le dossier Téléchargements, puis cliquez sur "Afficher le contenu du paquet". Naviguez jusqu'au Contents/MacOSfichier sleepdisplay et copiez-le.

    Accédez à /usr/bin(vous pouvez utiliser le raccourci + + Get tapez le répertoire) et collez le fichier binaire. Vous pourrez maintenant taper la commande sleepdisplaydans Terminal ou via SSH et l’affichage se mettra immédiatement en veille.

J'espère que cela t'aides!

Matt Love
la source
7

Voici un script shell simple qui le fera.

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

Ceci exécutera / démarrera les paramètres que vous avez activés pour l’économiseur d’écran sur cet ordinateur.

afragen
la source
J'aime celui la. J'ai copié / collé ce code dans un fichier / usr / local / bin / ss, chmod + x, et je peux maintenant taper 'ss' dans une ligne de commande pour activer l'économiseur d'écran. L'économiseur d'écran est quant à lui configuré pour demander un mot de passe une minute après l'activation de l'économiseur d'écran (qui pourrait être abaissé davantage, je crois, si nécessaire)
fwielstra
7

Le script suivant fera le travail (dans Leopard et versions ultérieures), mais il doit être exécuté avec sudo:

Le principe est que vous pmsetpouvez définir un délai avant la mise en veille de l'affichage, mais le problème est qu'une valeur de 0 désactive la fonctionnalité, plutôt que de définir le délai à zéro, et une valeur de 1 correspond à un délai d'une minute. La magie ici est qu’une valeur de 2 ^ 31 semble être stockée comme un zéro négatif, ce qui fonctionne comme par magie en "éteignant l’affichage immédiatement".

Dans Tiger et les versions antérieures, un nombre magique différent était nécessaire, car une variable de taille binaire différente était utilisée en interne pour stocker le délai, en minutes, jusqu'à ce que l'affichage s'éteigne.

Cela imite le comportement de control- shift- ejectet peut être utilisé sur un MacBook Air sans ejectclé.

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

sur macOS Sierra

  • affichage de sommeil: pmset displaysleepnow
  • affichage de réveil: caffeinate -u -t 1
  • état de test: les pmset -g powerstate IODisplayWrangler | tail -1 | cut -c29résultats <4 sont en veille

un serveur HTTP à petit nœud pour définir l’état de l’écran de votre Mac à distance: https://github.com/ycardon/switch-api

Yann Cardon
la source
Vous pouvez obtenir un code de sortie nul ou non nul pour la logique conditionnelle "echo $[$(pmset -g powerstate IODisplayWrangler | tail -1 | cut -c29) - 4]"(en utilisant ceci pour true / false "is screen on?").
Atwixtor
4

Exécutez la commande suivante pour exécuter un AppleScript court qui met l'affichage en veille:

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

Le nom de la commande suggère qu'il peut mettre le système entier en veille dans certaines circonstances, mais je ne pouvais pas le faire en effectuant des tests limités. minutes jusqu'à ce que je "réveille" le système. Il avait continué à imprimer le résultat pendant tout le temps.

Daniel Beck
la source
2

J'espère vraiment que cette réponse n'est pas trop en dehors des sentiers battus. Ma façon préférée de dormir, de redémarrer, d’arrêter - et surtout de verrouiller - un Mac utilise Alfred (le lanceur d’application).

Il ne nécessite aucun script, connaissance des scripts ou utilisation de terminal, ce qui est génial.

Cependant, si vous VOULEZ utiliser un terminal, ce n'est probablement pas la solution pour vous.

Mitch Rosen
la source
2

Réveiller: caffeinate -u -t 2

Sommeil: pmset displaysleepnow

Dermot
la source
1

Vous pouvez utiliser la pmsetcommande pour modifier la valeur de displaysleep, par exemple

pmset -a displaysleep 1

(nécessite root)

da4
la source
1

Jetez un coup d'oeil au maclock du projet open source github

Par défaut, il lance simplement l'économiseur d'écran, mais vous pouvez mettre l'affichage en veille avec:

maclock --display

Sous les couvertures, il s’agit d’un script bash qui consiste essentiellement à appeler:

pmset displaysleepnow
rouble
la source
1

C'est un vieux problème, mais il semble qu'il n'y ait pas vraiment de bonnes réponses à cette question.

J'ai un AppleScript au travail, bien qu'il nécessite une application tierce, non maintenue et non enregistrable, Extra Suites. Il peut être téléchargé sur l' ancien site Web du développeur .

# 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

Je l'ai également incorporé à un flux de travail Alfred .

Bruce
la source
1

Je l'ai fait avec sudo shutdown -s now.

Notez que vous aurez cependant besoin du privilège administrateur.

Tom Shen
la source
0

Voici -

sudo su
pmset displaysleepnow
Manas Sharma
la source
-1

Utiliser Alfred (gratuit sur l'AppStore) est un excellent moyen de mettre l'affichage en veille en écrivant simplement: "sommeil". Ne devient pas plus simple que ça.

Bien sûr, Alfred fait beaucoup plus que cela, vous pouvez également redémarrer, vous déconnecter, vider la corbeille, verrouiller, arrêter et bien d'autres choses encore.

Alejandro Escobell
la source
1
Cela ne répond pas à son besoin de le faire à distance ou via ssh.
TJ Luoma
-2

Pas besoin d'app supplémentaire, il suffit d'utiliser tell application "Finder" to sleep

utilisateur81191
la source
1
Est-ce que ça ne met pas tout l'ordinateur en veille?
nohillside
-2

L'application Launchbar fonctionne aussi bien que Alfred. Dans mon cas, la barre d'espace CMD puis S [Sleep] - simple et rapide

Norm Beazer
la source
Cela ne répond pas à la question. gregseth ne recherche pas un moyen de mettre l'ordinateur en veille avec un utilitaire tiers, mais un moyen de mettre l' écran en veille depuis la ligne de commande .
Timothy Mueller-Harder