Présentation

caffeinate-plus est un utilitaire en ligne de commande destiné à macOS. Son objectif principal, indiqué dans le dépôt GitHub, est de maintenir l’alimentation du MacBook active même lorsque le couvercle est refermé. Le programme s’arrête dès que l’utilisateur envoie un signal d’interruption (Ctrl+C) ou un SIGTERM, puis, si le couvercle reste fermé, le système reprend son cycle de mise en veille normal.

Mécanisme d'empêchement du sommeil

Le comportement repose sur les API de gestion d’énergie d’Apple, notamment IOKit et IOPMAssertionCreateWithName, qui permettent à un processus de créer une « assertion » empêchant le système d’entrer en mode veille. En invoquant ces appels, l’utilitaire signale au noyau macOS que le dispositif doit rester actif, contournant la logique standard qui met automatiquement en veille le portable dès la fermeture du capteur de couvercle. L’arrêt du processus libère l’assertion, rétablissant la politique de mise en veille native.

Risques thermiques et limites

Le dépôt met en garde contre une surchauffe potentielle. Lorsque le MacBook est fermé, le flux d’air est limité ; si l’utilitaire maintient le processeur en activité (par exemple lors d’une compilation ou d’un rendu vidéo), la température interne peut dépasser les seuils de sécurité. Le système macOS possède toutefois des mécanismes de protection thermique qui déclenchent une mise en veille forcée dès que les capteurs détectent une température critique, même si l’assertion d’alimentation est toujours active. Cette double couche de sécurité limite les scénarios où l’utilitaire pourrait endommager le matériel, mais ne supprime pas le risque d’usure prématurée du système de refroidissement.

Utilisation et intégration

sudo ./caffeinate+

L’invocation requiert les privilèges administrateur, car la création d’assertions d’alimentation affecte la politique globale du système. Le binaire est généralement compilé à partir du code source fourni, puis exécuté depuis le terminal. Son cycle de vie est simple : lancement, exécution jusqu’à réception d’un signal d’arrêt, puis libération de l’assertion. Pour les workflows automatisés (par ex. scripts de CI/CD locaux ou sauvegardes hors ligne), il est possible d’envelopper l’appel dans un script shell qui gère le signal SIGTERM en fonction de l’état du disque ou du réseau, garantissant ainsi que la mise en veille ne survient qu’après la fin des opérations critiques.