Mic*_*ael 7 scripts lubuntu suspend power-management 18.04
我正在尝试将运行 LUbuntu 18.04 的笔记本电脑配置为首先进入登录屏幕,然后在显示登录屏幕后,暂停。这样做的原因是默认的简单暂停然后在恢复时显示登录屏幕会导致在恢复时显示登录屏幕之前延迟大约 5 秒,而如果在机器暂停时登录屏幕已经打开,它几乎可以立即在简历中使用。
无论如何,我一直在研究如何做到这一点,似乎我最好的选择是在盖子关闭时简单地运行一个脚本,dm-tool lock如果需要等待登录屏幕显示,首先调用然后延迟,然后systemctl suspend。
但是,如何将关闭盖子的动作与运行此脚本相关联?从我的研究来看,这似乎acpid是要走的路。从阅读手册页来看,似乎需要在/etc/acpi/events调用的lidbtn. 该目录存在于我的系统上,但不存在这样的脚本,并且手册页不清楚它到底需要包含什么。查看此目录中的其他脚本,似乎我需要知道为“event=”行添加什么内容,但我在任何地方都没有找到。
还提到了处理此事件的窗口管理器,目前尚不清楚我需要做什么来确保我的脚本不与此冲突。在 Xfce 电源管理器(菜单 -> 首选项 -> 电源管理器)下的常规选项卡下,我看到“当笔记本电脑盖关闭时”...暂停,但唯一的其他选择是“关闭显示”和“锁定屏幕”。“什么都不做”别无选择。我需要在这里做什么?请求的操作是在我可能创建的 acpid 脚本被执行之前还是之后发生,还是完全覆盖它?
首先,我创建了一个/etc/acpi/events/laptop-lid包含以下内容的新文件:
event=button/lid.*
action=/etc/acpi/laptop-lid.sh
Run Code Online (Sandbox Code Playgroud)
然后我创建了/etc/acpi/laptop-lid.sh包含此代码:
#!/bin/bash
source /home/michael/.Xdbus
grep -q closed /proc/acpi/button/lid/LID/state
if [ $? = 0 ]
then
# close action
dm-tool switch-to-greeter
sleep 5
systemctl suspend
else
# open action
fi
Run Code Online (Sandbox Code Playgroud)
在/home/michael/.Xdbus我把以下内容:
export XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
Run Code Online (Sandbox Code Playgroud)
我制作了/etc/acpi/laptop-lid.sh可执行文件 ( chmod a+x)。
然后我跑了
/etc/init.d/acpid restart
最后,我进入 XFCE 电源管理器并将其设置为在关闭笔记本电脑盖时“关闭显示器”,以避免与我改进的新功能发生冲突。
但是,我发现还有一个问题——我从暂停状态出来后,会显示登录屏幕,然后机器又会暂停。经过一番搜索,我认为这是由于Ubuntu 中的一个bug,该bug显然仍然存在于 18.04 中。我通过检查自从我尝试睡眠 5 秒以来是否已经过去了 6 秒以上来解决这个问题,如果是这样,我就不会暂停。看起来我的笔记本电脑实际上在 2 秒内挂起,所以这对我来说总是有用的。我尝试将 Xfce 设置为锁定屏幕,但它似乎也没有兑现——在这两种情况下,我的机器都在 2 秒内暂停,而我的脚本应该强制它等待至少 5 秒。
更新:
做完这一切后,我仍然完全不满意。因为我的XFCE电源管理设置基本上忽略了机器导致总是睡觉时,我合上盖子,这会在睡眠过程多远之间的竞争条件的DM-工具获取对创造的迎宾员,这总是导致一些延迟上在该过程完成启动欢迎程序时恢复。所以我完全取消了上述所有工作,而是做了以下工作:
编辑~/.config/openbox/lubuntu-rc.xml。找到锁定屏幕的键绑定并将其更改为切换到问候语。这样做的主要效果似乎是不关闭显示,这对于让迎宾员立即出现在简历中似乎很重要:
<keybind key='W-L'>
<action name='Execute'>
<command>dm-tool switch-to-greeter</command>
</action>
</keybind>
Run Code Online (Sandbox Code Playgroud)
现在,而不是关闭盖子,我猛击Win + L,并且一旦出现接待员我然后盖上盖子。
注意:我想要一个单独的脚本,首先切换到欢迎程序,然后挂起,但似乎无论我如何尝试挂起(systemctl、dbus 等),它们都拒绝在没有手动干预的情况下从锁定屏幕挂起- 从对话框中输入密码 - 这不可能满足,因为我们处于锁定屏幕!
| 归档时间: |
|
| 查看次数: |
3620 次 |
| 最近记录: |