Xpra (como mencionado aqui ) faz o que eu quero. Ele permite a execução de aplicativos X arbitrários, que podem ser encaminhados para vários clientes, no mesmo computador ou em outra máquina. Ele também suporta a execução de aplicativos OpenGL e permite que seus aplicativos continuem sendo executados mesmo depois da última desconexão do cliente, o que possibilita a reconexão posterior.
xpra
vem em duas partes: um cliente e um servidor. Para inicializar o servidor, execute o seguinte na máquina remota:
$ xpra start :100
Isso inicia xpra
em um novo display X. (Há uma solução alternativa para usar com um proxy. )
Para ter um aplicativo controlado por xpra
, execute-o na mesma tela que o servidor xpra
, assim:
$ export DISPLAY=:100
$ firefox&
$ blender&
...
Isso tudo pode ser feito através de uma conexão ssh (com ou sem o X11-Forwarding) sem problemas.
Para inicializar um cliente, siga um destes procedimentos:
$ ssh -X user@remotehost
<gain remote connection>
$ xpra attach :100
ou
$ xpra attach ssh:user@remotehost:100
Observe que o último requer que o cliente xpra
esteja instalado em sua máquina local; o primeiro não.
O cliente xpra
colocará um ícone na barra / painel de tarefas do seu gerenciador de janelas, permitindo que você desconecte o cliente. (Ou, você pode simplesmente matá-lo, desde que tenha cuidado para não matar o servidor.) Você pode então reconectar mais tarde, contanto que o servidor xpra
ainda esteja em execução. Se você tiver um único servidor xpra
em execução no host, você também pode simplesmente omitir o número de exibição e xpra attach
descobrirá isso.
Um recurso muito interessante de xpra
é que ele permite que você inicie um servidor em uma exibição preexistente. Isso permite recuperar uma sessão se o servidor xpra
travar (contanto que o servidor X nesse monitor ainda esteja em execução). Para fazer isso, execute
$ xpra start --use-display :100
Advertências:
-
xpra
é executado como gerenciador de janelas. Embora funcione muito bem com a incorporação em outros gerenciadores de janelas, ele não funciona tão bem com os aplicativos X: ele não permite, por exemplo,rxvt-unicode
para remover sua barra de título; Além disso, ele não diz ao Windows quanto espaço ele tem para trabalhar na tela, por exemplo, caixas suspensas e menus ficam fora da tela. Eu acho que o último problema é uma questão de consertar minha configuração, no entanto. -
As teclas são repetidas. Freqüentemente. Isso pode ser resolvido usando
xpra attach --no-keyboard-sync
, mas a página man avisa que isso não funciona bem com certos jogos. Estou mantendo meus dedos cruzados que não me vejo desejando usar um desses jogos.
Por estas razões, Xephyr
pode muito bem ser uma solução melhor (uma vez que suporta GLX), porque ele é executado como um servidor X, não como gerenciador de janelas. Eu não investiguei se ele suporta a retomada de sessões anteriormente desconectadas, no entanto.