Чи можливо перемістити вікно з одного екрана X на інший на тому ж хості?


16

У мене працює XFCE 4.12 з 3 моніторами на двох екранах X та двома відеокартами на одному комп’ютері. Два монітори утворюють один екран X, використовуючи функцію nvidia twinview, яка є Screen0 на Device0 у конфігурації Xorg. Третій монітор призначений для другого екрану, який є Screen1 на Device1 у конфігурації Xorg. Я можу добре перетягувати вікна між моніторами на Screen0. Я також можу вільно переміщувати мишу між екраном0 та екраном1, і навіть дані буфера обміну переносяться між двома екранами X добре.

Обидва ці екрани X діють як незалежні настільні комп'ютери, які мають власний набір вікон перегляду. Мені це подобається, і це корисно для автоматичного виготовлення однієї сторони. Однак якщо я запускаю програму на одному екрані X, я не можу перемістити її на інший екран X, просто перетягнувши його. Якщо я хочу запустити цю програму на іншому екрані, я повинен її перезапустити на цьому екрані.

Моє запитання - чи є спосіб перенести програму під час її запуску на інший екран, використовуючи якусь команду чи іншу функцію X windows. Спасибі.

Оновлення: я збираюся розпочати щедрість з цього питання, але я про це цікавився деякий час. Щоб заробити винагороду, ви повинні надати деякі довідки для підтвердження.


1
xpra пропонує щось подібне до того, про що ви питаєте ...
vlp

Google також відкриває xmove

Я не пам’ятаю, щоб мені довелося щось змінити на CentOS 5 або 6, щоб отримати таку поведінку. Який дистрибутив у якій версії ви тут використовуєте?
Нілс


@NathanFellman Можливо, але я навіть не думаю, що в моєму випадку я говорю про переміщення між дисплеями. Відповідно до мого списку процесів, я запускаю лише один раз екземпляр процесу X, який становить: 0. Немає: 1 або: 2 і т.д. Можливо, це лише проблема в тому, як XFCE управляє декількома екранами або щось у моїй конфігурації. Що стосується згаданих програм, то жодна з них, здається, не підтримується та не доступна. xmove майже 20 років, і я не можу знайти копію XiMove. xpra також здається невірним видом програми для того, що я намагаюся зробити.
дельтарай

Відповіді:


13

Ви не можете переміщувати програму X, запущену безпосередньо з сервера X, на якій програма в кінцевому підсумку відображається, це пов’язано з тим, що клієнт X "прив’язаний до сервера X (дисплей X), він був запущений протягом усього життя" [ 1 ] Це найімовірніше, це стосується метаданих, які X-сервер містить близько клієнтських вікон, які неможливо легко перенести між X-серверами.

Те ж саме стосується окремо налаштованих екранів (коли не використовуються розширення, такі як Xinerama або Twinview) для програм, які не мають багатоекранної підтримки, чітко записаної - "За допомогою цієї конфігурації неможливо переміщувати вікна між екранами, крім кілька спеціальних програм, таких як GIMP та Emacs, які мають підтримку на багатьох екранах ". [ 2 ]

Теоретично, якщо програма розроблялася для того, щоб справлятися з контекстним перемикачем сервера X, вона могла б надати новий номер дисплея / екрана, зберегти стан його windows, підключитися до нового X-сервера / екрану та відновити його windows, але мало програми розроблялися б таким чином і обов'язково включали б чимало котлів, або включення бібліотеки, яка б якось полегшила це.

Найкращий варіант для вас, ймовірно, використовувати інші додатки, які можуть діяти як проксі-сервер між клієнтом X та відображуючим X-сервером аналогічно тому, що екран GNU може використовуватися для консольних додатків та терміналу. Xmove та Xpra [ 3 і 4 ] здаються найбільш широко використовуваними реалізаціями для цього. Застереження їх використання полягає в тому, що програми, які ви запускаєте, повинні реєструвати Xmove або Xpra як їх X-сервер, щоб мати можливість перемикатися в контексті між різними серверами відображення.

Нарешті, є ще одне питання щодо SuperUser, яке задає аналогічне запитання з дещо іншою метою (підключіться до X після краху X, а не навмисного відключення / підключення клієнта) [ 5 ]


2
Дякую за спробу відповісти, але це просто не в чому проблема. Я говорю про переміщення між екранами X на одному сервері, а не між X-серверами.
дельтарай

5
Я спочатку пропустив цей нюанс, вибачення. На жаль, без розширення, такого як Xinerama, що об'єднує кілька екранів в один, схоже, програми розглядають окремі екрани на одному сервері як окремі логічні сервери та керують з'єднаннями з ними окремо - див. Посилання [2], яке я додав в останньому редагуванні. Приблизно для переміщення програми між серверами X слід також передбачати переміщення між екранами, вам потрібно буде лише вказати екранну частину змінної середовища DISPLAY, коли (наприклад) приєднати Xpra.
Бенджамін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.