如何根据活动保持计算机处于唤醒状态?

如何根据活动保持计算机处于唤醒状态?

我希望能够在某些活动和较长时间运行的任务(例如下载较大的文件和观看全屏视频)期间保持计算机处于唤醒状态。

我喜欢使用 Caffeine 来防止显示器进入睡眠状态,从而防止计算机进入睡眠状态。这在我的 Mac 上很有效,但在 Ubuntu 上却不起作用。

我怎样才能做到这一点?

答案1

我不确定为什么 Caffeine 不会让您的计算机保持唤醒状态。我怀疑这是因为 Ubuntu 上的空闲时间相当于未通过键盘或鼠标检测到用户活动的时间

如何防止计算机进入睡眠状态

如果您正在寻找一种像 Caffeine 那样保持计算机唤醒的解决方案(应该可以),下面的解决方案应该有效;我在 14.04 上对其进行了测试。它包含两个小脚本,您应该将它们存储在同一个文件夹中。您可以使用组合键将其关闭或打开(切换)。按下它后,它将在消息中显示当前状态:

在此处输入图片描述或者:在此处输入图片描述

它基本上是一个小型后台脚本,Ctrl当空闲时间超过定义的时间量时,它会模拟用户的小动作(按键),从而防止计算机进入睡眠状态或屏幕空白。按键本身毫无意义,对全屏播放视频没有影响。

如何使用

  • 您需要拥有xprintidlexdotool安装:

    sudo apt-get install xprintidle xdotool
    

    inotify-tools应该默认安装在Ubuntu,在 Xu- 或 Lubuntu 上可能并非如此)

  • 下面的脚本用于打开/关闭,将其复制到一个空文件中,将其保存为insomnia.py(保持原名!)并使其可执行(!)

#!/usr/bin/env python3
import os
import subprocess

script_dir = os.path.dirname(os.path.abspath(__file__))
try:
    pid = subprocess.check_output(["pgrep", "-f", "caf.py"]).decode("utf-8").strip()
    subprocess.Popen(["kill", pid])
    subprocess.Popen(["notify-send", "Computer doesn't stay awake..."])
except:
    subprocess.Popen(["/bin/bash", "-c", script_dir+"/"+"caf.py"])
    subprocess.Popen(["notify-send", "Computer stays awake..."])
  • 下面的(主要)脚本是让计算机保持唤醒状态,将脚本复制到一个空文件中,将其保存为caf.py(保持原名!)并使其可执行(!)
#!/usr/bin/env python3

import subprocess
import time

seconds = 120 # number of seconds to start preventing blank screen / suspend

while True:
    curr_idle = subprocess.check_output(["xprintidle"]).decode("utf-8").strip()
    if int(curr_idle) > seconds*1000:
        subprocess.call(["xdotool", "key", "Control_L"])
    time.sleep(10)

将两个脚本保存在同一个文件夹中非常重要!

  • 现在添加键盘快捷键来打开和关闭 Caffeine 替代品:“系统设置”>“键盘”>“快捷键”>“自定义快捷键”

    添加命令:

    /path/to/insomnia.py
    

    按照您选择的组合键

就是这样。

答案2

打印空闲在 Wayland 上无法正常工作,工具可以替换为ydotool在 Wayland 上。

还有更多故事org.gnome.ScreenSaver.SimulateUserActivitygnome 会话抑制但我还没和他们达成和解。

如果脚本将该值设置回来,解决方案可以是:

gsettings set org.gnome.desktop.session idle-delay 3600

该数字代表秒数。使用 0 表示绝不

答案3

您还可以使用这里的几个脚本解决方案,我认为它们更智能,因为它们可以根据网络活动或文件夹大小的变化来确定活动。

例如,如果您想在备份或 torrent 客户端运行时保持计算机处于唤醒状态,则请使用 dhiya 链接中的第二个解决方案。它将检查网络流量并使其保持唤醒状态直到流量停止。如果您使用的是以太网而不是无线局域网,请记住在代码中将“wlan0”更改为“eth0”。

更新日期:2015/09/17:我修改了下面链接中的 dhiya 代码,以便根据网络流量或用户活动使系统保持唤醒状态,并在桌面会话最终进入锁定/登录屏幕且没有网络流量时强制正常暂停。该程序将所有内容记录到日志文件中。还提供了配置来管理日志文件。我将该程序命名为“Keep Awake”。

关联有什么方法可以让 Ubuntu 在下载过程中不暂停?

答案4

使用 Jacob Vlijm 的非常有用的脚本作为起点,我将其变成了一个具有配置选项、电池感知等功能的成熟应用程序。

你可以在 GitHub 上获取。无需安装。只需:

  1. 下载.tar.gz并提取文件(或者如果您是 git 用户,则克隆主分支)到您希望应用程序存在的任何位置。将它放在您$PATH不是必要的。
  2. 安装依赖项:

    sudo apt install xdotool xprintidle
    

    如果您使用的是笔记本电脑,您还需要acpi

  3. 从您安装的目录中运行sleep_inhibit
  4. 如果您希望应用程序在每次登录时自动启动,请打开图标的菜单,选择“首选项”,然后在首选项窗口中启用它。
  5. 如果您决定卸载它,请退出 Sleep Inhibit,然后运行cleanup.py​​,确保对所有问题都回答是。然后删除目录,所有痕迹都将消失。

相关内容