GNU/Linux >> Belajar Linux >  >> Ubuntu

Bagaimana Ubuntu Menentukan Ketidakaktifan Sebelum Menangguhkan?

Saya telah menyetelnya ke "tangguhkan saat tidak aktif" setelah 30 menit.

Bagaimana cara menentukan apakah itu tidak aktif? Apakah ini hanya input pengguna melalui keyboard/mouse?

Jika saya membiarkan program berjalan – katakanlah memproses video, yang membutuhkan waktu lama, apakah akan ditangguhkan setelah 30 menit dan menghentikan program itu? Pertanyaan yang sama untuk unduhan yang lama, apakah akan ditangguhkan di tengah jalan.

Jawaban yang Diterima:

Pertanyaan bagus. Ayo cari tahu!

  1. Dimulai dengan menyelidiki opsi “Tangguhkan saat tidak aktif untuk”,

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

    kita dapat mempelajari bahwa itu menyetel kunci GSettings yang disebut 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");
    

    Dokumentasi untuk kunci ini memberikan deskripsi singkat:

    Jumlah waktu dalam detik komputer pada daya AC harus tidak aktif sebelum tidur. Nilai 0 berarti tidak pernah.

    tetapi tetap tidak menjelaskan apa yang dimaksud dengan "tidak aktif".

  2. Mencari sleep-inactive-ac-timeout membawa kita ke Daemon Pengaturan GNOME,

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

    yang secara berkala memeriksa properti Sesi GNOME yang disebut Presence.status :

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

    Jika ternyata statusnya menganggur, sistem akan dialihkan ke mode tidur:

    idle_set_mode (..., GSD_POWER_IDLE_MODE_SLEEP);
    

    Jadi kita perlu mempelajari bagaimana Sesi GNOME memutuskan apakah sistem "idle".

  3. Mengikuti mundur dari tempat Sesi GNOME memperbarui nilai Presence.status ,

    gsm_presence_set_status (presence, GSM_PRESENCE_STATUS_IDLE, ...);
    

    kita dapat melihat bahwa ia menggunakan IDLETIME penghitung dari Xorg:

    if (... && strcmp (counters[i].name, "IDLETIME") == 0) {
        ...->counter = counters[i].counter;
    
  4. IDLETIME perilaku counter dirangkum dalam posting blog oleh penulis GNOME Power Manager:

    gnome-power-manager menggunakan penghitung di dalam Xorg yang disebut IDLETIME. Penghitung ini bertambah hanya ketika pengguna tidak menggerakkan mouse, atau mengklik beberapa tombol. Saat pengguna mengklik sesuatu, IDLECOUNTER akan disetel ulang.

Ini memberitahu kita bahwa Ubuntu menentukan ketidakaktifan dengan mengukur jumlah waktu yang telah berlalu sejak penekanan tombol atau gerakan mouse terakhir. Penggunaan CPU dan aktivitas jaringan tidak diperhitungkan.

Terkait:Mac – Membuat VM Ubuntu dengan VirtualBox?
Ubuntu
  1. Cara Meningkatkan ke Ubuntu 20.04

  2. Cara Meningkatkan Ubuntu 18.04 ke Ubuntu 18.10

  3. Bagaimana Mengaktifkan Ubuntu (menggunakan Enkripsi Disk Penuh) Untuk Memanggil Lukssupend Sebelum Tidur/menangguhkan Ke Ram?

  1. Cara Menginstal R di Ubuntu 20.04

  2. Cara Meningkatkan Ubuntu Ke 20.10

  3. Cara Meningkatkan Ubuntu Ke 21.10

  1. Cara Meningkatkan Ubuntu Ke 21.04

  2. Cara Meningkatkan ke Ubuntu 21.10

  3. Cara Menginstal Go di Ubuntu 18.04