如何以编程方式禁用 KDE 屏幕锁定程序?

Mar*_*nus 5 kde command-line lock-screen

我想编写一个 shell 脚本来禁用 KDE 屏幕锁定器,休眠一段时间,然后重新启用它。但我不知道控制屏幕锁的 shell 命令。我怎样才能做到这一点?

Gri*_*ief 3

我一直在寻找同样的问题,我在这里找到了你的问题,但你的解决方案在 KDE Plasma 5.9 中未经修改就无法工作,所以我继续搜索并找到了你的博客文章。我已按照您的步骤进行操作并使其正常工作:

\n\n
switch-screenlocker() {\n    enabled=""\n    case "$1" in\n        \'on\')  enabled=\'true\'  ;;\n        \'off\') enabled=\'false\' ;;\n    esac\n    if [ -z "${enabled}" -o "$#" -ne 1 ]; then echo "Usage: $0 { on | off }"; return -1; fi\n    sed -ni "/Autolock=.*/!{s/\\[Daemon]/[Daemon]\\nAutolock=${enabled}/;p}" ~/.config/kscreenlockerrc\n    qdbus org.freedesktop.ScreenSaver /ScreenSaver configure\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我已经改变了:

\n\n
    \n
  1. 配置文件位置~/.kde/share/config/kscreensaverrc\xe2\x86\x92~/.config/kscreenlockerrc
  2. \n
  3. 替换命令。我sed更喜欢perl,但重要的改变是让它Autolock=true在配置中没有行时工作。kcmshell5 screenlocker删除它,因为默认情况下假定它
  4. \n
  5. 我把它包装成函数
  6. \n
\n\n

更新:\n似乎 5 分钟超时也是默认的,如果超时设置为五分钟并且启用了储物柜,则整个[Daemon]部分可能会丢失。我没有找到一种方法来sed轻松处理这种情况,但这里有一个awk可以处理该情况的命令:

\n\n
awk -i inplace \'function p(){set=1;print "[Daemon]\\nAutolock=\'${enabled}\'"}\n/\\[Daemon]/{p();next}\n/Autolock.*/{next}\n{print}\nENDFILE{if(!set){print "";p()}}\' ~/.config/kscreenlockerrc\n
Run Code Online (Sandbox Code Playgroud)\n