Question Comment faire disparaître définitivement l'avertissement de parent transitoire?


Zenity m'agace en affichant toujours l'avertissement dans le terminal:

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

Apparemment je ne suis pas le seul:

Presque toutes les réponses vous disent de changer la façon dont vous appelez la zénité en ajoutant 2>/dev/null jusqu'à la fin de la commande. Je ne veux pas faire cela pour tout le code que j'ai déjà écrit et mémoriser ceci pour le futur code que j'écris.

Y a-t-il un moyen plus facile de faire disparaître ce message ennuyant?


4
2018-03-26 01:32


origine




Réponses:


Fondamentalement, il n'y a pas d'autre moyen que de rediriger stderr à /dev/null. La raison principale est que Gtk nécessite des fenêtres de dialogue (ce qui est ce que zenity Windows sont en fait) pour avoir une fenêtre d'application parente. Cette même chose se produit si vous créez une boîte de dialogue graphique à partir de zéro en c ou en python.

Ainsi, le seul moyen "réel" est que les développeurs de Gtk permettent réellement aux fenêtres de dialogue de se débrouiller seules, ou que les développeurs de zenity réduisent au silence ces avertissements dans leur code source. Sinon, votre seule option est d'ajouter constamment 2>/dev/null à tout zenity commander. Bien sûr, vous pouvez toujours créer une fonction d’alias ou de wrapper qui le fera pour vous, comme suit:

zenity(){
    /usr/bin/zenity "$@" 2>/dev/null
}

Cela, cependant, peut avoir des problèmes avec la citation et le passage des arguments, mais pour la plupart, cela devrait fonctionner. Si vous travaillez en Python ou dans un autre langage capable de gérer réellement Gtk, vous pouvez créer vos propres boîtes de dialogue contextuelles avec les fenêtres parentes cachées, ce qui se fait au détriment de la complexité et de l’apprentissage de ces éléments. Mais encore une fois, la vraie manière serait pour zenity Les développeurs corrigent ce problème ou les développeurs de Gtk pour reconnaître la nécessité de fenêtres de dialogue autonomes.


5
2018-03-26 01:57



Lors de la recherche de la question que j'ai lue, les développeurs travaillaient à faire disparaître cet avertissement. Quand n'a pas été abordé si .... - WinEunuuchs2Unix
Cela peut avoir des problèmes avec les citations, surtout depuis que vous avez utilisé des citations incompatibles. - Nic Hartley
@QPaysTaxes ooops, merci d'avoir attrapé les citations incompatibles. Tapait sans lunettes - Sergiy Kolodyazhnyy


Ajouter automatiquement 2>/dev/null chaque fois que le zénity est appelé

Modifier le fichier ~/.bashrc et recherchez ces lignes:

# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

Ajoutez les lignes suivantes après:

# Add zenity alias to make the annoying terminal error message disappear forever:
# "Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged."
alias zenity="zenity 2>/dev/null"

Enregistrez le fichier et ouvrez une nouvelle fenêtre de terminal pour tester:

zenity --info --text "Hello Zenity-Silly-Error-Free World"

Voila! Tout votre ancien code est fixe et le futur code n'a pas besoin d'avoir 2>/dev/null ajouté à elle comme toutes les autres réponses instruisent.


3
2018-03-26 01:32



Pourquoi utiliseriez-vous des pouvoirs sudo pour éditer votre propre bashrc? - Andrea Lazzarotto
@AndreaLazzarotto a corrigé cela;) - Sergiy Kolodyazhnyy
"... le futur code ne doit pas avoir 2> / dev / null ajouté à toutes les autres réponses". Eh bien, la redirection s’y ajoute toujours à chaque fois, vous ne le faites pas à la main. - Sergiy Kolodyazhnyy
@AndreaLazzarotto Vous avez tellement raison. Désolé mon esprit a été conditionné à mettre sudodans tous mes messages. Les mauvaises habitudes sont difficiles à briser ... - WinEunuuchs2Unix
@Serg Merci pour la modification :) - WinEunuuchs2Unix