Estou executando o gerenciador de janelas incrível em confiável depois de ter atualizado de raring. Meu ambiente de área de trabalho intencionalmente não possui todos os daemons Gnome / Freedesktop em execução - não os quero.
Quando executo gedit
de um terminal como este:
gedit file
Ele envia mensagens como esta em todo o meu terminal sempre que eu pressiono enter ou save ou em várias outras ocasiões:
(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
Entendo o significado deste aviso e decidi que não importa para mim.
Como posso desativar esse tipo de aviso? Ao "desativar", não quero dizer nenhuma dessas soluções alternativas ou similares:
- canalizando a saída do gedit para
/dev/null
- escrevendo um script wrapper que canaliza a saída do gedit para
/dev/null
- criando um alias que canaliza a saída do gedit para
/dev/null
Essas soluções alternativas não são aceitáveis, pois precisam ser aplicadas individualmente a cada aplicativo Gnome - o gedit não é o único que gosta de atrapalhar o terminal.
export GCONF_DEBUG="no"
faria alguma coisaRespostas:
Primeiro, também acho irritante que esses avisos apareçam em um Ubuntu pronto para uso, sem um método "adequado" para desativá-los que eu possa encontrar (parece que a "solução" mais comum é instalar
gir1.2-gtksource-3.0
que parece não funcionar desde que já está instalado ou para ignorá-los - mas quero suprimi-los completamente, pois eles fazem meu terminal barulhento).Eu vim com o seguinte código, que até agora parece se comportar exatamente como eu esperaria, e é baseado na resposta de TuKsn, mas aprimora um pouco para:
gedit ...
) sem precisar usar F12 ou outro atalho (para chamar o uso não filtrado/usr/bin/gedit ...
).Ainda pode ser um pouco generalizado, mas, por enquanto, se você precisar do mesmo tratamento para outros comandos, duplique a
gedit()
função para o outro nome de comando que precisa do mesmo filtro.E uma versão melhor (muito menor, totalmente genérica, não é necessário reescrever o histórico desde que foi invocado, e é melhor para filtrar por linha, em vez de toda a saída):
fonte
Também é uma solução alternativa, mas você não precisa aplicá-lo a todos os aplicativos.
Escreva para o seu
.bashrc
e você pode usar este wrapper com F12 (ou escolheu outra chave) para suprimir os avisos:fonte
Na verdade, eu escrevi a ferramenta hide-warnings em C, que acho muito mais fácil de usar do que o script mostrado acima. Além disso, ele gravará toda a saída gravada
stdout
por padrão (porque o Gtk e outros avisos são enviados para,stderr
portanto, elestderr
não analisastdout
por padrão).Um grande problema com o script acima é que ele não gravará nada no seu console, mesmo que não corresponda ao regex, até terminar. Isso ocorre porque ele salva todos os dados em uma variável e, em seguida, faz o grep dessa variável. Isso também significa que ele salvará a saída nessa variável, possivelmente usando muita memória (pelo menos você deve salvá-la em um arquivo temporário). Finalmente, pelo que posso ver, o grep impedirá qualquer exibição se alguma linha corresponder . Talvez não seja exatamente o que você deseja.
A ferramenta pode ser usada em um alias simples como este:
(Eu uso
gvim
... tenho certeza que funcionariagedit
também.)O arquivo é independente, sem dependências além da biblioteca C, para que você possa obter uma cópia, compilar e instalar facilmente:
Há alguma documentação adicional no arquivo e você pode usar
--help
uma vez compilado para documentos rápidos.A versão mais recente , que em algum momento fará uso da biblioteca advgetopt, está em C ++.
fonte
Eu estava procurando por um utilitário para resolver esse tipo de problema, eu mesmo.
Meus problemas com as respostas fornecidas são os seguintes:
Agradeço as tentativas que já vi de fazer isso com o Bash, mas não consegui identificar uma solução que atendesse todas as três condições descritas acima.
Minha solução definitiva está escrita no NodeJS, que eu entendo que não será instalado em muitas caixas Linux. Antes de optar por escrever a versão JS, tentei codificá-la em python e descobri que a biblioteca de E / S assíncrona é bastante feia e está quebrada até MUITAS versões recentes do python (~ 3.5, que está disponível em algumas distribuições mais recentes).
Minimizar as dependências foi o ÚNICO motivo para escolher o python, então eu o abandonei no NodeJS, que possui um conjunto notável de bibliotecas para E / S orientada a assíncrona de baixo nível.
Aqui está:
Para usar esse script, você pode adicionar essas linhas ao seu .bashrc:
O subprocesso que você escolher executar herdará o stdin, portanto, você poderá usar os tubos ou o redirecionamento BASH.
fonte