运行 Gnome 3.28。我在屏幕消隐方面遇到了问题。更具体地说,屏幕不消隐,我不知道如何让它持续消隐。(几年前的某个时候,我完全关闭了屏幕消隐,现在我再也不知道我是怎么做到的了。)在整个过程中,当我提到消隐时,我特别想要/更喜欢 DPMS 关闭行为。
在 gnome-preferences 的“电源”部分中设置“空白屏幕”没有任何作用。 xset q
返回以下内容:
DPMS (Energy Star):
Standby: 0 Suspend: 0 Off: 0
DPMS is Enabled
Monitor is On
我可以使用 来打开屏幕消隐功能xset dpms 1200 2400 4800
。这有效。但是,运行任何使用 dbus 请求抑制屏幕消隐的应用程序(例如 chrome 中的 Youtube)都会导致 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 force off 或 on 来实现的,不依赖于 dpms 定时器
欢呼吧,罗伯特