Повторно включить гашение экрана в gnome 3

Повторно включить гашение экрана в gnome 3

Запускаю Gnome 3.28. У меня проблемы с гашением экрана. А точнее, экран не гаснет, и я не могу понять, как заставить его гаснуть постоянно. (Когда-то, много лет назад, я полностью отключил гашение экрана и теперь не имею ни малейшего представления, как я это сделал.) Везде, когда я говорю о гашении, я конкретно хочу/предпочитаю поведение DPMS off.

Установка «Пустой экран» в разделе «Питание» настроек gnome ничего не дает. xset qвозвращает следующее:

DPMS (Energy Star):
  Standby: 0    Suspend: 0    Off: 0
  DPMS is Enabled
  Monitor is On

Я могу включить гашение экрана с помощью xset dpms 1200 2400 4800. Это работает. Однако запуск любого приложения, которое использует dbus для запроса на подавление гашения экрана (например, Youtube в Chrome), заставляет демон настроек питания gnome сбросить эти значения на ноль и никогда не сбрасывает их обратно.

Отслеживание происходящего, запуск, скажем, Youtube, отправка inhibitзапроса в SessionManager:

method call time=1533650079.657788 sender=:1.1216 -> destination=org.gnome.SessionManager serial=3 path=/org/gnome/SessionManager; interface=org.gnome.SessionManager; member=Inhibit
   string "/usr/bin/google-chrome-stable"
   uint32 0
   string "Playing video"
   uint32 12
signal time=1533650079.659445 sender=:1.14 -> destination=(null destination) serial=10679 path=/org/gnome/SessionManager; interface=org.gnome.SessionManager; member=InhibitorAdded
   object path "/org/gnome/SessionManager/Inhibitor975"
method return time=1533650079.659468 sender=:1.14 -> destination=:1.1216 serial=10680 reply_serial=3
   uint32 754926118
signal time=1533650079.659475 sender=:1.14 -> destination=(null destination) serial=10681 path=/org/gnome/SessionManager; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged
   string "org.gnome.SessionManager"
   array [
      dict entry(
         string "InhibitedActions"
         variant             uint32 12
      )
   ]
   array [
   ]

Это заставляет gsd-powerдемон попросить Mutter отключить режим энергосбережения:

method call time=1533650079.666562 sender=:1.36 -> destination=:1.16 serial=182 path=/org/gnome/Mutter/DisplayConfig; interface=org.freedesktop.DBus.Properties; member=Set
   string "org.gnome.Mutter.DisplayConfig"
   string "PowerSaveMode"
   variant       int32 0

что работает, обнуляя настройки DPMS. Когда я закрываю сеанс youtube, я получаю соответствующий запрос на разблокировку:

method call time=1533650081.283611 sender=:1.1216 -> destination=org.gnome.SessionManager serial=4 path=/org/gnome/SessionManager; interface=org.gnome.SessionManager; member=Uninhibit
   uint32 754926118
signal time=1533650081.286730 sender=:1.14 -> destination=(null destination) serial=10690 path=/org/gnome/SessionManager; interface=org.gnome.SessionManager; member=InhibitorRemoved
   object path "/org/gnome/SessionManager/Inhibitor975"
method call time=1533650081.286768 sender=:1.14 -> destination=org.freedesktop.DBus serial=10691 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=RemoveMatch
   string "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',path='/org/freedesktop/DBus',arg0=':1.1216'"
method return time=1533650081.286778 sender=org.freedesktop.DBus -> destination=:1.14 serial=3032 reply_serial=10691
method return time=1533650081.286784 sender=:1.14 -> destination=:1.1216 serial=10692 reply_serial=4
signal time=1533650081.286789 sender=:1.14 -> destination=(null destination) serial=10693 path=/org/gnome/SessionManager; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged
   string "org.gnome.SessionManager"
   array [
      dict entry(
         string "InhibitedActions"
         variant             uint32 4
      )
   ]
   array [
   ]

Но ничто не говорит Mutter включить режим энергосбережения обратно. Что обычно должно это делать, и что может помешать ему это сделать?

решение1

Включен ли у вас gdm, так как без блокировки экрана не будет затемнения.

Проблема в том, что gdm считывает org.gnome.SessionManager.Presence как предыдущий gnome-scrennsaver, поэтому отправка сообщений в mutter является поддельной, поскольку сброс таймеров должен выполняться только один раз.

Затемнение осуществляется путем принудительного включения или выключения dpms, не полагаясь на таймеры dpms.

привет, Роберт

Связанный контент