Sospendi sulla chiusura del coperchio dopo il timeout

Sto usando un laptop con Ubuntu 16.04, Gnome come ambiente desktop e LightDM come login manager.

Quello che voglio fare è sospendere il computer dopo che il coperchio è stato chiuso per 30 secondi. È ansible?

Passare alla sospensione 30 secondi dopo la chiusura del coperchio


Disabilita le azioni predefinite del coperchio chiuso

Per impostare un orario specifico, prima che il computer passi alla sospensione, è necessario disabilitare le azioni predefinite per chiudere il coperchio. Questo può essere fatto dai seguenti comandi:

gsettings set org.gnome.settings-daemon.plugins.power lid-close-ac-action "nothing" 

e

 gsettings set org.gnome.settings-daemon.plugins.power lid-close-battery-action "nothing" 

Azioni personalizzate sul coperchio di chiusura

Successivamente, abbiamo bisogno di impostare azioni alternative sulla chiusura del coperchio, per includere la pausa di 30 secondi prima della sospensione. Possiamo colbind quelli agli eventi esistenti.

La domanda è se i vantaggi di ciò pesino sulla configurazione più complicata che richiederebbe. Una versione con script come sotto consuma praticamente zero sia dal processore che dalla memoria, anche se ne avete eseguiti dieci.

Il vantaggio dell’opzione script è che è facilmente reversibile; semplicemente non eseguirlo più e ripristinare le impostazioni originali (o diverse).

Il copione

 #!/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 

Come usare

  1. Come già detto, prima disabilita le azioni di chiusura del coperchio predefinite:

     gsettings set org.gnome.settings-daemon.plugins.power lid-close-ac-action "nothing" 

    e

     gsettings set org.gnome.settings-daemon.plugins.power lid-close-battery-action "nothing" 
  2. Copia lo script in un file vuoto, salvalo come delay_lidsuspend.py

  3. Nella sezione head dello script, vengono impostati alcuni valori e percorsi predefiniti. Molto probabilmente, non è necessario modificare nulla:

     # 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"] 

    Non sono sicuro che il percorso del file di stato del coperchio (“/ proc / acpi / button / lid / LID / state”) sia lo stesso su ogni laptop. Prova con il comando:

     cat /proc/acpi/button/lid/LID/state 
  4. Prova: esegui lo script eseguendo da un terminale:

     python3 /path/to/delay_lidsuspend.py 

    e chiudi il coperchio per vedere se funziona come previsto (qui ha fatto il lavoro perfettamente).

  5. Se tutto funziona correttamente, aggiungilo alle applicazioni di avvio.