GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment Ubuntu détermine-t-il l'inactivité avant de suspendre ?

Je l'ai configuré pour "suspendre lorsqu'il est inactif" après 30 minutes.

Comment détermine-t-il s'il est inactif ? S'agit-il simplement d'une saisie utilisateur via le clavier/la souris ?

Si je laisse un programme fonctionner - disons le traitement d'une vidéo, qui prend beaucoup de temps, va-t-il s'arrêter après 30 minutes et arrêter ce programme ? Même question pour les longs téléchargements, sera-t-il suspendu à mi-parcours.

Réponse acceptée :

Bonne question. Découvrons !

  1. En commençant par étudier l'option "Suspendre si inactif pendant",

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

    nous pouvons apprendre qu'il définit une clé GSettings appelée 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 documentation de cette clé fournit une brève description :

    La durée en secondes pendant laquelle l'ordinateur alimenté en courant alternatif doit être inactif avant de se mettre en veille. Une valeur de 0 signifie jamais.

    mais n'explique toujours pas ce que "inactif" signifie.

  2. Recherche de sleep-inactive-ac-timeout nous conduit au démon de configuration de GNOME,

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

    qui vérifie périodiquement une propriété de GNOME Session appelée Presence.status :

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

    S'il constate que l'état est inactif, il met le système en veille :

    idle_set_mode (..., GSD_POWER_IDLE_MODE_SLEEP);
    

    Nous devons donc apprendre comment GNOME Session décide si le système est "inactif".

  3. Revenir en arrière à partir de l'endroit où la session GNOME met à jour la valeur de Presence.status ,

    gsm_presence_set_status (presence, GSM_PRESENCE_STATUS_IDLE, ...);
    

    nous pouvons voir qu'il utilise le IDLETIME compteur de Xorg :

    if (... && strcmp (counters[i].name, "IDLETIME") == 0) {
        ...->counter = counters[i].counter;
    
  4. Le IDLETIME Le comportement du compteur est résumé dans un article de blog de l'auteur de GNOME Power Manager :

    gnome-power-manager utilise un compteur dans Xorg appelé IDLETIME. Ce compteur n'est incrémenté que lorsque l'utilisateur ne bouge pas la souris ou ne clique pas sur certaines touches. Lorsque l'utilisateur clique sur quelque chose, le IDLECOUNTER est réinitialisé.

Cela nous indique qu'Ubuntu détermine l'inactivité en mesurant le temps qui s'est écoulé depuis la dernière frappe ou le dernier mouvement de la souris. L'utilisation du processeur et l'activité du réseau ne sont pas prises en compte.

Connexes :Mac - Créer une machine virtuelle Ubuntu avec VirtualBox ?
Ubuntu
  1. Comment mettre à niveau vers Ubuntu 20.04

  2. Comment installer R sur Ubuntu 20.04

  3. Comment mettre à niveau Ubuntu vers 20.10

  4. Comment mettre à niveau Ubuntu 18.04 vers Ubuntu 18.10

  5. Comment activer Ubuntu (en utilisant le cryptage complet du disque) pour appeler Lukssupend avant de dormir/suspendre sur Ram ?

Comment mettre à niveau Ubuntu 20.04 vers 21.04

Comment installer KDE Plasma 5.16 sur Ubuntu 16.04/Ubuntu 18.04, 19.04

Comment mettre à niveau Ubuntu 16.04 vers Ubuntu 16.10

Comment connaître la version de l'application avant de l'installer dans Ubuntu

Comment mettre à jour Ubuntu 18.04 vers 20.04 ?

Comment mettre à niveau Ubuntu 20.04 vers Ubuntu 20.10