Gestion du sleep macOS sur batterie via le terminal.
Par défaut, macOS met le Mac en veille à la fermeture du couvercle. Ce comportement interrompt les processus en cours (builds, tâches CLI, tunnels SSH).
Espresso désactive ce comportement sur batterie uniquement, sans toucher au profil secteur.
Coller le bloc suivant dans le terminal. Il écrit les fonctions dans ~/.zshrc et les active immédiatement.
cat >> ~/.zshrc << 'EOF'
# --- Espresso / Sleep management ------------------------------------------
'espresso-on'() {
sudo pmset -b disablesleep 1
caffeinate -i &
echo $! > /tmp/.caffeinate_pid
echo "Espresso ON — Mac ne dormira pas sur batterie"
echo "Ne pas oublier de faire 'espresso-off' a l'arrivee"
}
'espresso-off'() {
sudo pmset -b disablesleep 0
if [ -f /tmp/.caffeinate_pid ]; then
kill $(cat /tmp/.caffeinate_pid) 2>/dev/null
rm /tmp/.caffeinate_pid
fi
echo "Espresso OFF — Mac revient en mode normal"
}
'espresso-status'() {
local sleep_state=$(pmset -g | grep "SleepDisabled" | awk '{print $2}')
if [ "$sleep_state" = "1" ]; then
echo "Espresso ON — le Mac ne dort pas sur batterie"
else
echo "Espresso OFF — le Mac se met en veille normalement"
fi
}
# Warning automatique a l'ouverture du terminal
if pmset -g | grep "SleepDisabled" | grep -q " 1"; then
echo "RAPPEL : Espresso est encore ON — faire 'espresso-off' si arrive a destination"
fi
# --------------------------------------------------------------------------
EOF
source ~/.zshrc
Le mot de passe sudo est demandé lors du premier appel à espresso-on ou espresso-off.
| Commande | Action |
|---|---|
| espresso-on | Désactive le sleep sur batterie + lance caffeinate |
| espresso-off | Réactive le sleep + coupe caffeinate |
| espresso-status | Affiche l'état actuel |
espresso-on.espresso-off.En cas d'oubli, un warning s'affiche automatiquement à la prochaine ouverture d'un terminal.
| Composant | Rôle |
|---|---|
| pmset -b disablesleep | Modifie le profil batterie pour désactiver la veille système |
| caffeinate -i | Envoie des assertions de wake au kernel, empêche la veille idle |
| /tmp/.caffeinate_pid | Stocke le PID de caffeinate pour le terminer proprement |
| SleepDisabled | Clé lue dans pmset -g pour déterminer l'état réel (sensible à la casse) |
| Environnement | Statut |
|---|---|
| macOS 13+ (Ventura, Sonoma, Sequoia) | Testé |
| Apple Silicon (M1 → M4) | Consommation faible |
| Intel | Fonctionne — batterie se vide plus vite |
| zsh (défaut depuis Catalina) | Compatible |
Même fonctionnement que la version zsh, avec deux adaptations nécessaires pour bash :
Les noms de fonctions avec tirets ne sont pas supportés en bash. Les fonctions sont donc nommées avec des underscores (espresso_on, etc.) et appelées de la même façon.
echo $SHELLColler le bloc suivant dans le terminal. Il écrit les fonctions dans ~/.bash_profile et les active immédiatement.
cat >> ~/.bash_profile << 'EOF'
# --- Espresso / Sleep management ------------------------------------------
espresso_on() {
sudo pmset -b disablesleep 1
caffeinate -i &
echo $! > /tmp/.caffeinate_pid
echo "Espresso ON — Mac ne dormira pas sur batterie"
echo "Ne pas oublier de faire 'espresso_off' a l'arrivee"
}
espresso_off() {
sudo pmset -b disablesleep 0
if [ -f /tmp/.caffeinate_pid ]; then
kill $(cat /tmp/.caffeinate_pid) 2>/dev/null
rm /tmp/.caffeinate_pid
fi
echo "Espresso OFF — Mac revient en mode normal"
}
espresso_status() {
local sleep_state=$(pmset -g | grep "SleepDisabled" | awk '{print $2}')
if [ "$sleep_state" = "1" ]; then
echo "Espresso ON — le Mac ne dort pas sur batterie"
else
echo "Espresso OFF — le Mac se met en veille normalement"
fi
}
# Warning automatique a l'ouverture du terminal
if pmset -g | grep "SleepDisabled" | grep -q " 1"; then
echo "RAPPEL : Espresso est encore ON — faire 'espresso_off' si arrive a destination"
fi
# --------------------------------------------------------------------------
EOF
source ~/.bash_profile
Le mot de passe sudo est demandé lors du premier appel à espresso_on ou espresso_off.
| Commande | Action |
|---|---|
| espresso_on | Désactive le sleep sur batterie + lance caffeinate |
| espresso_off | Réactive le sleep + coupe caffeinate |
| espresso_status | Affiche l'état actuel |
espresso_on.espresso_off.En cas d'oubli, un warning s'affiche automatiquement à la prochaine ouverture d'un terminal.
| Point | zsh | bash |
|---|---|---|
| Noms de fonctions | espresso-on | espresso_on |
| Fichier de config | ~/.zshrc | ~/.bash_profile |
| Reload | source ~/.zshrc | source ~/.bash_profile |
Le fonctionnement interne (pmset, caffeinate, SleepDisabled) est identique.
| Environnement | Statut |
|---|---|
| macOS 10.14 Mojave et antérieur | Compatible (bash natif) |
| macOS 10.15+ avec bash manuel | Compatible |
| Apple Silicon (M1 → M4) | Consommation faible |
| Intel | Fonctionne — batterie se vide plus vite |