O valor DISPLAY
de localhost:10.0
indica que você está em uma conexão X11 encaminhada pelo SSH, como você afirmou na pergunta. Se você alterar o DISPLAY
para :0.0
, então você está dizendo que deseja que o programa apresente suas janelas na tela que está diretamente conectada ao computador remoto ... e se você não estiver fisicamente perto disso, não vai ser muito útil.
A renderização direta exigiria que o aplicativo da GUI tivesse acesso direto à GPU real que é desenhada na sua tela ... o que é obviamente impossível quando a tela e o aplicativo não estão no mesmo host.
Parece que este aplicativo pode ser projetado para ser usado apenas localmente. Se ele não puder retornar à renderização indireta, ele não poderá ser usado em uma conexão X11 remota: a renderização direta exige que a GPU que realmente fará o desenho esteja no mesmo computador que o aplicativo e não seja separada dele por uma rede. conexão.
Se você estiver usando uma conexão X11 remota com Xming
ou VcXsrv
, seus níveis de suporte do OpenGL dependerão principalmente dos níveis que o Xming
ou VcXsrv
suportará. É claro que o computador remoto também precisa das bibliotecas apropriadas do OpenGL, mas geralmente o gerenciador de pacotes ou o instalador do aplicativo cuida disso.
Quando você o está executando como um usuário comum, você está executando como o usuário que você registrou em sua conexão SSH de encaminhamento X11, ou você mudou para outra conta de usuário no host remoto após efetuar o login?
A troca de contas de usuário, embora preservando o encaminhamento do X11, requer um pouco de esforço extra: além de garantir que o valor da variável DISPLAY
seja preservado, você também deve garantir que o usuário de destino tenha acesso ao conteúdo do ~ Arquivo / .Xauthority do usuário de origem. Você pode copiar o arquivo ~ / .Xauthority para algum outro local (por exemplo, em / tmp) e, em seguida, usar a variável de ambiente XAUTHORITY
para apontar para ele.
Por exemplo:
<logged in to remote host as user1, with X11 forwarding>
user1$ echo $DISPLAY
localhost:10.0
user1$ cp ~/.Xauthority /tmp/user1.Xauthority
user1$ chgrp user2 /tmp/user1.Xauthority
user1$ chmod 640 /tmp/user1.Xauthority
user1$ sudo -u user2 -i
user2$ export DISPLAY=localhost:10.0
user2$ export XAUTHORITY=/tmp/user1.Xauthority
<now running a X11 GUI application should be possible>
Isso pode ser evitado quando você muda de usuário para root, já que o root pode ler todos os arquivos ... incluindo o arquivo ~ / .Xauthority. Portanto, ao alternar de user1
para raiz, as únicas coisas que precisam ser feitas são manter o valor DISPLAY
e o ponto XAUTHORITY
to /home/user1/.Xauthority
. Algumas distribuições do Linux incluem scripts ou módulos PAM que fazem isso automaticamente quando você alterna de um usuário comum para o root.