2014年8月

在这方面做的最好的当然是Mac OS X, 另外一台macbook air合上盖子自动休眠,打开立刻恢复, 用户体验上非常流畅。 而在ubuntu 12.04下面就没有这么好的感觉了, 最坏的地方是,x220上面默认的合上盖上是关闭显示,而我有外接显示器和键盘鼠标,因此只要桌面有一点点晃动,碰到了鼠标,显示器立刻就亮了,这点很无语。
因此虽然我不敢期待它能达到MBA的体验,但是还是希望能有最基本的体验:合上盖子,迅速待机;打开,立刻恢复,最好都在5s以内完成。linux下的休眠工具是pm-utils的速度和体验最好,因此我就希望用pm-suspend命令劫持合上盖子的事件。 通过不断google搜索以后,基本实现。
先使用acpi_listen获取了合上盖子的事件, 然后发现触发的脚本是/etc/acpi/events/lidbtn, 本来默认使用/etc/acpi/lid.sh处理事件, 我替换为pmutils, 如下:

# /etc/acpi/events/lidbtn
# Called when the user closes or opens the lid

#event=button[ /]lid
#action=/etc/acpi/lid.sh
event=button[ /]lid LID close
action=/usr/sbin/pm-suspend

接着,优化了一下pm-utils的设置, 添加配置文件/etc/pm/config.d/00-use-suspend-hybrid :

# Always use suspend_hybrid instead of suspend
if [ "$METHOD" = "suspend" ]; then
  METHOD=suspend_hybrid
fi
# The delay after which hibernation gets triggered (default: 900 seconds, 15 minutes):
PM_HIBERNATE_DELAY=900

默认使用suspend_hybrid实现待机, 如果待机超过15分钟,从待机变成休眠。

如此一来,算是完美实现了我想要的功能和效果。