При отладке программ UI я часто вижу, "Ожидают или вызывают выход" Диалоговое окно.
Это является супер раздражающим, с тех пор этот диалоговые блоки в основном все. Целая графическая система больше не применима, пока я не выбираю одну из опций.
Я хотел бы отключить это полностью или по крайней мере иметь опцию проигнорировать это окно.
Это - известная проблема. См. , "Программа" не отвечает при отладке в gdb.
Оценка из другого отчета об ошибках < something> не отвечает окно постоянно показывает при отладке программы , которая, кажется, связана, проблема, кажется, решена в gnome-shell
Выполнение версии 3.28.4.
apt-cache policy gnome-shell
для знания установленной версии .
при использовании старой версии попытайтесь обновить Ubuntu18 путем выполнения:
sudo apt update
sudo apt dist-upgrade
Однако эта проблема остается открытой для отладки gdb.
Как альтернатива, задержка "Окно, не отвечающее" Диалоговое окно, могла быть хорошим решением. , Как увеличить время ожидания не отвечающих программ? касается этого, но я не мог найти детали о том, как сделать это.
Более простое обходное решение, если обновление и патч, не возможный или неудобный.
zenity
. (Проверьте $PATH для точного ~/.../bin
местоположение). mutter-dialog
или определенный аргумент путем проверки параметров. /usr/bin/zenity $@
) Один способ достигнуть этого состоит в том, чтобы измениться, сколько времени время, окну позволяют "не ответить" перед диалоговым окном, показывают. Код, который обрабатывает это, находится в libmutter-4-0
библиотека, где время трудно кодируется к 5 секундам. Остерегайтесь этого, следующее является своего рода взломом, не очень изящным, но это действительно работает. (И у меня была некоторая забава, делающая его!)
Мы можем получить исходный код для libmutter-4-0
пакет как это:
apt-get source libmutter-4-0
который дает названный каталог mutter-3.32.2+git20190711
. Войдите в тот каталог:
cd mutter-3.32.2+git20190711
Затем внесите изменение в файле src/core/display.c
на строке, которая похожа на это:
#define PING_TIMEOUT_DELAY 5000
Это означает, что будет ожидать 5 000 миллисекунд прежде, чем показать "не отвечающее" диалоговое окно. Измените его на что-то намного большее, я использовал 5000000, который соответствует 5 000 секунд:
#define PING_TIMEOUT_DELAY 5000000
Внеся то изменение, мы хотим создать измененную библиотеку. Чтобы сделать это, сначала настройте как это:
meson _build
(в той точке могут быть ошибки из-за недостающих зависимостей, просто установить то, что избегает использовать sudo apt install
и попробуйте meson _build
снова)
Затем сборка:
ninja -C _build
После этого новый файл библиотеки находится в ./_build/src/libmutter-4.so.0.0.0
- теперь все, что мы должны сделать, должно установить его:
sudo install ./_build/src/libmutter-4.so.0.0.0 /usr/lib/x86_64-linux-gnu/
и затем перезагрузка для проверки менеджера окон перезапущена с помощью нового файла библиотеки. После перезагрузки должно быть эффективно отключено "не отвечающее" диалоговое окно (строго говоря, это может все еще обнаружиться в конечном счете, в зависимости от какой PING_TIMEOUT_DELAY
оцените Вас используемый).
Если Вы хотите вернуться это изменение и переустановить исходный файл библиотеки, который может быть сделан с помощью sudo apt reinstall libmutter-4-0
.
В версиях mutter ≥ 3.35.92 вы можете установить время ожидания, используемое для проверки того, живо ли окно. Это также полезно для X-forwarding по ssh с высокой задержкой. Например, вы можете установить время ожидания 60 с (60000 мс), используя:
gsettings set org.gnome.mutter check-alive-timeout 60000