En ajoutant à la réponse de CJ, vous pouvez créer un script shell pour gérer automatiquement l'activation et la désactivation de la mise en veille avec pmset. https://apple.stackexchange.com/a/270835/408131
#!/bin/bash
#***************************************************************************
#*** noz - empêcher l'ordinateur portable de passer en veille lorsque le couvercle est fermé
#***************************************************************************
#***** définir quelques valeurs par défaut *****
BATTERY_SLEEP=5 # en minutes
DEF_WAKE_LEN=300 # en secondes
#***** déterminer la valeur du délai *****
timeout_len=${1:-$DEF_WAKE_LEN}
function prevent_sleep() {
echo
echo -n "Empêcher la mise en veille pendant $timeout_len secondes; appuyez sur pour continuer..."
sudo pmset -b disablesleep 1
sudo pmset -b sleep 0
}
function enable_sleep() {
# $1: = 0, timeout = 1, Ctrl-C = indéfini
#----- insérer un saut de ligne pour le timeout ou le Ctrl-C -----
if [[ ${1:-1} -eq 1 ]]; then echo; fi
echo "Restauration des paramètres précédents de mise en veille sur batterie : $BATTERY_SLEEP"
sudo pmset -b disablesleep 0
sudo pmset -b sleep $BATTERY_SLEEP
#----- mise en veille uniquement en cas de timeout -----
if [[ ${1:--1} -eq 1 ]]; then sudo pmset sleepnow; fi
exit
}
#***** empêcher la mise en veille *****
prevent_sleep
#***** capturer Ctrl-C *****
trap enable_sleep INT
#***** attendre une entrée *****
read -t $timeout_len
rc=$?
#***** réactiver la mise en veille normale *****
enable_sleep $rc
Le script shell désactivera la mise en veille jusqu'à ce que vous appuyiez sur la touche Entrée, moment où il réactivera les paramètres de mise en veille (alternativement, vous pouvez appuyer sur Ctrl-C pour obtenir le même résultat). Il définira également un délai (par défaut à 300 secondes/5 minutes) après lequel les paramètres de mise en veille seront automatiquement réactivés et l'ordinateur portable sera forcé de passer en veille. Bien que cela puisse être gênant si vous utilisez votre ordinateur portable en réunion, cela vous sauvera la vie si vous oubliez et mettez votre ordinateur portable dans votre sac pour rentrer chez vous.
Les lecteurs avisés noteront que ces commandes nécessitent sudo
; malheureusement, cela est inévitable à ma connaissance. Sur mon système, j'ai configuré les choses de façon à ne pas avoir à saisir mon mot de passe pour exécuter pmset
en tant que root. Pour ce faire, modifiez le fichier sudoers
(sudo visudo
) et ajoutez cette ligne :
VOTRENOMDUTILISATEUR ALL=(ALL) NOPASSWD: /usr/bin/pmset
en remplaçant "VOTRENOMDUTILISATEUR" par votre nom d'utilisateur. Vous pourriez probablement obtenir le même résultat (c'est-à-dire exécuter le script sans avoir à saisir votre mot de passe) en exécutant le script shell avec les permissions SETUID, mais je n'aime pas faire cela ; ouvrir cette seule commande via sudoers me semble moins risqué.
Pour exécuter le script, placez-le dans un répertoire de votre PATH
et appelez-le comme suit :
noz []
Quand vous arrivez à destination, il vous suffit simplement d'appuyer sur Entrée ou sur Ctrl-C et vous êtes prêt à partir. Et si vous oubliez, il se réinitialisera automatiquement et passera en veille.
Vous pouvez également configurer une Action rapide Automator, lui dire d'exécuter noz, et lui attribuer un raccourci clavier.