在 Ubuntu 20.04.2 LTS(默认 GNOME 桌面)中。我在 Ubuntu GNOME 桌面上启用了自动挂起功能,但是,如果仅运行我的程序,我想禁用自动挂起。
我的程序在一秒钟内运行,并循环多次。我可能发现自动暂停正在查看此值:
org.gnome.Mutter.IdleMonitor
为了暂时停止挂起,我想知道如何重置此空闲时间。例如:
#!/bin/bash
while :
do
# <anything to reset idle time> <- I WANT!
./myprogram
sleep 1
done
我不想完全禁用自动暂停功能。
你有一个好的命令吗?
答案1
通过内省Mutter.IdleMonitor
我们发现有一种方法ResetIdletime
:
gdbus introspect --session --dest org.gnome.Shell --object-path /org/gnome/Mutter/IdleMonitor/Core
...
interface org.gnome.Mutter.IdleMonitor {
methods:
GetIdletime(out t idletime);
AddIdleWatch(in t interval, out u id);
AddUserActiveWatch(out u id);
RemoveWatch(in u id);
ResetIdletime();
不幸的是,gnome 的开发者决定不让它自己使用,参见元空闲监控-dbus.c:
handle_reset_idletime (...) ...
if (!g_getenv ("MUTTER_DEBUG_RESET_IDLETIME"))
...
"This method is for testing purposes only. MUTTER_DEBUG_RESET_IDLETIME
must be set to use it");
也许您可以找到如何在 gnome 环境中设置这个调试变量。
另一种可能性是使用 systemd 的禁止机制。这允许您在命令前添加请求以禁止其运行时的各种操作,例如关机、睡眠和空闲。
$ systemd-inhibit --mode=block --what=sleep --why='for me' sleep 100 &
$ systemd-inhibit --list
...
Who: sleep 100 (UID 1000/meuh, PID 3262/systemd-inhibit)
What: sleep
Why: for me
Mode: block
使用它来调用你的 shell 脚本,你仍然可以中断它。请参阅man systemd-inhibit
。
答案2
谢谢提供一些信息!
最后,我通过输入空键解决了这个问题xdotool
。
xdotool key 0x00
我可以简单地重置空闲时间。
答案3
对于桌面,还有工具咖啡因,或后续咖啡因。