我安裝了 Ubuntu GNOME,發現收到很多「程式未回應」訊息。
我必須“強制退出”該程式或“等待”一段時間。
我注意到,每次我等待程式時,程式最終都會繼續運行,不會出現任何問題。
所以我思考可能有一個“超時”配置,程式被視為無響應,我想增加此超時。
答案1
無法配置,因為暫停value 被定義為雜音源中的常數值。 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)
但是,我認為您需要修改延遲視窗的原始程式碼。或者我認為你可以與那些嘀咕的開發者/維護者討論一下。
您可以使用以下命令準備建置環境並取得原始程式碼。
$ 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
此錯誤已修復。 2019 年 6 月 6 日,Ubuntu 18 的向後移植版本為 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