在 gnome 3 上重新启用屏幕消隐

md5*_*d5i 5 linux gnome display gnome3

运行 Gnome 3.28。我遇到屏幕消隐问题。更具体地说,屏幕没有消隐,我无法弄清楚如何让它始终保持空白。(几年前的某个时候,我完全消除了屏幕消隐,并且不再知道我是如何做到的。)在整个过程中,当我提到消隐时,我特别想要/更喜欢 DPMS 关闭行为。

在 gnome-preferences 的“电源”部分设置“空白屏幕”没有任何作用。 xset q返回以下内容:

DPMS (Energy Star):
  Standby: 0    Suspend: 0    Off: 0
  DPMS is Enabled
  Monitor is On
Run Code Online (Sandbox Code Playgroud)

我可以通过使用打开屏幕消隐xset dpms 1200 2400 4800。这有效。但是,运行任何使用 dbus 请求禁止屏幕消隐的应用程序(例如 chrome 中的 Youtube)都会导致 gnome 电源设置守护进程将这些值设置回零,并且永远不会将它们设置回零。

跟踪正在发生的事情,例如启动 Youtube,向inhibitSessionManager发送请求:

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 [
   ]
Run Code Online (Sandbox Code Playgroud)

这会导致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
Run Code Online (Sandbox Code Playgroud)

哪个有效,将 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 [
   ]
Run Code Online (Sandbox Code Playgroud)

但没有什么能告诉穆特重新打开省电模式。通常应该做什么,什么可能阻止它这样做?

小智 0

你有没有打开gdm,因为如果没有锁定屏幕,就不会有任何变暗。

问题是 gdm 正在将 org.gnome.SessionManager.Presence 读取为之前的 gnome-scrennsaver,因此向 mutter 发送消息是假的,因为重置计时器应该只执行一次。

调光是通过发送 dpms 强制关闭或不依赖 dpms 计时器来完成的

干杯,罗伯特