Как увеличить время ожидания для неотвечающих программ?

Как увеличить время ожидания для неотвечающих программ?

Я установил Ubuntu GNOME и обнаружил, что получаю много сообщений «ПРОГРАММА не отвечает».

Мне приходится либо «принудительно завершить» программу, либо «подождать» еще немного.

Я заметил, что каждый раз, когда я жду программу, она в конечном итоге продолжается без проблем.

Так что ядуматьВозможно, существует настройка «тайм-аута» для программ, которые считаются не отвечающими, и я хочу увеличить этот тайм-аут.

решение1

Его невозможно было настроить, потому чтотайм-аутзначение определено как константа в исходном коде mutter. gnome-shell ссылается на библиотеку mutter. Я нашел значение тайм-аута в исходном коде mutter, mutter-3.10.4/src/core/display.c.

...
#define PING_TIMEOUT_DELAY 5000

И это используется функцией, которая называется meta_display_ping_window.

ping_data->ping_timeout_id = g_timeout_add (PING_TIMEOUT_DELAY, meta_display_ping_timeout, ping_data);

Ссылка на него осуществляется из функции при активации окна:

window_activate(mutter-3.10.4/src/core/window.c) -> meta_window_check_alive(mutter-3.10.4/src/core/delete.c) -> meta_display_ping_window(mutter-3.10.4/src/core/display.c)

Как вы можете видеть выше, тайм-аут составляет 5 секунд.

Вы можете изменить значение специально для себя, поскольку Mutter — проект с открытым исходным кодом.

И значение таймаута относится к другому случаю, когда окно закрыто. Поток удаления окна такой

meta_window_delete(mutter-3.10.4/src/core/delete.c) -> meta_window_check_alive(mutter-3.10.4/src/core/delete.c) -> meta_display_ping_window(mutter-3.10.4/src/core/display.c)

Однако я думаю, что вам нужно изменить исходный код для вашего окна с задержкой. Или я думаю, что вы можете обсудить это с разработчиками/сопровождающими mutter.

Вы можете подготовить среду сборки и получить исходный код с помощью следующих команд.

$ sudo apt-get build-dep mutter
$ sudo apt-get source mutter

Чтобы построить его, см.

https://www.debian.org/doc/manuals/apt-howto/ch-sourcehandling.en.html https://wiki.debian.org/BuildingTutorial

решение2

Значение mutter можно изменить через dconf (/org/gnome/mutter/check-alive-timeout) — по умолчанию 5000.

решение3

Эта ошибка была исправлена. Backport был выпущен для Ubuntu 18 как gnome-shell 3.28.4 2019-6-6. СмотретьКак отключить диалоговое окно «Окно не отвечает»

решение4

Не знаю, имеет ли смысл отвечать на этот старый вопрос, но, возможно, кому-то это будет полезно.

Я пытался собрать библиотеку Mutter из исходного кода, но сдался, потому что эта библиотека зависит от многих других библиотек, а эти библиотеки также зависят от других библиотек.

Мне нужен был способ закрыть это диалоговое окно, если оно появилось, но я не смог закрыть его ввиноприложение. Поэтому я написал небольшой скрипт на bash, который убьет это окно, если оно появится.

#!/bin/bash 

while [  true ]; do
    VAL=$(ps -fA | grep "class mutter-dialog" | grep -cv grep)

    if [ $VAL -eq 1 ]
    then
            ID=$(ps -fA | grep "class mutter-dialog" | grep -v grep | awk '{print $2}')
            sleep 5
            echo killing $ID
            kill $ID
            exit 0
    fi

    sleep 10
done

Связанный контент