如何在KDE中同时关闭屏幕(DPMS)和锁定会话?

首先,我知道有一个类似的问题是关于GNOME的,链接在这里:"锁定屏幕时关闭笔记本背光"
目标
出于节能的原因,我想在锁定会话时关闭屏幕。
实际问题
在Kubuntu(KDE)上锁定屏幕不可避免地会触发屏幕保护程序。除了将背景颜色设置为黑色的“空白屏幕”选项外,我没有找到其他屏幕保护选项与我的目标接近。它会使屏幕变黑,但并没有真正“关闭”屏幕。屏幕的背光仍然亮着,没有节省任何电源。
当前解决方法
通过脚本+快捷键的解决方法是可行的,但只是一种权宜之计,因为它不能在所有锁定会话的方式上触发。因此,我认为应该以更优雅的方式来实现,例如在KDE的屏幕保护程序配置对话框中提供此选项。
我现在使用的解决方法如下。一个锁定屏幕并关闭屏幕的脚本:
#!/bin/bash

qdbus org.freedesktop.ScreenSaver /ScreenSaver Lock
xset dpms force standby

并通过自定义菜单项使用快捷键运行它。它有效。

以下是我认为这是一种权宜之计而不是解决方案的原因:对于其他触发会话锁定的方式无效。

我的实际问题

我需要修改/修补KDE的源码吗?

  • 如果不需要,我有哪些选择?
  • 如果需要,
    • 有人能告诉我从哪里开始吗?
    • 你认为在GUI中配置的推荐位置是什么?

我正在使用Kubuntu 12.04,并愿意升级到KDE 4.9或等待12.10版本发布。

10个回答

找到了一种适用于KDE 4(适用于Ubuntu 14.10及以下版本)的方法。对于现代的KDE 5,请参考其他答案
  1. 进入 系统设置应用和系统通知管理通知

  2. 选择 屏幕保护程序 作为 事件来源

  3. 找到并选择 屏幕已锁定

  4. 将以下命令添加到事件中:

     xset dpms force off
    

enter image description here

每次锁定时,它会关闭所有显示器。

这真是太聪明了。诀窍就是将“屏幕保护程序”与锁定屏幕的概念联系起来思考。 - gertvdijk
对于Kubuntu 15.04的用户来说,这种方法似乎遇到了一个bug,即KDE守护进程完全崩溃,带走了整个会话... :-( - gertvdijk
@gertvdijk 嗯,可能得检查一下 - 我还在使用14.04版本,而且它对我来说是有效的。虽然我已经逐渐扩展了大约六个不同的事情,这些事情发生在我锁定/解锁时。 - SomeoneSomewhereSupportsMonica
xset dpms force standby似乎非常可靠,不需要使用sleep 1 ; xset dpms force off的技巧。 - Alan Thompson
@AlanThompson,sleep 1 的作用是为了让你有时间松开鼠标并且它停止移动,然后屏幕才会关闭。否则,它可能会立即唤醒屏幕,这意味着你需要输入密码才能再次锁定屏幕。不过我不确定我在哪里建议使用 sleep 1 - SomeoneSomewhereSupportsMonica

确认:在屏幕锁定通知中运行以下命令:/bin/sleep 1 ; /usr/bin/xset dpms force off 可以在Plasmashell 5.10上生效。
前往:系统设置 > 通知 > 事件来源 "屏幕保护程序":

Notifications -- System Settings


没有“睡眠”,对我来说就不起作用,所以谢谢你的提示! - Tom Pohl
在Kubuntu 22.04中,经过一段时间的黑屏后,显示器会自动重新打开。 - xgdgsc

在KDE Plasma 5.18中,与this comment有一点不同。
通过Super键搜索通知,并按照下面的截图操作:

Notifications

Notifications - Application Settings

Configure Notifications - System Settings Module

我使用了/bin/sleep 5; /usr/bin/xset dpms force off而不是1,但这取决于你。

截至KDE 5版本,这里大部分的解决方案已经不再适用。
以下是我找到的一个有效方法(截至2016年9月28日),创建一个文本文件,并将以下代码复制粘贴进去:
#!/bin/sh
sleep 0.5
loginctl lock-session
xset dpms force off

然后将其保存为"KDE5lockscreenanddpms.sh",名称不重要,只需确保以.sh结尾。然后使用文件管理器导航到保存的位置,右键单击并打开属性>权限,并将其设置为可执行。
现在您可以点击它,它将运行脚本,锁定屏幕,然后在0.5秒后关闭显示器。
以下是一些关于这些命令的帖子。 KDE.org- loginctl lock-session Linux-apps.com - sleep 0.5 xset dpms force off

一个可能的解决方案是切换到xscreensaver。手册实际上附带了说明。
以下是大纲。
  1. 禁用KDE屏幕保护程序

    1. K菜单 -> 计算机 -> 系统设置 -> 显示和监视器 -> 屏幕保护程序
    2. 取消选中启动后自动开始
  2. 安装xscreensaver

    sudo apt-get install xscreensaver

  3. 创建~/.kde/Autostart/xscreensaver.desktop

    在其中添加以下行

    [Desktop Entry]
    Exec=xscreensaver
    Name=XScreenSaver
    Type=Application
    X-KDE-StartupNotify=false
    
  4. 替换KDE锁屏界面

    cd /usr/lib/kde4/libexec
    sudo mv kscreenlocker kscreenlocker.original
    sudo vim kscreenlocker
    

    kscreenlocker中添加以下行

    #!/bin/sh
    xscreensaver-command -lock
    
  5. 使用xscreensaver-demo配置dpms(无需sudo)

    Advance标签中配置DPMS。最小待机时间为1分钟。

    但是,在第一次配置后,您可以尝试通过编辑~/.xscreensaver来缩短时间。在文件中查找dpmsStandby:

    不确定如果将dpmsStandby:更改为0:00:00会起作用。我正在使用虚拟机测试,黑屏看起来一样。


你确定替换kscreenlocker是个好主意吗?根据kscreenlocker --help的说明,它不仅仅是用来锁定屏幕的。除此之外,建议转向Xscreensaver是个不错的想法! - gertvdijk
我的错,我应该补充一下,迁移到Xscreensave实际上会替换你的KDE屏幕保护程序。除此之外没有任何副作用。kscreenlocker --help显示了它的使用方法/调用方式,它与KDE屏幕保护程序配合使用。目前迁移到xscreensaver是一个权宜之计。 - John Siu
关于KDE的新版本,你可以查看这个帖子和这个帖子。使用KDC 4.9或4.10的人似乎遇到了一些非常烦人的dpms问题,并且实际上想要关闭这个功能。所以我建议暂时不要升级kde。 - John Siu

如果您使用 Wayland KDE 会话(运行 kwin_wayland),则需要不同的解决方案。
因为在上述情况下,我们不再使用 X.Org、X11 API 和 xset - 惊讶地发现 - 现在已经不再起作用了(因为用户越来越少地使用基于 kwin_x11 的会话)。
但是应该有一些 dbus 方法可以关闭屏幕,对吧?没错!

这个解决方案基于已接受的答案及其 KDE5 的实际副本。
所以如果您还没有阅读过它们,请先浏览一下。但是现在需要的命令不同了,我受到了一个关于 KDE 屏幕关闭快捷方式的好 主题 的启发。

结合多个信息源,使用bit dbus viewer尝试和检查调用,然后-你应该将此命令粘贴到屏幕锁定通知中:
/bin/sleep 1 && /bin/dbus-send --session --dest=org.kde.kglobalaccel /component/org_kde_powerdevil org.kde.kglobalaccel.Component.invokeShortcut string:'Turn Off Screen'

命令背后的一些原因:

  • 命令以1秒的延迟开始,因为:屏幕锁定快捷键的按键松开事件可能会立即打开屏幕
  • qdbus命令已被弃用,并且现在许多发行版上都没有安装,但dbus-send非常基本且普遍存在

此外,这应该移动到Super User或Unix & Linux。 Ubuntu不是与KDE最相关的发行版,但这适用于所有KDE发行版。


dbus-send --session --type=method_call --dest=org.kde.kglobalaccel /component/org_kde_powerdevil org.kde.kglobalaccel.Component.invokeShortcut string:'关闭屏幕' - Christian Hartmann

十多年后,我发表了我的问题...
KDE 5.27 增加了一个功能,通过按下 Esc 键可以在锁屏界面上关闭屏幕。 Plasma 5.27 公告

一键省电:在锁屏界面上,按下 Esc 键即可关闭屏幕并节省一些电量。


KDE5和XScreenSaver(5.34): 点击选项卡复杂高级,然后通过勾选来激活能源管理,并将关机的分钟数设置为您喜欢的值(或者使用快速关机)。

嗯,我可能漏掉了什么... 如何进入一个有“复杂”选项卡的窗口呢? - gertvdijk
你是不是想把这个评论发给另一个关于XScreensaver的回答?http://askubuntu.com/a/232844/88802 - gertvdijk
1OP是4岁,KDE版本小于4.9。您的回答应该涉及这些差异。 - WinEunuuchs2Unix
我的KDE是德语版本的,而在英语版本中,“Komplex”似乎被翻译为“Advance”。另外,我使用的是Debian系统,而不是Ubuntu。我应该删除我的回答吗? - dr0i

系统设置/个人/轻锁定器(在新的Whisker菜单中)

5你能解释一下这是如何工作的以及它的功能是什么吗? - Kaz Wolfe

在Kubuntu 14.04上,只需进入系统设置 - 电源管理 - 在节能选项卡下关闭屏幕调暗和屏幕节能即可。
祝好!

然后呢?当我锁定时,它并没有关闭我的屏幕(DPMS)。所以它并没有回答我的问题。 - gertvdijk