Mise en veille d'un PC portable sous Ubuntu 15.04 (systemd)

Depuis que je suis passé à Ubuntu 15.04, mon PC portable (un Thinkpad X1 Carbon Gen 3), ne se met plus systématiquement en veille lorsque je rabats l'écran. Cela se produit en fait lorsqu'un moniteur externe est connecté : le système bascule l'affichage sur le moniteur externe au lieu de se mettre en veille.

Avis

ATTENTION : Cet article date de 2015 et la solution qui y est présentée de fonctionne plus depuis un bout de temps. Heureusement, j'ai rédigé un nouvel article pour résoudre ce problème bien ennuyant. 😉️

Il était auparavant possible de forcer la mise en veille via l'option GSettings "org.gnome.settings-daemon.plugins.power.lid-close-suspend-with-external-monitor", option également disponible via l'outil graphique gnome-tweak-tool, mais cette dernière n'a plus aucun effet depuis Ubuntu 15.04. Ceci est dû au passage à systemd. En effet, systemd gère lui-même les actions à mener en réaction à certains événements tels que la fermeture de l'écran du PC portable ou l'appuie sur le bouton d'alimentation. Il faut donc maintenant définir le comportement souhaité dans les fichiers de configuration de systemd (et plus précisément dans celui du module Logind).

gnome-tweak-tool Lid Close Option

Note

NOTE : Bien que je parle dans cet article de la distribution Ubuntu, ce qui va suivre fonctionne pour toutes les distributions embarquant systemd (Debian 8, Archlinux, Fedora, openSUSE…).

Pour modifier les actions à entreprendre lorsque l'écran du pc portable est rabattu, il faut éditer (en root) le fichier "/etc/systemd/logind.conf" :

sudo vim /etc/systemd/logind.conf

Normalement, ce fichier devrait déjà contenir l'ensemble des options configurable, commentées et définies à leur valeur par défaut. Afin de toujours mettre en veille l'ordinateur lorsque l'écran est rabattu, même lorsqu'un moniteur externe est connecté, l'option qui nous intéresse est "HandleLidSwitchDocked", il faut la décommenter et la définir à "suspend" ce qui donne chez moi le résultat suivant :

[Login]
# ...
HandleLidSwitchDocked=suspend
# ...

D'autres valeurs peuvent être définies en fonction de vos préférences (par exemple "ignore", "hibernate", "poweroff"…). Pour plus d'informations vous trouverez la documentation de Logind par ici :

Enfin, pour appliquer les modifications sans avoir à redémarrer, vous pouvez exécuter les commandes suivantes (en root) :

sudo systemctl stop systemd-logind
sudo systemctl start systemd-logind

En espérant que cela puisse servir à quelqu'un. ;)