Estou executando o Fedora 33:
Linux mainoumi 5.14.18-100.fc33.x86_64 #1 SMP Fri Nov 12 17:38:44 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Eu tenho um PC rodando Xming (servidor X11) 7.7.0.85 e PuTTy .78 (ambos bastante recentes).
O .cshrc da minha caixa Linux configura meu DISPLAY para apontar para o Xserver, 192.168.11.17:0.0
.
Quando eu inicio xeyes
ou emacs
, a janela aparece corretamente no meu PC, mas quando eu inicio o evince, ela aparece no laptop Linux por algum motivo. ldd /usr/bin/evince
mostra que é baseado em bibliotecas X11.
eu corristrace /usr/bin/evince Hello.pdf >& evince.strace
e vejo o seguinte texto:
connect(11, {sa_family=AF_INET, sin_port=htons(6000), sin_addr=inet_addr("192.168.11.17")}, 16) = 0
O número da porta do servidor X é de fato 6000 e o endereço está correto, então parece estar tentando se conectar corretamente!
Por que não?
Você precisa definir
GDK_BACKEND=x11
para forçá-lo a usar x11 em vez de Wayland.Wayland é o sucessor de fato do X11, mas usa uma arquitetura muito diferente. Você pode ler sobre isso aqui: Wayland, Capítulo 3. Arquitetura Wayland: X vs. Arquitetura Wayland . Crucialmente para nossos propósitos, Wayland não tem equivalente ao redirecionamento de rede do X11, e a
DISPLAY
variável não é significativa.O Wayland oferece suporte para aplicativos X11 que não entendem o Wayland nativamente (documentado em Wayland, Capítulo 5. Suporte a aplicativos X11 ). Mas muitos aplicativos - incluindo os modernos que usam o kit de ferramentas GTK - são criados com suporte nativo ao Wayland e geralmente com isso como a "primeira prioridade" quando o Wayland está disponível.
Portanto, quando esses aplicativos são iniciados e encontram Wayland, eles simplesmente são executados. Wayland não se importa com
DISPLAY
, e... aí está.Mas, se o kit de ferramentas do aplicativo também tiver suporte x11, você pode dizer a ele para usá-lo - é isso que
GDK_BACKEND=x11
está acontecendo com os aplicativos GTK. Para aplicativos Qt (como no KDE),QT_QPA_PLATFORM=xcb
é o equivalente.