Не совсем решение буквального "захвата окон уже запущенных программ", но все же…
Используйте xpra
.
На X11 он также известен как экран для X11: он позволяет запускать программы, обычно на удаленном хосте, направлять их отображение на локальный компьютер, а затем отключаться от этих программ и повторно подключаться с того же или другого компьютера без потерять любое состояние.
[...]
Xpra также позволяет пересылать звук, буфер обмена и услуги печати.
Сессии могут быть доступны через SSH или защищены паролем через обычные сокеты TCP с SSL или без него.
Он должен быть установлен, настроен и запущен заранее, точно так же, как screen
или tmux
для консольных приложений. Вы должны сначала запустить свою программу через xpra
, а затем вы можете использовать магию (пере) соединения с разных машин.
xpra
доступна как пакет xpra
по крайней мере в Debian и Ubuntu. Я использовал это несколько раз. Производительность была лучше, чем при простой пересылке X.
Примеры здесь. Следующее от man xpra
на моем Kubuntu:
xpra start :7
Запустите сервер xpra
используя номер дисплея :7
.
DISPLAY=:7 firefox
Запустите firefox
внутри сервера xpra
. Запустите это на хосте, где xpra
была запущена, или в терминале, перенаправленном xpra
. Окно не появится, пока вы не подключите с помощью xpra attach
.
Вы запускаете приведенные выше примеры на своем A. Затем вы можете прикрепить непосредственно из A:
xpra attach :7
Подключите к серверу xpra
который использует локальный номер дисплея :7
. Любые приложения, запущенные на этом сервере, появятся на вашем экране.
или из вашего B:
xpra attach ssh:foo@frodo:7
Используйте ssh
для подключения к серверу xpra
, который работает на машину frodo
как пользователь foo
и с помощью :7
Любые приложения, запущенные на этом сервере, появятся на вашем локальном экране.