คำถามที่ดี. มาหาคำตอบกัน!
เริ่มต้นด้วยการตรวจสอบตัวเลือก "ระงับเมื่อไม่ใช้งานสำหรับ"
<property ...>Suspend when inactive for</property> ...
<object ... id="combobox_sleep_ac">
เราสามารถเรียนรู้ว่ามันตั้งค่าคีย์ GSettings ที่เรียกว่า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");
เอกสารสำหรับคีย์นี้ยังมีคำอธิบายสั้น ๆ :
จำนวนเวลาเป็นวินาทีที่คอมพิวเตอร์ที่ใช้ไฟ AC จะต้องไม่ทำงานก่อนที่จะเข้าสู่โหมดสลีป ค่า 0 หมายถึงไม่เคย
แต่ก็ยังไม่ได้อธิบายว่า "ไม่ใช้งาน" หมายถึงอะไร
ค้นหาสำหรับsleep-inactive-ac-timeout
นำเราไปสู่GNOME ตั้งค่าภูต ,
timeout_sleep = g_settings_get_int (..., "sleep-inactive-ac-timeout");
ซึ่งจะตรวจสอบคุณสมบัติของเซสชั่น GNOME เป็นระยะ ๆ ที่เรียกว่าPresence.status
:
result = g_dbus_proxy_get_cached_property (...->session_presence_proxy, "status");
หากพบว่าสถานะไม่ได้ใช้งานจะทำให้ระบบเข้าสู่โหมดสลีป :
idle_set_mode (..., GSD_POWER_IDLE_MODE_SLEEP);
ดังนั้นเราต้องเรียนรู้ว่า GNOME Session ตัดสินใจอย่างไรว่าระบบนั้น "ว่าง"
ต่อไปนี้ย้อนกลับจากที่ GNOME เซสชันการปรับปรุงค่าของPresence.status
,
gsm_presence_set_status (presence, GSM_PRESENCE_STATUS_IDLE, ...);
เราจะเห็นว่ามันใช้ตัวIDLETIME
นับจาก Xorg:
if (... && strcmp (counters[i].name, "IDLETIME") == 0) {
...->counter = counters[i].counter;
IDLETIME
พฤติกรรมเคาน์เตอร์สรุปในบล็อกโพสต์โดยผู้เขียนของการจัดการการใช้พลังงานของ GNOME:
gnome-power-manager ใช้ตัวนับภายใน Xorg ที่เรียกว่า IDLETIME ตัวนับนี้จะเพิ่มขึ้นก็ต่อเมื่อผู้ใช้ไม่ได้เลื่อนเมาส์หรือคลิกที่ปุ่มบางปุ่ม เมื่อผู้ใช้คลิกบางสิ่ง IDLECOUNTER จะถูกรีเซ็ต
สิ่งนี้บอกเราว่า Ubuntu กำหนดความไม่เคลื่อนไหวโดยการวัดระยะเวลาที่ผ่านไปตั้งแต่การกดแป้นครั้งสุดท้ายหรือการเคลื่อนไหวของเมาส์ การใช้ CPU และกิจกรรมเครือข่ายไม่ได้คำนึงถึง
wake up calls
มีการค้นหาสำหรับ