GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Cómo determina Ubuntu la inactividad antes de suspender?

Lo configuré para "suspender cuando está inactivo" después de 30 minutos.

¿Cómo determina si está inactivo? ¿Es solo la entrada del usuario a través del teclado/ratón?

Si dejo un programa funcionando, digamos procesando un video, que lleva mucho tiempo, ¿se suspenderá después de 30 minutos y detendrá ese programa? La misma pregunta para descargas largas, ¿se suspenderá a la mitad?

Respuesta aceptada:

Buena pregunta. ¡Vamos a averiguarlo!

  1. Comenzando por investigar la opción "Suspender cuando esté inactivo por",

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

    podemos aprender que establece una clave GSettings llamada 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 documentación de esta clave proporciona una breve descripción:

    La cantidad de tiempo en segundos que la computadora con alimentación de CA necesita estar inactiva antes de entrar en modo de suspensión. Un valor de 0 significa nunca.

    pero aún no explica qué significa "inactivo".

  2. Buscando sleep-inactive-ac-timeout nos lleva al demonio de configuración de GNOME,

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

    que comprueba periódicamente una propiedad de la sesión de GNOME llamada Presence.status :

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

    Si encuentra que el estado es inactivo, pone el sistema en suspensión:

    idle_set_mode (..., GSD_POWER_IDLE_MODE_SLEEP);
    

    Por lo tanto, debemos aprender cómo la sesión de GNOME decide si el sistema está "inactivo".

  3. Siguiendo hacia atrás desde donde GNOME Session actualiza el valor de Presence.status ,

    gsm_presence_set_status (presence, GSM_PRESENCE_STATUS_IDLE, ...);
    

    podemos ver que usa el IDLETIME contador de Xorg:

    if (... && strcmp (counters[i].name, "IDLETIME") == 0) {
        ...->counter = counters[i].counter;
    
  4. El IDLETIME El comportamiento del contador se resume en una entrada de blog del autor de GNOME Power Manager:

    gnome-power-manager usa un contador dentro de Xorg llamado IDLETIME. Este contador se incrementa solo cuando el usuario no mueve el mouse o hace clic en algunas teclas. Cuando el usuario hace clic en algo, IDLECOUNTER se reinicia.

Esto nos dice que Ubuntu determina la inactividad midiendo la cantidad de tiempo que ha pasado desde la última pulsación de tecla o movimiento del mouse. El uso de la CPU y la actividad de la red no se tienen en cuenta.

Relacionado:Mac:¿Crear Ubuntu VM con VirtualBox?
Ubuntu
  1. Cómo actualizar a Ubuntu 20.04

  2. Cómo instalar R en Ubuntu 20.04

  3. Cómo actualizar Ubuntu a 20.10

  4. Cómo actualizar Ubuntu 18.04 a Ubuntu 18.10

  5. ¿Cómo habilitar Ubuntu (usando Full Disk Encryption) para llamar a Lukssupend antes de dormir/suspender a Ram?

Cómo actualizar Ubuntu 20.04 a 21.04

Cómo instalar KDE Plasma 5.16 en Ubuntu 16.04/Ubuntu 18.04, 19.04

Cómo actualizar Ubuntu 16.04 a Ubuntu 16.10

Cómo saber la versión de la aplicación antes de instalar en Ubuntu

¿Cómo actualizar Ubuntu 18.04 a 20.04?

Cómo actualizar Ubuntu 20.04 a Ubuntu 20.10