如何暂时禁用自动挂起(重置空闲时间)

如何暂时禁用自动挂起(重置空闲时间)

在 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

对于桌面,还有工具咖啡因,或后续咖啡因

相关内容