回答:
良い質問。確認してみましょう!
「非アクティブの場合に一時停止」オプションの調査から始めて、
<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 Settings Daemonに移動します。
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セッションがどのように決定するかを学習する必要があります。
GNOMEセッションがの値を更新する場所から逆方向に追跡するとPresence.status
、
gsm_presence_set_status (presence, GSM_PRESENCE_STATUS_IDLE, ...);
Xorg のカウンターを使用していることがわかりますIDLETIME
。
if (... && strcmp (counters[i].name, "IDLETIME") == 0) {
...->counter = counters[i].counter;
IDLETIME
カウンタの動作は、に要約されているブログの記事 GNOME電源マネージャの著者によって:
gnome-power-managerは、IDLETIMEと呼ばれるXorg内のカウンターを使用します。このカウンターは、ユーザーがマウスを動かさないか、いくつかのキーをクリックしない場合にのみ増加します。ユーザーが何かをクリックすると、IDLECOUNTERがリセットされます。
これは、Ubuntuが最後のキーストロークまたはマウスの動きから経過した時間を測定することで非アクティブを決定することを示しています。CPU使用率とネットワークアクティビティは考慮されません。
wake up calls
。