J'exécute le gestionnaire de fenêtres génial sur trusty après avoir mis à niveau depuis raring. Mon environnement de bureau n'a pas intentionnellement tous les démons Gnome / Freedesktop en cours d'exécution - je n'en veux pas.
Lorsque j'exécute à gedit
partir d'un terminal comme celui-ci:
gedit file
Il affiche des messages comme celui-ci partout sur mon terminal chaque fois que j'appuie sur Entrée ou Enregistrer ou à diverses autres occasions:
(gedit:5700): Gtk-WARNING **: Calling Inhibit failed: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.SessionManager was not provided by any .service files
Je comprends la signification de cet avertissement et j'ai décidé que cela n'avait pas d'importance pour moi.
Comment désactiver ce type d'avertissement? Par «désactiver», je ne veux dire aucune de ces solutions de contournement ou similaires:
- canaliser la sortie de gedit dans
/dev/null
- écrire un script wrapper qui dirige la sortie de gedit dans
/dev/null
- création d'un alias qui dirige la sortie de gedit dans
/dev/null
Ces solutions de contournement ne sont pas acceptables car elles doivent être appliquées individuellement à chaque application Gnome - gedit n'est pas le seul à aimer gâcher le terminal.
export GCONF_DEBUG="no"
je ferais quelque choseRéponses:
Tout d'abord, je trouve également ennuyeux que ces avertissements apparaissent sur un Ubuntu prêt à l'emploi, sans méthode "appropriée" pour les désactiver que je pourrais trouver (il semble que la "solution" la plus courante soit soit d'installer
gir1.2-gtksource-3.0
ce qui ne semble pas fonctionner car il est déjà installé, ou les ignorer - mais je veux les supprimer complètement car ils rendent mon terminal bruyant).J'ai trouvé le code suivant qui jusqu'à présent semble se comporter exactement comme je m'y attendais, et est basé sur la réponse de TuKsn, mais l'améliore un peu pour:
gedit ...
) sans avoir besoin d'utiliser F12 ou un autre raccourci (pour invoquer une utilisation non filtrée/usr/bin/gedit ...
).Peut encore être généralisé un peu, mais pour l'instant, si vous avez besoin du même traitement pour les autres commandes, dupliquez la
gedit()
fonction pour chaque autre nom de commande qui a besoin du même filtre.Et une meilleure version (beaucoup plus petite, entièrement générique, pas besoin de réécrire l'historique car invoquée telle quelle, et meilleure pour le filtrage par ligne plutôt que la sortie entière):
la source
C'est aussi une solution de contournement, mais vous n'avez pas à appliquer cela pour chaque application.
Écrivez ceci dans votre
.bashrc
et vous pouvez utiliser ce wrapper avec F12 (ou choisir une autre clé) pour supprimer les avertissements:la source
J'ai en fait écrit l' outil de masquage des avertissements en C que je trouve beaucoup plus facile à utiliser que le script illustré ci-dessus. En outre, il écrira toutes les sorties écrites
stdout
par défaut (car le Gtk et les autres avertissements sont envoyés àstderr
ilstderr
ne les analyse passtdout
par défaut).Un gros problème avec le script ci-dessus est qu'il n'écrira rien sur votre console, même s'il ne correspond pas à l'expression régulière, jusqu'à ce qu'il soit terminé. En effet, il enregistre toutes les données dans une variable, puis grep cette variable une fois terminé. Cela signifie également qu'il enregistrera la sortie dans cette variable en utilisant éventuellement beaucoup de mémoire (au moins, vous devriez l'enregistrer dans un fichier temporaire.) Enfin, d'après ce que je peux voir, le grep empêchera tout affichage si une ligne correspond . Peut-être pas exactement ce que vous voulez.
L'outil peut être utilisé dans un alias simple comme celui-ci:
(J'utilise
gvim
... Je suis sûr que cela fonctionneraitgedit
aussi.)Le fichier est autonome, aucune dépendance autre que la bibliothèque C, vous pouvez donc obtenir une copie et facilement la compiler et l'installer:
Il y a une documentation supplémentaire dans le fichier et vous pouvez l'utiliser
--help
une fois compilé pour des documents rapides.La nouvelle version , qui à un moment donné utilisera la bibliothèque advgetopt, est en C ++.
la source
Je cherchais moi-même un utilitaire pour résoudre ce genre de problème.
Mes problèmes avec les réponses fournies sont les suivants:
J'apprécie les tentatives que j'ai vues pour faire cela avec Bash, cependant, je n'ai pas réussi à identifier une solution qui remplisse les 3 conditions décrites ci-dessus.
Ma solution ultime est écrite en NodeJS, qui, je crois, ne sera pas installée sur de nombreuses boîtes Linux. Avant de choisir d'écrire la version JS, j'ai essayé de la coder en python, et j'ai trouvé que la bibliothèque asynchrone d'E / S était assez moche et cassée jusqu'à des versions TRÈS récentes de python (~ 3.5 qui est disponible dès le départ sur certaines distributions plus récentes).
Minimiser les dépendances était la SEULE raison de choisir python, donc je l'ai abandonné pour NodeJS, qui possède un ensemble remarquable de bibliothèques pour des E / S asynchrones quelque peu bas niveau.
C'est ici:
Pour utiliser ce script, vous pouvez ajouter ces lignes à votre .bashrc:
Le sous-processus que vous choisissez d'exécuter héritera de stdin, vous êtes donc libre d'utiliser les canaux BASH ou la redirection.
la source