我希望能够在某些活动和较长时间运行的任务(例如下载较大的文件和观看全屏视频)期间保持计算机处于唤醒状态。
我喜欢使用 Caffeine 来防止显示器进入睡眠状态,从而防止计算机进入睡眠状态。这在我的 Mac 上很有效,但在 Ubuntu 上却不起作用。
我怎样才能做到这一点?
答案1
我不确定为什么 Caffeine 不会让您的计算机保持唤醒状态。我怀疑这是因为 Ubuntu 上的空闲时间相当于未通过键盘或鼠标检测到用户活动的时间。
如何防止计算机进入睡眠状态
如果您正在寻找一种像 Caffeine 那样保持计算机唤醒的解决方案(应该可以),下面的解决方案应该有效;我在 14.04 上对其进行了测试。它包含两个小脚本,您应该将它们存储在同一个文件夹中。您可以使用组合键将其关闭或打开(切换)。按下它后,它将在消息中显示当前状态:
或者:
它基本上是一个小型后台脚本,Ctrl当空闲时间超过定义的时间量时,它会模拟用户的小动作(按键),从而防止计算机进入睡眠状态或屏幕空白。按键本身毫无意义,对全屏播放视频没有影响。
如何使用
您需要拥有
xprintidle
并xdotool
安装: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.SimulateUserActivity和gnome 会话抑制但我还没和他们达成和解。
如果脚本将该值设置回来,解决方案可以是:
gsettings set org.gnome.desktop.session idle-delay 3600
该数字代表秒数。使用 0 表示绝不。
答案3
您还可以使用这里的几个脚本解决方案,我认为它们更智能,因为它们可以根据网络活动或文件夹大小的变化来确定活动。
例如,如果您想在备份或 torrent 客户端运行时保持计算机处于唤醒状态,则请使用 dhiya 链接中的第二个解决方案。它将检查网络流量并使其保持唤醒状态直到流量停止。如果您使用的是以太网而不是无线局域网,请记住在代码中将“wlan0”更改为“eth0”。
更新日期:2015/09/17:我修改了下面链接中的 dhiya 代码,以便根据网络流量或用户活动使系统保持唤醒状态,并在桌面会话最终进入锁定/登录屏幕且没有网络流量时强制正常暂停。该程序将所有内容记录到日志文件中。还提供了配置来管理日志文件。我将该程序命名为“Keep Awake”。
答案4
使用 Jacob Vlijm 的非常有用的脚本作为起点,我将其变成了一个具有配置选项、电池感知等功能的成熟应用程序。
你可以在 GitHub 上获取。无需安装。只需:
- 下载
.tar.gz
并提取文件(或者如果您是 git 用户,则克隆主分支)到您希望应用程序存在的任何位置。将它放在您$PATH
的不是必要的。 安装依赖项:
sudo apt install xdotool xprintidle
如果您使用的是笔记本电脑,您还需要
acpi
。- 从您安装的目录中运行
sleep_inhibit
。 - 如果您希望应用程序在每次登录时自动启动,请打开图标的菜单,选择“首选项”,然后在首选项窗口中启用它。
- 如果您决定卸载它,请退出 Sleep Inhibit,然后运行
cleanup.py
,确保对所有问题都回答是。然后删除目录,所有痕迹都将消失。