Bagaimana cara ubuntu menentukan tidak aktif sebelum menangguhkan?

14

Saya telah mengaturnya untuk "menangguhkan saat tidak aktif" setelah 30 menit.

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

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

Jazz
sumber
Cari wake up calls.
Rinzwind
Di Askubuntu? Saya baru saja mencobanya dan semua jawaban tampaknya berkaitan dengan membangunkan sistem dari menangguhkan atau serupa.
Jazz

Jawaban:

19

Pertanyaan bagus. Ayo cari tahu!

  1. 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".

  2. Mencari untuk sleep-inactive-ac-timeoutmengarah 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."

  3. 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 IDLETIMEcounter dari Xorg:

    if (... && strcmp (counters[i].name, "IDLETIME") == 0) {
        ...->counter = counters[i].counter;
    
  4. The IDLETIMEperilaku 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.

ændrük
sumber
seperti yang Anda katakan di baris terakhir mengapa Penggunaan CPU tidak besar? Keraguan saya adalah saya berasal dari askubuntu.com/questions/215870/… . karena jika saya meletakkan unduhan file 1GB maka itu bisa memakan banyak waktu. bahkan saya afk PC saya masih melakukan pengunduhan file itu dengan benar. Itu berarti PC saya aktif bukan? : D
r 22dʒɑ
+1 untuk investigasi dan pemecahan yang sangat baik. Dan @ AgentCool, tidak. Aktivitas ditentukan oleh papan tombol atau mouse. Unduhan Anda tidak akan menekan tombol apa pun dan membuat PC tetap terjaga.
Oxwivi
@Oxwivi komentar itu hampir setahun yang lalu. tidak setelah diedit. :)
rɑːdʒɑ
@ AgentCool Buruk saya, saya tidak melihat. Posting baru-baru ini terbentur, kemungkinan karena edit kemarin. Adalah pertanyaan yang saya minati, jadi periksalah.
Oxwivi