我已经安装了 Ubuntu GNOME 并发现我收到很多程序没有响应的消息。
我要么“强制退出”该程序,要么“等待”一会儿。
我注意到,每次我等待程序时,程序最终都会继续运行而不会出现问题。
所以我思考可能存在一个“超时”配置,以使程序被视为无响应,而我想增加这个超时时间。
答案1
无法配置,因为暂停value 在 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
可以通过 dconf (/org/gnome/mutter/check-alive-timeout) 更改 mutter 值 - 默认值为 5000。
答案3
此错误已修复。Ubuntu 18 的反向移植版本已于 2019-6-6 发布,名为 gnome-shell 3.28.4。请参阅如何禁用“窗口无响应”对话框
答案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