Gtk-WARNING **: não é possível abrir a exibição

0

Eu tenho o centos 6 minimal (headless) como Host e instalei o ubuntu 14.04 Desktop como convidado e usando o KVM.

Existe um aplicativo da Web implementado dentro do Guest e ele abre e fecha um aplicativo GTK (javafx) em segundo plano.

Estou a invocar esta aplicação web do meu anfitrião através do ssh como "curl link " Eu observei os logs no sistema operacional convidado e vi a mensagem de erro "Gtk-WARNING **: não é possível abrir a exibição"

Eu não entendi o motivo desse erro. 1) Este aplicativo GTK não está abrindo qualquer janela fisicamente no console ssh no host e, além disso, é em segundo plano. 2) Convidado é a versão desktop.

Alguém pode me ajudar a resolver isso. Não consigo ativar o XWindows devido a requisitos de segurança do cliente.

Obrigado,

Sridhar

    
por Sridhar 06.04.2015 / 11:07

1 resposta

1

'Background' não muda realmente como o programa funciona.

Quando programas somente texto são executados "em segundo plano", eles ainda precisam de algo para serem anexados a 'stdin' (teclado) e 'stdout' (terminal); eles simplesmente recebem / dev / null no lugar de um terminal real.

Da mesma forma, não importa como você executa um programa GTK, ele continua sendo um programa GTK - ele sempre tenta se conectar a um servidor X11 ou Wayland e abrir suas janelas lá.

Portanto, você precisa de algum tipo de servidor X11 no guest. Você não precisa de uma interface gráfica completa, apenas o servidor X; e você nem precisa do Xorg - o ideal é que seja algo dedicado ao seu programa, em vez de ser acessível via console.

Sua melhor opção seria usar Xdummy ou Xvfb (talvez usando xpra para tornar a configuração mais simples). Descubra como iniciar um deles em "segundo plano" e, em seguida, verifique se o seu webapp define as variáveis de ambiente apropriadas - DISPLAY= e XAUTHORITY= .

Mesmo que o convidado já tenha uma interface gráfica completa com o Xorg, você ainda precisa informar ao programa como acessá-lo. Não pode simplesmente abrir uma janela em algum lugar aleatoriamente (especialmente no SSH); ele precisa das mesmas variáveis de ambiente para encontrar o servidor Xorg do convidado. (Há um problema, porém, para a interface gráfica real eles serão diferentes após cada reinicialização, então você ainda deve usar o Xdummy ou o Xvfb para ter um endereço previsível.)

    
por 06.04.2015 / 14:30