我正在使用装有 Ubuntu 16.04 的笔记本电脑,Gnome 作为桌面环境,LightDM 作为登录管理器。
我想要做的是在盖子关闭 30 秒后让计算机挂起。这可能吗?
答案1
合上盖子30秒后切换至暂停状态
禁用默认的合盖操作
要设置计算机进入挂起状态之前的特定时间,我们需要禁用关闭盖子的默认操作。这可以通过以下命令完成:
gsettings set org.gnome.settings-daemon.plugins.power lid-close-ac-action "nothing"
和
gsettings set org.gnome.settings-daemon.plugins.power lid-close-battery-action "nothing"
自定义关闭盖子时的操作
随后,我们需要设置合上盖子时的替代操作,包括暂停前 30 秒的休息时间。我们能将它们与现有事件挂钩。
问题是,这样做的好处是否值得更复杂的设置。下面这样的脚本版本几乎不会消耗任何处理器和内存,即使你运行了十个脚本版本也是如此。
脚本选项的优点是它很容易恢复;只需不再运行它并恢复原始(或不同的)设置。
剧本
#!/usr/bin/env python3
import time
import subprocess
# set delay time below (seconds)
delay = 30
# set path to lid status file
f = "/proc/acpi/button/lid/LID/state"
# --- set close command below
close_command = ["systemctl", "suspend"]
def get_state():
return "open" in open(f).read()
state1 = get_state()
while True:
time.sleep(3)
state2 = get_state()
if state2 != state1:
t = 0
while not get_state():
time.sleep(1); t = t+1
if t > delay:
subprocess.Popen(close_command)
break
state1 = state2
如何使用
如上所述,首先禁用默认的盖子关闭操作:
gsettings set org.gnome.settings-daemon.plugins.power lid-close-ac-action "nothing"
和
gsettings set org.gnome.settings-daemon.plugins.power lid-close-battery-action "nothing"
将脚本复制到一个空文件中,另存为
delay_lidsuspend.py
在脚本的头部,设置了一些默认值和路径。很可能你不需要更改任何内容:
# set delay time below (seconds) delay = 30 # set path to lid status file f = "/proc/acpi/button/lid/LID/state" # --- set close command below close_command = ["systemctl", "suspend"]
我不确定每台笔记本电脑上的盖子状态文件路径(“/proc/acpi/button/lid/LID/state”)是否相同。使用以下命令进行测试:
cat /proc/acpi/button/lid/LID/state
通过从终端运行来测试运行脚本:
python3 /path/to/delay_lidsuspend.py
然后关上盖子,看看它是否按预期工作(这里它完美地完成了工作)。
如果一切正常,请将其添加到启动应用程序。