Como iniciar um aplicativo remotamente, para que a GUI seja mostrada localmente

3

Esta é uma pergunta para iniciantes, eu sei ... mas eu procurei e estou ficando frustrado. Eu conheço bem o Lunux, mas nunca tive que lidar com o XServer.

Pergunta 1:

Eu SSH do OSX em uma máquina de desktop UBUNTU 14.04 como usuário alfa.

O usuário alpha também está conectado localmente nessa área de trabalho.

Eu quero rodar (através do meu terminal) um aplicativo que deve aparecer na máquina UBUNTU (para que fique visível na exibição local do usuário logado localmente).

Hoje recebo esse erro quando faço isso no terminal OSX:

15:21:20:157 AWT-EventQueue-0: Error
java.awt.HeadlessException: 
No X11 DISPLAY variable was set, but this program performed an operation     which requires it.
at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:207)
at java.awt.Window.<init>(Window.java:535)
at java.awt.Frame.<init>(Frame.java:420)
<etc>

NOTA: Quando eu faço isso a partir do terminal local (no UBUNTU) ele funciona como deveria, então não há nada errado com o programa.

Pergunta 2:

Caso a máquina UBUNTU estivesse sem cabeça, como eu iria desviar as janelas para outra máquina, por exemplo, meu Mac?

Obrigado Peter

    
por Peter Andersson 12.08.2014 / 16:48

3 respostas

3

Para sua segunda pergunta: adicione o parâmetro -X (ou -Y para uma conexão confiável) ao conectar-se ao ssh e verifique se você tem o X11 no seu mac. Exemplo:

ssh -X [email protected]

Isso encaminharia suas janelas do X11 para serem exibidas no seu servidor X local no seu mac.

Veja: link

Para a primeira pergunta:

DISPLAY e AUTORIDADE

Um programa X precisa de duas informações para se conectar a um monitor X.

  • Ele precisa do endereço da exibição, que normalmente é: 0 quando você está logado localmente ou: 10,: 11, etc. quando você está logado remotamente (mas o número pode mudar dependendo quantas conexões X estão ativas). O endereço da exibição é normalmente indicado na variável de ambiente DISPLAY.

  • Precisa da senha para a exibição. X senhas de exibição são chamadas de cookies mágicos. Os cookies mágicos não são especificados diretamente: eles são sempre armazenados em arquivos de autoridade X, que são uma coleção de registros do formato “display: 42 has cookie 123456”. O arquivo de autoridade X é normalmente indicado na variável de ambiente XAUTHORITY. Se $ XAUTHORITY não estiver definido, os programas usarão ~ / .Xauthority.

Extraído de: link

Refira-se ao post para uma ótima explicação.

    
por 12.08.2014 / 16:55
1

Remotamente, você precisaria definir a exibição para usar exportando a variável de ambiente DISPLAY.

por exemplo. export DISPLAY=:0

Para sua segunda pergunta, a maneira mais fácil seria configurar o servidor VNC no Ubuntu e usar um cliente VNC para conectar a partir do seu Mac.

Como: link

    
por 12.08.2014 / 16:51
0

1) Não tenho certeza, talvez tente export DISPLAY=0 ?

2) Para mostrar a GUI na máquina que você está usando, execute o SSH com a opção -Y .

    
por 12.08.2014 / 16:56