J'utilise un ordinateur portable avec Ubuntu 16.04, Gnome comme environnement de bureau et LightDM comme gestionnaire de connexion.
Ce que je veux faire, c'est suspendre l'ordinateur une fois le couvercle fermé pendant 30 secondes. Est-ce possible?
Pour définir une heure spécifique, avant que l'ordinateur ne passe en mode suspension, nous devons désactiver les actions par défaut pour fermer le couvercle. Cela peut être fait par les commandes suivantes:
gsettings set org.gnome.settings-daemon.plugins.power lid-close-ac-action "nothing"
et
gsettings set org.gnome.settings-daemon.plugins.power lid-close-battery-action "nothing"
Par la suite, nous devons définir des actions alternatives sur la fermeture du couvercle, pour inclure la pause de 30 secondes avant la suspension. Nous pouvons les connecter aux événements existants.
La question est de savoir si les avantages de cela pèsent sur la configuration la plus compliquée qui nécessiterait. Une version scriptée comme ci-dessous consomme pratiquement zéro à la fois de votre processeur et de votre mémoire, même si vous en avez exécuté dix.
L'avantage de l'option scriptée est qu'elle est facilement réversible; il suffit de ne plus l'exécuter et de restaurer vos paramètres d'origine (ou différents).
#!/usr/bin/env python3
import time
import subprocess
# set delay time below (seconds)
delay = 30
# set path to lid status file
f = "/proc/acpi/button/lid/LID/state"
# --- set close command below
close_command = ["systemctl", "suspend"]
def get_state():
return "open" in open(f).read()
state1 = get_state()
while True:
time.sleep(3)
state2 = get_state()
if state2 != state1:
t = 0
while not get_state():
time.sleep(1); t = t+1
if t > delay:
subprocess.Popen(close_command)
break
state1 = state2
Comme mentionné, désactivez d'abord les actions de fermeture de couvercle par défaut:
gsettings set org.gnome.settings-daemon.plugins.power lid-close-ac-action "nothing"
et
gsettings set org.gnome.settings-daemon.plugins.power lid-close-battery-action "nothing"
Copiez le script dans un fichier vide, enregistrez-le sous delay_lidsuspend.py
Dans la section head du script, certaines valeurs et chemins par défaut sont définis. Très probablement, vous n'avez rien à changer:
# set delay time below (seconds)
delay = 30
# set path to lid status file
f = "/proc/acpi/button/lid/LID/state"
# --- set close command below
close_command = ["systemctl", "suspend"]
Je ne suis pas sûr que le chemin d'accès à votre fichier d'état du couvercle ("/ proc/acpi/bouton/couvercle/LID/état") soit le même sur chaque ordinateur portable. Testez avec la commande:
cat /proc/acpi/button/lid/LID/state
Testez-exécutez le script en exécutant à partir d'un terminal:
python3 /path/to/delay_lidsuspend.py
et fermez le couvercle pour voir si cela fonctionne comme prévu (ici, il a parfaitement fonctionné).
Si tout fonctionne bien, ajoutez-le aux applications de démarrage.