GNU/Linux >> Linux Esercitazione >  >> Ubuntu

In che modo Ubuntu determina l'inattività prima della sospensione?

L'ho impostato su "sospendi quando inattivo" dopo 30 minuti.

Come determina se è inattivo? È solo un input dell'utente tramite tastiera/mouse?

Se lascio un programma in funzione, ad esempio l'elaborazione di un video, che richiede molto tempo, si interromperà dopo 30 minuti e interromperà quel programma? Stessa domanda per download lunghi, verrà sospeso a metà.

Risposta accettata:

Buona domanda. Scopriamolo!

  1. Iniziando esaminando l'opzione "Sospendi quando inattivo per",

    <property ...>Suspend when inactive for</property> ...
    <object ... id="combobox_sleep_ac">
    

    possiamo apprendere che imposta una chiave GSettings chiamata sleep-inactive-ac-timeout :

    widget = GTK_WIDGET (gtk_builder_get_object (..., "combobox_sleep_ac")); ...
    g_object_set_data (G_OBJECT(widget), "_gsettings_key", "sleep-inactive-ac-timeout");
    

    La documentazione per questa chiave fornisce una breve descrizione:

    La quantità di tempo in secondi in cui il computer con alimentazione CA deve essere inattivo prima di andare in modalità di sospensione. Un valore di 0 significa mai.

    ma ancora non spiega cosa significa "inattivo".

  2. Ricerca di sleep-inactive-ac-timeout ci porta a GNOME Settings Daemon,

    timeout_sleep = g_settings_get_int (..., "sleep-inactive-ac-timeout");
    

    che verifica periodicamente una proprietà di GNOME Session chiamata Presence.status :

    result = g_dbus_proxy_get_cached_property (...->session_presence_proxy, "status");
    

    Se rileva che lo stato è inattivo, mette il sistema in stato di sospensione:

    idle_set_mode (..., GSD_POWER_IDLE_MODE_SLEEP);
    

    Quindi dobbiamo imparare come GNOME Session decide se il sistema è "inattivo".

  3. Seguendo all'indietro da dove GNOME Session aggiorna il valore di Presence.status ,

    gsm_presence_set_status (presence, GSM_PRESENCE_STATUS_IDLE, ...);
    

    possiamo vedere che utilizza il IDLETIME contatore da Xorg:

    if (... && strcmp (counters[i].name, "IDLETIME") == 0) {
        ...->counter = counters[i].counter;
    
  4. Il IDLETIME il comportamento di counter è riassunto in un post sul blog dell'autore di GNOME Power Manager:

    gnome-power-manager usa un contatore all'interno di Xorg chiamato IDLETIME. Questo contatore viene incrementato solo quando l'utente non sposta il mouse o non fa clic su alcuni tasti. Quando l'utente fa clic su qualcosa, IDLECOUNTER viene reimpostato.

Questo ci dice che Ubuntu determina l'inattività misurando la quantità di tempo che è trascorso dall'ultimo tasto o movimento del mouse. L'utilizzo della CPU e l'attività di rete non vengono presi in considerazione.

Correlati:Mac – Creazione di una VM Ubuntu con VirtualBox?
Ubuntu
  1. Come eseguire l'aggiornamento a Ubuntu 20.04

  2. Come installare R su Ubuntu 20.04

  3. Come aggiornare Ubuntu a 20.10

  4. Come aggiornare Ubuntu 18.04 a Ubuntu 18.10

  5. Come abilitare Ubuntu (usando la crittografia del disco completo) per chiamare Luksupend prima di dormire/sospendere su Ram?

Come aggiornare Ubuntu 20.04 a 21.04

Come installare KDE Plasma 5.16 su Ubuntu 16.04/Ubuntu 18.04, 19.04

Come aggiornare Ubuntu 16.04 a Ubuntu 16.10

Come conoscere la versione dell'applicazione prima dell'installazione in Ubuntu

Come aggiornare Ubuntu 18.04 a 20.04?

Come aggiornare Ubuntu 20.04 a Ubuntu 20.10