64 votes

Utiliser de la caféine pour éviter de s'endormir à la fermeture du couvercle sur la batterie.

Le natif caffeinate L'utilitaire ne fonctionne pas pour empêcher mon macbook de dormir lorsque je ferme l'écran. Au lieu de cela, le système se met en veille et divers services réseau (VPN, partage d'écran, appels VOIP, clients de messagerie, transferts de fichiers) échouent pendant que je passer de mon bureau à ma réunion en moins de 5 minutes.

Se promener avec le couvercle de l'ordinateur portable à moitié ouvert rend difficile de le transporter en toute sécurité avec mon café, et n'est pas du tout cool.

Le natif caffeinate est conçu pour gérer cela en tant que remplacement convivial de l'utilitaire pmset mais il semble qu'il soit conçu pour ne pas fonctionner lorsqu'il est déconnecté du courant alternatif.

Docs via man caffeinate

-s Créer une assertion pour empêcher le système de dormir. Cette assertion n'est valide que lorsque le système est fonctionnant sur le courant alternatif .

Vous recherchez une alternative native à InsomniaX o dormir .

Une fonction de délai d'attente est essentielle pour éviter que je ne mette accidentellement mon macbook mort-vivant dans un sac, ce qui entraînerait une catastrophe. ( caffeinate -t spécifie la valeur du délai d'attente en secondes)

58voto

Joe Casadonte Points 1155

Ce n'est pas idéal, mais voici une solution. Pour empêcher l'ordinateur portable de dormir lorsque le couvercle est fermé et que vous utilisez la batterie, exécutez les commandes suivantes :

sudo pmset -b sleep 0; sudo pmset -b disablesleep 1

Pour réactiver la mise en veille de l'ordinateur portable lorsque le couvercle est fermé et que la batterie est faible, exécutez les commandes suivantes :

sudo pmset -b sleep 5; sudo pmset -b disablesleep 0

Le "5" dans la deuxième série de commandes représente le nombre de minutes avant la mise en veille lorsque l'ordinateur est sur batterie ; ajustez-le comme vous le souhaitez pour votre ordinateur portable.

C'est un peu dangereux, car si vous oubliez de réactiver vos paramètres, l'ordinateur portable ne se mettra jamais en veille lorsqu'il est sur batterie. Pour cette raison, j'ai écrit un shell script pour réactiver automatiquement les paramètres :

#!/bin/bash
#***************************************************************************
#*** noz - prevent laptop from sleeping when lid is closed
#***************************************************************************

#***** set some defaults *****
BATTERY_SLEEP=5 # in minutes
DEF_WAKE_LEN=300 # in seconds

#***** determine timeout value *****
timeout_len=${1:-$DEF_WAKE_LEN}

function prevent_sleep() {
    echo
    echo -n "Preventing sleep for $timeout_len seconds; press <enter> to continue..."

    sudo pmset -b disablesleep 1
    sudo pmset -b sleep 0
}

function enable_sleep() {
    # $1: <enter> = 0, timeout = 1, Ctrl-C = undef

    #----- insert a newline for timeout or Ctrl-C -----
    if [[ ${1:-1} -eq 1 ]]; then    echo; fi
    echo "Restoring previous battery sleep setting: $BATTERY_SLEEP"

    sudo pmset -b disablesleep 0
    sudo pmset -b sleep $BATTERY_SLEEP

    #----- sleep on timeout only -----
    if [[ ${1:--1} -eq 1 ]]; then   sudo pmset sleepnow; fi
    exit
}

#***** prevent it from sleeping *****
prevent_sleep

#***** trap Ctrl-C *****
trap enable_sleep INT

#***** wait for an enter *****
read -t $timeout_len
rc=$?

#***** re-enable normal sleep *****
enable_sleep $rc

Le shell script désactivera le sommeil jusqu'à ce que vous appuyiez sur la touche Enter pour réactiver les paramètres de sommeil (vous pouvez également appuyer sur la touche Ctrl - C et obtenir la même chose). Il définit également un délai d'attente (300 secondes/5 minutes par défaut) après lequel les paramètres de veille seront automatiquement réactivés et l'ordinateur portable sera forcé de se mettre en veille. Si cela peut être pénible si vous utilisez votre ordinateur portable lors d'une réunion, cela vous sauvera la vie si vous avez oublié et mis votre ordinateur portable dans votre sac pour rentrer chez vous.

Les lecteurs avisés noteront que ces commandes requièrent sudo malheureusement, c'est inévitable AFAIK. Ce que j'ai fait sur mon système, c'est de faire en sorte que je n'aie pas à entrer mon mot de passe pour lancer le programme pmset en tant que racine. Pour ce faire, modifiez le fichier sudoers fichier ( sudo visudo ) et ajoutez cette ligne :

joe ALL=(ALL) NOPASSWD: /usr/bin/pmset

en remplaçant "joe" par votre nom d'utilisateur. Vous pourriez probablement obtenir le même résultat (c'est-à-dire exécuter le script sans avoir à entrer votre mot de passe) en exécutant le shell script 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 sur votre ordinateur. PATH et l'invoquer comme tel :

noz [<timeout in seconds>]

Lorsque vous arrivez à l'endroit où vous allez, appuyez simplement sur Enter o Ctrl - C et vous êtes prêt à partir. Et si vous l'oubliez, il se réinitialisera et se mettra en veille automatiquement.

Il y a probablement un moyen de réaliser tout cela via AppleScript, de sorte que vous puissiez lui attribuer une touche de raccourci et ainsi de suite ; j'essaierai si jamais je me lasse de l'exécuter en ligne de commande.

10voto

Simba Points 1071

Il n'y a pas de manière native de le faire. Voici ce que j'ai obtenu après quelques recherches et essais :

enter image description here

Nota:

  • L'extension du noyau de Nosleep n'a pas pu être chargée sur High Sierra
  • Le SPI privé n'est PAS pris en charge par Apple après High Sierra. Fermata est passé à la pmset méthode après la version 1.1
  • Vous devrez peut-être désactiver Gatekeeper pour laisser Insomnie fonctionnent comme prévu.
  • Les autres applications que j'ai essayées ne fonctionnent pas avec le couvercle fermé.

8voto

Alex Ryan Points 179

L'utilisateur de Github iccir a créé une petite application de menubar gratuite très pratique appelée Fermata qui fait exactement ce que vous voulez : garder un MacBook éveillé avec le couvercle fermé, et vous permettre de définir une durée de temporisation.

Je viens de l'essayer sur Mojave (10.14.2) et cela a très bien fonctionné pour moi. https://github.com/iccir/Fermata

8voto

osexp2003 Points 321

Testé sur MacOS Catalina Version 10.15.6

fonctionne aussi bien en mode batterie qu'en mode chargeur.

sudo pmset disablesleep 1

n'oubliez pas de restaurer les paramètres en

sudo pmset disablesleep 0

Ma fille ferme souvent le couvercle lorsqu'elle constate que j'ai quitté mon siège alors que je suis encore en train d'écouter YouTube, cette commande pmset m'aide à continuer à écouter YouTube.

1voto

Mitchell D Points 921

Avez-vous essayé cette application ? Je le trouve très utile pour exactement ce que vous recherchez.

Je suis presque sûr qu'il y a un délai d'attente que vous pouvez régler dans les paramètres de l'application.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X