Перемещение окон между сеансами экрана GNU

11

Есть ли способ перемещать окна между различными сеансами экрана?

Например, допустим, у меня есть такой сценарий:

screen -S screen1
vim *.cpp
C-a d
screen -S screen2

Есть ли способ переместить мою оболочку, содержащую мою сессию vim, с screen1 на screen2?

Уильям Казарин
источник
1
Я так не думаю, но я не большой гуру экрана . интересный вопрос +1.
Квик-кихот
2
нашел обсуждение в списке рассылки на экране - lists.gnu.org/archive/html/screen-users/2008-04/msg00009.html - в настоящий момент это невозможно и, по-видимому, «кошмар» для реализации.
Уильям Казарин

Ответы:

4

Вы можете использовать injcode для перемещения процесса между ttys. Чтобы переместить процесс с PID, запущенным в окне целевого экрана:

$ injcode -m retty PID

Однако при закрытии родительского сеанса экрана перемещенные процессы также будут завершены.

Редактировать: я был неправ, это работает. Все описано здесь . Предположим, вы хотите переместить «htop», и работает только один экземпляр:

$ injcode -m retty $(pgrep htop)
$ pkill -SIGSTOP htop
$ pkill -SIGCONT htop

затем на предыдущем типе оболочки:

$ disown
askonecki
источник