Estoy ejecutando el impresionante administrador de ventanas en trusty después de haber actualizado de raring. Mi entorno de escritorio intencionalmente no tiene todos los demonios Gnome / Freedesktop ejecutándose; no los quiero.
Cuando ejecuto gedit
desde una terminal como esta:
gedit file
Emite mensajes como este en mi terminal cada vez que presiono enter o guardar o en varias otras ocasiones:
(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
Entiendo el significado de esta advertencia y he decidido que no me importa.
¿Cómo puedo desactivar este tipo de advertencia? Por "apagar", no me refiero a ninguna de estas soluciones o soluciones similares:
- canalizando la salida de gedit en
/dev/null
- escribir un script de envoltura que canaliza la salida de gedit en
/dev/null
- creando un alias que canaliza la salida de gedit en
/dev/null
Estas soluciones alternativas no son aceptables, ya que deben aplicarse individualmente a cada aplicación Gnome; gedit no es el único al que le gusta estropear el terminal.
export GCONF_DEBUG="no"
haría algoRespuestas:
Primero, también me resulta molesto que estas advertencias aparezcan en un Ubuntu listo para usar, sin un método "adecuado" para deshabilitarlas, lo que pude encontrar (parece que la "solución" más común es instalar
gir1.2-gtksource-3.0
que no parece funcionar ya que ya está instalado, o ignorarlos, pero quiero suprimirlos por completo ya que solo hacen que mi terminal sea ruidosa).Se me ocurrió el siguiente código que hasta ahora parece comportarse exactamente como lo esperaba, y se basa en la respuesta de TuKsn, pero lo mejora un poco para:
gedit ...
) sin necesidad de usar F12 o algún otro acceso directo (para invocar el uso sin filtro/usr/bin/gedit ...
).Todavía se puede generalizar un poco, pero por ahora, si necesita el mismo tratamiento para otros comandos, duplique la
gedit()
función para cada nombre de comando que necesita el mismo filtro.Y una versión mejor (mucho más pequeña, totalmente genérica, sin necesidad de reescribir el historial, ya que se invoca tal cual, y mejor para filtrar por línea en lugar de la salida completa):
fuente
También es una solución, pero no tiene que aplicar esto para cada aplicación.
Escríbele esto a tu
.bashrc
y puedes usar este contenedor con F12 (o elegir otra tecla) para suprimir las advertencias:fuente
De hecho, escribí la herramienta hide-warnings en C, que encuentro mucho más fácil de usar que el script que se muestra arriba. Además, escribirá toda la salida escrita
stdout
de forma predeterminada (porque el Gtk y otras advertencias se envían a,stderr
por lo questderr
no se analizastdout
de manera predeterminada).Un gran problema con el script anterior es que no escribirá nada en su consola, incluso si no coincide con la expresión regular, hasta que se haga. Esto se debe a que guarda todos los datos en una variable y luego grep esa variable una vez hecho. También significa que guardará la salida en esa variable, posiblemente usando mucha memoria (al menos debería guardarla en un archivo temporal). Finalmente, por lo que puedo ver, el grep evitará cualquier visualización si alguna línea coincide . Quizás no sea exactamente lo que quieres.
La herramienta se puede usar en un alias simple como este:
(Yo uso
gvim
... estoy seguro de que funcionaríagedit
también).El archivo es autónomo, sin dependencias distintas de la biblioteca C, por lo que puede obtener una copia y compilarlo e instalarlo fácilmente:
Hay más documentación en el archivo y puede usar
--help
una vez compilado para documentos rápidos.La versión más nueva , que en algún momento utilizará la biblioteca advgetopt, está en C ++.
fuente
Estaba buscando una utilidad para resolver este tipo de problema, yo mismo.
Mis problemas con las respuestas proporcionadas son las siguientes:
Aprecio los intentos que he visto para hacer esto con Bash, sin embargo, no pude identificar una solución que lograra las 3 condiciones descritas anteriormente.
Mi solución final está escrita en NodeJS, que entiendo que no se instalará en muchas cajas de Linux. Antes de elegir escribir la versión JS, intenté codificarla en python, y descubrí que la biblioteca asíncrona de IO es bastante fea y está rota hasta versiones MUY recientes de python (~ 3.5 que está disponible de fábrica en ALGUNAS distribuciones más recientes).
Minimizar las dependencias fue la ÚNICA razón para elegir Python, por lo que lo abandoné por NodeJS, que tiene un conjunto notable de bibliotecas para IO orientado asíncrono de bajo nivel.
Aquí está:
Para usar este script, puede agregar estas líneas a su .bashrc:
El subproceso que elija ejecutar heredará stdin, por lo que puede utilizar tuberías o redireccionamiento BASH.
fuente