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.