当盖子关闭时,Ubuntu无法进入休眠状态。

我在我的笔记本电脑上使用Ubuntu 12.04。我正在尝试配置在关闭盖子时进入休眠状态,但是无法正常工作。 我已经采取了以下步骤来解决这个问题:
  • 我在/etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla中启用了休眠功能。
  • 系统设置 - 电源
  • 我使用了dconf编辑器。
当我关闭盖子时,它不是进入休眠状态,而是进入暂停状态。我尝试运行sudo pm-hibernate,它可以正常工作。
有什么建议吗?

1你修改了电源设置,以便在合盖时使用休眠而不是暂停吗? - Thomas Ward
什么?我修改了我的电源设置,使用休眠而不是挂起。然而,当我合上盖子时却是挂起状态。 - Gustavo Siqueira
你是说你要同时设置电池和交流电两种状态的功率设置,对吗? - Thomas Ward
是的,两者都配置为类似于休眠。 - Gustavo Siqueira
2个回答

这是您修复的方法。 在您的文件中:
/etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla

确保你那儿有两个设定。
[Enable hibernate by default in upower]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

[Enable hibernate by default in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate
ResultActive=yes

这就是原因。在这个文件中:
/var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla

它将两个选项设置为“否”

您创建的文件应在/var/lib中的文件之后执行,因此它应该具有优先权(已测试并确实如此)。您可以在这里的“评估顺序”部分阅读相关信息。当您的“upower”选项设置为“是”时,您可以从Ubuntu的电源设置中选择休眠。然而,您仍然无法休眠,因为10-vendor.d文件将login1.hibernate设置为“否”,而它也必须是“是”


注意:在尝试此操作之前,请在终端中尝试 pm-hibernate 命令。如果成功了,就可以继续进行下一步。
我通过以下方式解决了这个问题...
1. 使用 cinnamon-settings / Power 设置事件为休眠。这将设置 dconf 值 /org/gnome/settings-daemon/plugins/power/lid-close-ac-action 和 /org/gnome/settings-daemon/plugins/power/lid-close-battery-action 为所需的值。
2. 编辑 /etc/acpi/events/lm_lid 文件(使用命令 gksudo gedit /etc/acpi/events/lm_lid),并填入以下内容:
event=button/lid.*
action=/etc/acpi/lid.sh
编辑 /etc/acpi/lid.shgksudo gedit /etc/acpi/lid.sh)。如果它是空的,请填写。
grep -q closed /proc/acpi/button/lid/*/state
if [ $? = 0 ]
then
    su - gabriel -c 'gsettings get org.cinnamon.settings-daemon.plugins.power lid-close-ac-action' | grep hibernate
    if [ $? = 0 ]
    then
        pm-hibernate
    fi
fi
否则,寻找正确的位置将代码放在上面
用你的用户名替换gabriel。在调用gsettings get之前,你必须执行su操作,因为这个脚本是以root身份运行的,以root身份运行gsettings get会返回root用户的首选项,而不是你的用户。
你可以直接调用pm-hibernate,但是在cinnamon-settings中更改选项将不再起作用。我没有关心我的笔记本是连接交流电还是电池供电,因为这是无关紧要的:无论如何,我都希望有相同的行为。也许有人想在那里添加一个if语句?