web-dev-qa-db-fra.com

message d'erreur lors de l'exécution de zenity sous 16.04: Gtk-Message: GtkDialog mappé sans parent transitoire. C'est découragé

Sous ubuntu 16.04 je reçois le message suivant

 Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged

quand j'ouvre zenity avec la commande

  zenity --text-info --filename=<filename>

Cela ne s'est pas passé sous 14.04. Je suppose que la réponse est liée à ce post mais le post n'explique pas comment mettre en œuvre la solution proposée. Quelqu'un pourrait-il expliquer à quel fichier ajouter les lignes suggérées?

Vous corrigez cet avertissement en donnant à GtkDialog un parent sur lequel modaliser. Les fonctions appropriées sont gtk_window_set_transient_for () (qui définit cette fenêtre comme toujours au-dessus ou transitoire pour une autre) et éventuellement gtk_window_set_modal () pour en faire un dialogue modal. C'est finalement ce que font les différents constructeurs de GtkDialog.

16
Leo Simon

l'ignorer.

C'est un warning, pas une erreur. L’application fonctionne, elle n’a tout simplement pas été codée selon les meilleures pratiques. Vous devez modifier le code source de zenity pour implémenter le correctif décrit dans la question liée, puis le compiler vous-même, mais ... cela fonctionne quand même, alors pourquoi vous en fâchez?

Si vous souhaitez simplement vous débarrasser de la sortie de votre terminal, vous pouvez simplement rediriger STDERR (flux d'erreur standard, c'est là que l'avertissement est imprimé) vers /dev/null (périphérique de caractère virtuel avalant des données) en ajoutant 2> /dev/null à la fin du texte. commande, comme ceci:

zenity --text-info --filename=<filename> 2> /dev/null
18
Byte Commander

Il semble que les développeurs de Gtk aient décidé d’ajouter cet avertissement qui affecte un certain nombre de paquets. Nous devons juste attendre que le développeur de Zenity rattrape et corrige Zenity.

Avec le shell bash (ce n'est pas compatible avec Posix), il est relativement simple de supprimer des messages d'erreur spécifiques tout en permettant à d'autres messages de passer à stderr:

zenity --info --text "hello" 2> >(grep -v 'GtkDialog' >&2)

Cela n'interfère pas avec stdout, il peut donc être redirigé ou utilisé comme substitut de commande comme d'habitude:

echo message: $(zenity --entry  2> >(grep -v 'GtkDialog' >&2) )
3
Dave Rove

zenity ... 2>/dev/null fonctionne pour moi. Le seul problème que je vois est que d'autres messages d'erreur (importants) seront également supprimés. Il est donc préférable de créer une capture d'erreur dans votre code

2
splaisan