Quem usa linux dificilmente larga o famoso prompt de comando.
Isso se deve ao grande poder e à conhecida versatilidade do BASH.
Entretando, existem sempre algumas dificuldades que a grande maioria passa.
Neste POST está mais uma dessas, bem como a solução.
Talvez você precise executar um programa no modo gráfico, mas com sua inicialização partindo dum comando.
Isso talvez aconteça pois você quer visualizar os erros/outputs deste programa em específico.
Pra isso, simplesmente você faz:
hudson@vostrolab ~/ $ programa
Mas talvez a idéia seja simplesmente executar um programa com outro usuário. Então você pensa:
hudson@vostrolab ~/ $ su – usuario -c “xlogo”
E aí você obtém:
Password:
No protocol specified
Error: Can’t open display: :0
Isso acontece pois as chaves usadas para autenticar sua sessão do X (modo gráfico) não são mais válidas a partir do momento em que você troca de usuário.
Tal medida de segurança parece exagero, mas é uma herança de quando as sessões X eram muito usadas em rede.
Pra resolver essa, basta liberar sua sessão X para autenticar outros usuários, usando o comando xhost.
Isso deve ser feito antes de trocar de usuário.
hudson@vostrolab ~/ $ xhost +local:local
non-network local connections being added to access control list
hudson@vostrolab ~/ $ su – usuario -c “xlogo”
Password:
hudson@vostrolab ~/ $
xlogo foi usado como exemplo de aplicação, pois abre uma simples ‘janela’ na tela.
Nesse ponto da execução, você deve ver sua aplicação normalmente, seja um mozilla ou um thunderbird =).
Não esqueça de desfazer a autorização com o ‘menos’ ao invés do ‘mais’:
hudson@vostrolab ~/ $ xhost -local:local
non-network local connections being removed from access control list
Referências: http://www.tuxradar.com/content/command-line-tricks-smart-geeks