Pertanyaan bagus. Ayo cari tahu!
Mulai dengan menyelidiki opsi "Tangguhkan saat tidak aktif",
<property ...>Suspend when inactive for</property> ...
<object ... id="combobox_sleep_ac">
kita dapat mempelajari bahwa itu menetapkan 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");
The dokumentasi untuk kunci ini menyediakan penjelasan singkat:
Jumlah waktu dalam detik komputer pada daya AC harus tidak aktif sebelum tidur. Nilai 0 berarti tidak pernah.
tetapi masih tidak menjelaskan apa artinya "tidak aktif".
Mencari untuk sleep-inactive-ac-timeout
mengarah kita untuk GNOME Settings Daemon ,
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 idle , sistem akan tertidur :
idle_set_mode (..., GSD_POWER_IDLE_MODE_SLEEP);
Jadi kita perlu belajar bagaimana Sesi GNOME memutuskan apakah sistem "idle."
Mengikuti mundur dari tempat Sesi GNOME memperbarui nilai Presence.status
,
gsm_presence_set_status (presence, GSM_PRESENCE_STATUS_IDLE, ...);
kita dapat melihat bahwa itu menggunakan satu IDLETIME
counter dari Xorg:
if (... && strcmp (counters[i].name, "IDLETIME") == 0) {
...->counter = counters[i].counter;
The IDLETIME
perilaku counter dirangkum dalam sebuah 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 klik beberapa tombol. Ketika pengguna mengklik sesuatu, IDLECOUNTER diatur ulang.
Ini memberitahu kita bahwa Ubuntu menentukan tidak aktif dengan mengukur jumlah waktu yang telah berlalu sejak keystroke terakhir atau gerakan mouse. Penggunaan CPU dan aktivitas jaringan tidak menjadi faktor.
wake up calls
.