GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Wie stellt Ubuntu die Inaktivität fest, bevor es angehalten wird?

Ich habe es so eingestellt, dass es nach 30 Minuten „unterbrochen wird, wenn es inaktiv ist“.

Wie stellt es fest, ob es inaktiv ist? Ist es nur eine Benutzereingabe über Tastatur/Maus?

Wenn ich ein Programm außer Betrieb lasse – sagen wir, die Verarbeitung eines Videos, was lange dauert, wird es dann nach 30 Minuten angehalten und das Programm gestoppt? Dieselbe Frage für lange Downloads, wird es auf halbem Weg unterbrochen.

Akzeptierte Antwort:

Gute Frage. Finden wir es heraus!

  1. Beginnen Sie mit der Untersuchung der Option „Sperren, wenn inaktiv für“

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

    Wir können erfahren, dass es einen GSettings-Schlüssel namens sleep-inactive-ac-timeout setzt :

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

    Die Dokumentation für diesen Schlüssel enthält eine kurze Beschreibung:

    Die Zeit in Sekunden, die der Computer im Netzbetrieb inaktiv sein muss, bevor er in den Energiesparmodus wechselt. Ein Wert von 0 bedeutet nie.

    erklärt aber immer noch nicht, was „inaktiv“ bedeutet.

  2. Suche nach sleep-inactive-ac-timeout führt uns zum GNOME Settings Daemon,

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

    die regelmäßig eine Eigenschaft der GNOME-Sitzung namens Presence.status überprüft :

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

    Wenn es feststellt, dass der Status inaktiv ist, versetzt es das System in den Ruhezustand:

    idle_set_mode (..., GSD_POWER_IDLE_MODE_SLEEP);
    

    Wir müssen also lernen, wie die GNOME-Sitzung entscheidet, ob das System „inaktiv“ ist.

  3. Rückwärts folgend, wo GNOME Session den Wert von Presence.status aktualisiert ,

    gsm_presence_set_status (presence, GSM_PRESENCE_STATUS_IDLE, ...);
    

    wir können sehen, dass es die IDLETIME verwendet Zähler von Xorg:

    if (... && strcmp (counters[i].name, "IDLETIME") == 0) {
        ...->counter = counters[i].counter;
    
  4. Die IDLETIME Das Verhalten des Zählers ist in einem Blogbeitrag des Autors von GNOME Power Manager zusammengefasst:

    gnome-power-manager verwendet einen Zähler in Xorg namens IDLETIME. Dieser Zähler wird nur erhöht, wenn der Benutzer die Maus nicht bewegt oder auf einige Tasten klickt. Wenn der Benutzer auf etwas klickt, wird der IDLCOUNTER zurückgesetzt.

Dies sagt uns, dass Ubuntu die Inaktivität bestimmt, indem es die Zeit misst, die seit dem letzten Tastendruck oder der letzten Mausbewegung vergangen ist. CPU-Auslastung und Netzwerkaktivität werden nicht berücksichtigt.

Verwandte:Mac – Ubuntu VM mit VirtualBox erstellen?
Ubuntu
  1. So aktualisieren Sie auf Ubuntu 20.04

  2. So installieren Sie R unter Ubuntu 20.04

  3. So aktualisieren Sie Ubuntu auf 20.10

  4. So aktualisieren Sie Ubuntu 18.04 auf Ubuntu 18.10

  5. Wie aktiviere ich Ubuntu (unter Verwendung von Full Disk Encryption), um Lukssupend aufzurufen, bevor es in den Ram-Modus wechselt?

So aktualisieren Sie Ubuntu 20.04 auf 21.04

So installieren Sie KDE Plasma 5.16 auf Ubuntu 16.04/Ubuntu 18.04, 19.04

So aktualisieren Sie Ubuntu 16.04 auf Ubuntu 16.10

So kennen Sie die Version der Anwendung vor der Installation in Ubuntu

Wie aktualisiere ich Ubuntu 18.04 auf 20.04?

So aktualisieren Sie Ubuntu 20.04 auf Ubuntu 20.10