关闭笔记本电脑盖时关闭 Xfce 电源管理器中的显示和锁定屏幕?

JiK*_*JiK 7 screensaver power-management

我有一个戴尔 XPS 13(2015 年型号),我使用 Ubuntu 15.10 和 Xmonad。我已经xfce4-power-manager运行,gnome-screensaver用于锁定屏幕。在 xfce4-power-manager 的设置对话框中,有一个设置“当笔记本电脑盖子关闭时”,它有三个选项(分别用于电池和插入时):关闭显示、暂停和锁定屏幕。

如果我选择“关闭显示器”,合上盖子时屏幕不会被锁定。我想在合上盖子时锁定屏幕。但是,当我选择“锁定屏幕”时,显示屏似乎没有关闭。为了省电,我也想关掉显示器。获得两者的好(简单和/或有点规范)方法是什么?

使用 gnome-screensaver 和 XFCE 消隐后锁定屏幕 的问题可能相关,但没有答案。

Jef*_*ski 2

我认为在 XFCE 电源管理器中不可能做到这一点。但是,您可以为锁定屏幕和关闭屏幕创建一个脚本,并使其在您合上盖子时立即启动,从而覆盖电源管理器的设置。

\n\n

Ubuntu 官方帮助页面报告了如何启动自定义脚本。我将按顺序写这些段落,为了了解每个步骤的原因,请阅读原始帖子。也许这不是最简单的过程(无论如何它都非常简单,因为您只需输入一系列指定的命令并用精确的内容填充文件),但我认为这是唯一的方法。而且,它非常规范,无论是小写还是大写 C,解决方案都在 Ubuntu 的官方帮助中。

\n\n

首先,创建一个脚本以使环境变量可供 root 用户使用,以便它可以在普通用户的环境中启动命令。\n(我输入命令是mousepad因为它是 XFCE 的默认文本编辑器。将其替换使用GEdit、SciTE、Emacs、nano或vim您使用的任何编辑器)

\n\n
$ mousepad ~/export_x_info\n
Run Code Online (Sandbox Code Playgroud)\n\n

具有以下内容

\n\n
\n

# 在启动时导出 dbus 会话地址,以便它可以被任何其他环境使用
\n sleep 5
\n touch $HOME/.Xdbus
\n chmod 600 $HOME/.Xdbus
\n env | grep DBUS_SESSION_BUS_ADDRESS > $HOME/.Xdbus
\n echo \'export DBUS_SESSION_BUS_ADDRESS\' >> $HOME/.Xdbus

\n\n

# 在启动时导出 XAUTHORITY 值,以便 cron 可以使用它
\n env | grep XAUTHORITY >> $HOME/.Xdbus
\n echo \'export XAUTHORITY\' >> $HOME/.Xdbus

\n
\n\n

并使其可执行

\n\n
$ chmod 700 ~/export_x_info\n
Run Code Online (Sandbox Code Playgroud)\n\n

将其添加到Settings\xe2\x86\x92 Session and Startup\xe2\x86\x92Application autostart中以将其设置为在启动时运行。

\n\n

创造/etc/acpi/events/lm_lid

\n\n
# mousepad /etc/acpi/events/lm_lid\n
Run Code Online (Sandbox Code Playgroud)\n\n

有了这个内容

\n\n
\n

事件=按钮/盖子。*
\n 操作=/etc/acpi/lid.sh

\n
\n\n

这将执行/etc/api/lid.sh这将在触发盖子按钮时让我们来创建它

\n\n
# mousepad /etc/api/lid.sh\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n

#!/bin/bash

\n\n

/home/%user/lid_event

\n
\n\n

(显然替换%user为您的用户名)

\n\n

这意味着脚本将执行/home/%user/lid_event。我们也来创建它吧

\n\n
$ mousepad ~/lid_event\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n

grep -q 关闭 /proc/acpi/button/lid/LID/state
\n if [ $? = 0 ]
\n 然后
\n /home/%user/close;
\n 否则
\n /home/%user/open;
\n 菲

\n
\n\n

~/open如果盖子打开并且~/close关闭,再次,让我们创建它们:

\n\n
$ mousepad ~/close\n
Run Code Online (Sandbox Code Playgroud)\n\n

由于您需要关闭屏幕xset dpms force off并需要锁定屏幕xflock4,因此将其写在里面close:

\n\n
\n

#运行此命令以便 root 可以在用户环境下运行以下命令
\n source /home/%user/.Xdbus
\n #锁定并关闭屏幕
\n DISPLAY=:0.0 su %user -c "xflock4 && xset dpms 强制关闭"

\n
\n\n

打开里面,按照Ubuntu帮助的建议,你可以播放你选择的声音(我用Barney Gumble的打嗝做了测试)

\n\n
\n

#运行此命令以便 root 可以在用户环境下运行以下命令
\n source /home/%user/.Xdbus
\n #播放打开的声音
\n DISPLAY=:0.0 su %user -c "aplay %您的选择的路径/声音”

\n
\n\n

让我们让它们全部可执行

\n\n
$ chmod +x ~/lid_event\n$ chmod +x ~/open\n$ chmod +x ~/close\n
Run Code Online (Sandbox Code Playgroud)\n\n

重新启动 acpid

\n\n
# /etc/init.d/acpid restart\n
Run Code Online (Sandbox Code Playgroud)\n\n

启动~/export_x_info(或重新启动笔记本电脑,以便在启动时自动启动)并关闭/打开盖子以查看其是否正常工作。

\n\n

注意:在我的笔记本电脑中,锁定屏幕也会将其关闭,因此我无法 100% 测试双重操作,但它可以锁定它。此外,作为示例,帮助页面还提供了一个操作,可以在关闭盖子时将 Pidgin 的状态更改为“离开”,在打开盖子时更改为“我在这里”,非常有用。

\n\n

TL;DR(如果懒人或新手遇到过这个问题):在灰色背景中输入命令(#意味着您需要提升 root 权限,或者只需sudo在命令之前键入,而$意味着您应该像常规一样输入命令用户)。当命令调用文本编辑器(即mousepad)时,将黄色背景中的部分复制并粘贴到编辑器中,然后保存并关闭。

\n