Posso anexar um processo GUI a um “servidor X substituto”?

4

Eu estou em uma situação em que minha área de trabalho falhou e não responde. (No meu caso foi o Cinnamon DE, e eu ainda tenho que tentar o cinnamon --replace da linha de comando, BTW)

Eu estava usando um aplicativo GUI do tipo gerenciador de download para fazer o download de um arquivo grande e ficou claro que o processo ainda estava sendo executado com bastante alegria, embora a GUI estivesse funcionando. Se eu matei X eu mataria todos os processos filhos e seria forçado a reiniciar meu download, etc.

É possível criar uma sessão X substituta, desanexar processos GUI existentes e conectá-los à sessão "fictícia", reiniciar a sessão X real e, finalmente, voltar a ligar o processo da GUI à nova sessão X saudável? Se sim, como?

    
por Geeb 24.11.2014 / 16:37

2 respostas

2

Em teoria, um programa que perde sua conexão com o servidor X pode apenas tentar reconectar até que um novo servidor X esteja disponível. Na verdade, eu escrevi programas que fazem isso. Ele requer código extra, porque você precisa executar novamente a rotina de inicialização da GUI para recriar seus recursos (janelas, bitmaps, fontes, etc) no novo servidor X e atualizar todas as estruturas de dados internas do seu programa para usar essas novas recursos.

Infelizmente, quase nenhum programa X que eu já vi está disposto a fazer isso. Eles simplesmente caem porque toda a reconexão / reinstalação é muito problemática. E, mais triste, eles não podem ser induzidos a trocar de servidores X porque o código para reinicializar seus recursos gráficos não existe nesse programa. Então, para a maioria dos programas, eles estão condenados se perderem a conexão X.

Como o XTaran mencionou, há um programa relay / shim / proxy limpo chamado '' xpra '' que atua como um servidor X para os clientes, e então pode fazer a reinicialização de seus recursos em qualquer outro servidor X, permitindo você mover todos os programas entre os servidores X como você queria. Quando eu usei 10 anos atrás, tinha muitos bugs. Tenho certeza de que eles fizeram progresso desde então, mas você precisará descobrir se está estável o suficiente para o uso diário da área de trabalho.

    
por 18.12.2014 / 22:28
1

x0vncserver (no Debian e no Ubuntu no pacote vnc4server ) pode ajudar a recuperar o acesso a uma sessão X travada ou pelo menos não mais acessível, por exemplo com x0vncserver display=:0 .

E há xpra que permite ao usuário visualizar aplicativos X remotos em sua máquina local e desconectar e reconectar máquina remota sem perder o estado dos aplicativos em execução de acordo com a descrição do pacote xpra do Debian.

Talvez uma das duas ferramentas ajude (se a ajuda não for tarde demais).

    
por 18.12.2014 / 20:17