'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.)