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

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

Esta é uma pergunta de iniciante, eu sei... mas pesquisei e estou ficando frustrado. Conheço muito bem o Lunux, mas nunca tive que lidar com o XServer.

Questão 1:

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

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

Quero executar (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 este 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 faço isso no terminal local (no UBUNTU) funciona como deveria, então não há nada de errado com o programa.

Questão 2:

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

Obrigado Pedro

Responder1

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

ssh -X [email protected]

Isso encaminharia suas janelas X11 para serem exibidas em seu servidor X local em seu Mac.

Ver:https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/ssh.1.html

Para a primeira pergunta:

EXIBIÇÃO e AUTORIDADE

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

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

  • Precisa da senha para o display. As senhas de exibição X 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 no 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: https://unix.stackexchange.com/a/10126

Consulte essa postagem para uma ótima explicação.

Responder2

Remotamente, você precisaria definir a exibição a ser usada exportando a variável ambiental 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-se a partir do seu Mac.

Como:http://www.howtoforge.com/how-to-install-vnc-server-on-ubuntu-14.04

Responder3

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 -Yopção.

informação relacionada