Хороший вопрос. Давай выясним!
Начиная с изучения опции «Приостановить, когда неактивен для»,
<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");
Документация для этого ключа содержит описание кратко:
Время в секундах, в течение которого компьютер, подключенный к сети переменного тока, должен быть неактивен, прежде чем перейти в спящий режим. Значение 0 означает никогда.
но все еще не объясняет, что означает «неактивный».
Поиск по sleep-inactive-ac-timeout
приводит нас к GNOME Настройки Daemon ,
timeout_sleep = g_settings_get_int (..., "sleep-inactive-ac-timeout");
который периодически проверяет свойство GNOME Session, называемое Presence.status
:
result = g_dbus_proxy_get_cached_property (...->session_presence_proxy, "status");
Если он обнаруживает, что статус неактивен , он переводит систему в спящий режим :
idle_set_mode (..., GSD_POWER_IDLE_MODE_SLEEP);
Итак, нам нужно узнать, как GNOME Session решает, является ли система «бездействующей».
Следуя назад, откуда GNOME Session обновляет значение 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 Power Manager:
gnome-power-manager использует в Xorg счетчик IDLETIME. Этот счетчик увеличивается только тогда, когда пользователь не перемещает мышь или нажимает некоторые клавиши. Когда пользователь что-то щелкает, IDLECOUNTER сбрасывается.
Это говорит нам о том, что Ubuntu определяет бездействие, измеряя количество времени, прошедшее с момента последнего нажатия клавиши или движения мыши. Загрузка процессора и сетевая активность не учитываются.
wake up calls
.