web-dev-qa-db-fra.com

Comment désactiver la boîte de dialogue «Fenêtre ne répond pas»

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.

20
kerner1000

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-Shellpour 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.

5
pymym213

Une solution de contournement plus simple si la mise à jour et le correctif ne sont pas possibles ou incommodes.

  • Créez un script wrapper dans le dossier HOME avec le même nom zenity. (Vérifiez $ PATH, pour connaître exactement ~/.../bin emplacement).
  • Filtrer les appels avec mutter-dialog ou argument spécifique en vérifiant les paramètres.
  • Passez tous les autres appels à la zénité d'origine (/usr/bin/zenity $@)

Référence: bogue RH: zénité ennuyeuse "arrêt forcé" ou "attente" apparaît pour tout lors de la pré-liaison/compilation/chargement

3
user.dz

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
2
Vaelus

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.

1
Elias