超时后关闭盖子时暂停

超时后关闭盖子时暂停

我正在使用装有 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

如何使用

  1. 如上所述,首先禁用默认的盖子关闭操作:

    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"
    
  2. 将脚本复制到一个空文件中,另存为delay_lidsuspend.py

  3. 在脚本的头部,设置了一些默认值和路径。很可能你不需要更改任何内容:

    # 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
    
  4. 通过从终端运行来测试运行脚本:

    python3 /path/to/delay_lidsuspend.py
    

    然后关上盖子,看看它是否按预期工作(这里它完美地完成了工作)。

  5. 如果一切正常,请将其添加到启动应用程序。

相关内容