в Ubuntu 20.04.2 LTS (DEPTTOP GNOME по умолчанию). Я включаю авто приостановить на рабочем столе Ubuntu Gnome, но, если только запустить мою программу, я хочу отключить Auto Suspend.
Моя программа работает через секунду, а цикла много цикла. Возможно, я обнаружил, что Auto Suspend смотрит на это значение:
org.gnome.Mutter.IdleMonitor
прекратить приостановить временное, я хочу, чтобы сбросить этот простой простой. Например:
#!/bin/bash
while :
do
# <anything to reset idle time> <- I WANT!
./myprogram
sleep 1
done
Я не хочу более комфортно отключить AutoSusPend.
У вас есть хорошая команда?
Спасибо, какая-то информация!
Финала, я решил его по входной нулевой клавише с XDotool
.
Ключ XDOTOOL 0x00
Я могу сбросить простое время просто.
Введение в 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();
К сожалению, разработчики гномов решили оставить его использование при себе, смотрите meta-idle-monitor-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");
Возможно, вы сможете узнать, как установить эту отладочную переменную в вашем окружении гномов.
Другая возможность - это использование механизма блокировки 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
Используйте это для вызова скрипта оболочки, и вы все еще можете прервать его.
Смотрите man systemd-inhibit
.