Puis-je joindre un process d'interface graphique à un «server X de rlocation»?

J'ai été dans une situation où mon bureau s'est écrasé et ne répond plus. (Dans mon cas, c'était le Cinnamon DE, et je n'ai pas encore essayé la cinnamon --replace la command line, BTW)

J'utilisais une application graphique de type gestionnaire de téléchargement pour download un gros file, et il était clair que le process fonctionnait encore très bien même si l'interface graphique était borked. Si je tuais XI tuerait tous les process fils et serait obligé de redémarrer mon téléchargement etc.

Est-il possible de créer une session X de rlocation, de détacher les process existants de l'interface graphique et de les attacher à la session "dummy", de redémarrer la session X réelle et enfin de réattacher le process GUI à la nouvelle session X saine? Si c'est le cas, comment?

En théorie, un programme qui perd sa connection au server X pourrait simplement essayer de se reconnecter jusqu'à ce qu'un nouveau server X soit disponible. En fait, j'ai écrit des programmes qui le font. Cela nécessite un code supplémentaire, car vous devez réexécuter votre routine d'initialisation de l'interface graphique pour recréer vos ressources (windows, bitmaps, fonts, etc.) sur le nouveau server X et actualiser toutes les data structures internes de votre programme pour utiliser ces nouvelles Ressources.

Malheureusement, presque aucun programme X que j'ai jamais vu est prêt à le faire. Ils viennent de s'écraser car tout le reconnect / re-setup est trop difficile. Et plus sortingstement, ils ne peuvent pas être trompés dans la commutation des servers X car ce code pour ré-initier leurs ressources charts n'existe pas dans ce programme. Donc, pour la plupart des programmes, ils sont condamnés s'ils perdent la connection X.

Comme XTaran l'a mentionné, il existe un programme soigné de relais / shim / proxy appelé «xpra» qui agit comme un server X pour les clients, puis peut réinitialiser leurs ressources dans n'importe quel autre server X, ce qui vous permet de vous déplacer tous les programmes entre les servers X comme vous le vouliez. Quand je l'ai utilisé il y a 10 ans, il y avait beaucoup de bugs. Je suis sûr qu'ils ont fait des progrès depuis, mais vous aurez besoin de savoir si c'est assez stable pour une utilisation quotidienne de bureau.

x0vncserver (dans Debian et Ubuntu dans le packageage vnc4server ) peut aider à refind l'access à une session X x0vncserver display=:0 ou au less non accessible, par exemple avec x0vncserver display=:0 .

Et puis il y a xpra qui permet à l'user de voir les applications X à distance sur leur machine locale et de se déconnecter et de se reconnecter de la machine distante sans perdre l'état des applications en cours d'exécution selon la description du package xpra de Debian.

Peut-être qu'un des deux outils aide (si l'aide n'est pas trop tard).