Lors du débogage de programmes d'interface utilisateur, je vois fréquemment la boîte de dialogue "Attendre ou forcer la fermeture".
C'est super ennuyeux, car cette boîte de dialogue bloque essentiellement tout. L'ensemble du système graphique n'est plus utilisable tant que je n'ai pas sélectionné l'une des options.
Je voudrais désactiver complètement ou au moins avoir une option pour ignorer cette fenêtre.
C'est un problème connu. Voir "Le programme" ne répond pas lors du débogage dans gdb .
A en juger par l'autre rapport de bogue <something> ne répond pas, la fenêtre s'affiche constamment lors du débogage d'un programme , qui semble être lié, le problème semble être résolu dans gnome-Shell
version 3.28.4.
Courir apt-cache policy gnome-Shell
pour connaître votre version installée .
Si vous utilisez une ancienne version, essayez de mettre à niveau votre Ubuntu18 en exécutant:
Sudo apt update
Sudo apt dist-upgrade
Cependant, ce problème reste ouvert pour le débogage gdb.
Comme alternative, retarder la fenêtre "Fenêtre ne répondant pas" pourrait être une bonne solution. Comment augmenter le temps d'attente pour les programmes qui ne répondent pas? est lié à cela, mais je n'ai pas pu trouver de détails sur la façon de le faire.
Une solution de contournement plus simple si la mise à jour et le correctif ne sont pas possibles ou incommodes.
zenity
. (Vérifiez $ PATH, pour connaître exactement ~/.../bin
emplacement).mutter-dialog
ou argument spécifique en vérifiant les paramètres./usr/bin/zenity $@
)Dans les versions de murmure ≥ 3.35.92, vous pouvez définir le délai d'attente utilisé pour vérifier si une fenêtre est toujours en vie. Ceci est également utile pour le transfert X sur ssh avec une latence élevée. Par exemple, vous pouvez définir le délai d'expiration sur 60 s (60000 ms) en utilisant:
gsettings set org.gnome.mutter check-alive-timeout 60000
Une façon d'y parvenir consiste à modifier la durée pendant laquelle une fenêtre peut "ne pas répondre" avant que la boîte de dialogue ne s'affiche. Le code qui gère cela est dans le libmutter-4-0
bibliothèque, où l'heure est codée en dur à 5 secondes. Attention, ce qui suit est une sorte de hack, pas très élégant, mais ça marche. (Et je me suis amusé à le faire!)
Nous pouvons obtenir le code source du libmutter-4-0
package comme ceci:
apt-get source libmutter-4-0
qui donne un répertoire appelé mutter-3.32.2+git20190711
. Allez dans ce répertoire:
cd mutter-3.32.2+git20190711
Apportez ensuite une modification dans le fichier src/core/display.c
sur la ligne qui ressemble à ceci:
#define PING_TIMEOUT_DELAY 5000
Cela signifie qu'il attendra 5000 millisecondes avant d'afficher la boîte de dialogue "ne répond pas". Changez-le en quelque chose de beaucoup plus grand, j'ai utilisé 5000000 ce qui correspond à 5000 secondes:
#define PING_TIMEOUT_DELAY 5000000
Après avoir fait ce changement, nous voulons construire la bibliothèque modifiée. Pour ce faire, configurez d'abord comme ceci:
meson _build
(à ce stade, il peut y avoir des erreurs en raison de dépendances manquantes, installez simplement ce qui manque en utilisant Sudo apt install
et essaye meson _build
encore)
Construisez ensuite:
ninja -C _build
Après cela, le nouveau fichier de bibliothèque est dans ./_build/src/libmutter-4.so.0.0.0
- il ne nous reste plus qu'à l'installer:
Sudo install ./_build/src/libmutter-4.so.0.0.0 /usr/lib/x86_64-linux-gnu/
puis redémarrez pour vous assurer que le gestionnaire de fenêtres est redémarré à l'aide du nouveau fichier de bibliothèque. Après le redémarrage, la boîte de dialogue "ne répond pas" doit être effectivement désactivée (à proprement parler, elle peut toujours apparaître éventuellement, selon ce que PING_TIMEOUT_DELAY
valeur que vous avez utilisée).
Si vous souhaitez annuler cette modification et réinstaller le fichier de bibliothèque d'origine, cela peut être fait à l'aide de Sudo apt reinstall libmutter-4-0
.