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