Как найти программу, которая предотвращает сон?

Я замечаю, что недавно мой ноутбук не переходит ко сну/локауту после своего настроенного, который X минут неактивности как он сделали в прошлом. Я подозреваю некоторую программу (как медиаплеер, делает), препятствует тому, чтобы он заснул. У меня нет выполнения медиаплеера, поэтому как я могу найти, какая программа препятствует тому, чтобы оно спало?

Это действительно засыпает, если я закрываю крышку. Но я также хотел бы за него заснуть после X минут неактивности.

Обновление: Обновленный до Ubuntu 18.04 с Gnome по умолчанию и Уэйлендом включен.

4
задан 3 September 2018 в 10:13

3 ответа

При открытии окна терминала, можно ввести "вершину" для просмотра непрерывно обновляющего списка всех рабочих процессов. Один из этих занятых фоновых процессов мешает Вашему ноутбуку заснуть. Поскольку статический список вводит "PS aux" вместо этого. Можно затем видеть их идентификационные номера процесса. Это позволит, Вы для использования "sudo уничтожаете pidnumber" на любом подозрительном процессе, чтобы видеть, если остановка его затем позволит ноутбуку засыпать (после его периода тайм-аута). После того как Вы определили проблематичный процесс, можно затем сделать обоснованное решение о том, важен ли тот процесс для Вас.

0
ответ дан 1 December 2019 в 10:31

Я думаю, что понял это.

Я использовал:

dbus-send --print-reply --dest=org.gnome.SessionManager /org/gnome/SessionManager org.gnome.SessionManager.GetInhibitors

получить список ингибиторов, как:

array [
   object path "/org/gnome/SessionManager/Inhibitor71"
   object path "/org/gnome/SessionManager/Inhibitor72"
]

Затем я сделал:

dbus-send --print-reply --dest=org.gnome.SessionManager /org/gnome/SessionManager/Inhibitor71 org.gnome.SessionManager.Inhibitor.GetAppId

Который возвратился:

string "firefox"

Кажется, что Firefox предотвращает его. Кажется, что теперь, когда YouTube играет, он предотвращает сон.

1
ответ дан 1 December 2019 в 10:31

Mitar, безусловно, правильный ответ, вы можете использовать dbus для получения информации.

Интересным аспектом этого является то, что некоторые вкладки в Firefox будут создавать проблемы, а другие — нет. Теперь, когда я тестировал, я могу сказать, что он достаточно умен, чтобы добавлять/удалять запрет в зависимости от содержимого страницы, т.е. на ютубе у вас есть видео, которое тормозит скринсейвер.

Я написал скрипт на PHP, чтобы перечислить ингибиторы в виде простого списка. Бьюсь об заклад, в python есть инструменты/библиотеки для этого (потому что многие коды ОС используют этот язык), но, к сожалению, я недостаточно знаю python, чтобы сделать это.

Скопируйте следующее в файл, например ~/bin/inhibitors, а затем сделайте его исполняемым с помощью chmod 755 ~/bin/inhibitors. Теперь в вашей консоли вы можете ввести: ингибиторы и вы получите список инструментов, предотвращающих переход вашей ОС в спящий режим.

#!/usr/bin/php
<?php
$list = `dbus-send --print-reply --dest=org.gnome.SessionManager /org/gnome/SessionManager org.gnome.SessionManager.GetInhibitors`;

$l = explode("\n", $list);

$found = false;
foreach($l as $a)
{
    $a = trim($a);
    if($found)
    {
        if($a == "]")
        {
            break;
        }
        if(substr($a, 0, 13) == 'object path "')
        {
            $inhibitor = substr($a, 13, strlen($a) - 14);

            $info = `dbus-send --print-reply --dest=org.gnome.SessionManager $inhibitor org.gnome.SessionManager.Inhibitor.GetAppId`;

            $names = explode("\n", $info);
            $n = trim($names[1]);
            if(substr($n, 0, 8) == 'string "')
            {
                $name = substr($n, 8, strlen($n) - 9);

                echo $inhibitor, " ", $name, "\n";
            }
        }
    }
    elseif($a == "array [")
    {
        $found = true;
    }
}

Вот пример вывода:

$ inhibitors
/org/gnome/SessionManager/Inhibitor2414 firefox
/org/gnome/SessionManager/Inhibitor2415 org.gnome.Totem

В этом случае Firefox и Totem блокируют мою заставку.

1
ответ дан 13 May 2020 в 19:49

Другие вопросы по тегам:

Похожие вопросы: