같은 호스트에서 한 X 화면에서 다른 X 화면으로 창을 이동할 수 있습니까?


16

같은 컴퓨터에서 두 개의 X 화면과 두 개의 비디오 카드에 3 개의 모니터를 설치 한 XFCE 4.12를 실행하고 있습니다. 모니터 중 두 대는 norgia twinview 기능을 사용하여 단일 X 화면을 형성합니다.이 기능은 Xorg 구성의 Device0에서 Screen0입니다. 세 번째 모니터는 Xorg 설정에서 Device1의 Screen1 인 두 번째 화면입니다. Screen0의 모니터간에 창을 잘 끌 수 있습니다. Screen0과 Screen1 사이에서 마우스를 자유롭게 움직일 수 있으며 클립 보드 데이터도 두 X 화면 사이에서 나옵니다.

이 X 화면은 모두 고유 한 뷰포트 세트가있는 독립 데스크탑 역할을합니다. 이 방법이 마음에 들며 한쪽을 "스틱"으로 자동으로 만드는 데 유용합니다. 그러나 한 X 화면에서 프로그램을 시작하면 드래그하여 다른 X 화면으로 이동할 수 없습니다. 다른 화면에서 해당 프로그램을 실행하려면 해당 화면에서 해당 프로그램을 다시 시작해야합니다.

내 질문은 일부 명령이나 X 윈도우의 다른 기능을 사용하여 프로그램을 다른 화면으로 실행하는 동안 프로그램을 이동할 수있는 방법이 있는지입니다. 감사.

업데이트 : 이 질문에 현상금을 시작하려고하지만 잠시 동안 이것에 대해 궁금합니다. 현상금을 받으려면 증거를위한 인용을 제공해야합니다.


1
xpra 는 여러분이 요구하는 것과 매우 유사한 것을 제공합니다.
vlp

인터넷 검색은 xmove를 공개합니다

나는 그 행동을 얻기 위해 CentOS 5 또는 6에서 무언가를 변경해야한다는 것을 기억하지 못합니다. 어떤 버전의 배포판을 사용하고 있습니까?
Nils


@NathanFellman 가능하지만 내 경우에는 디스플레이 간 이동에 대해 이야기하지 않는다고 생각합니다. 내 프로세스 목록에 따르면 X 프로세스 인스턴스를 한 번만 실행 중입니다 : : 0. : 1 또는 : 2 등은 없습니다. 어쩌면 이것은 XFCE가 구성에서 여러 화면이나 무언가를 관리하는 방법에 문제 일 수 있습니다. 지금까지 언급 한 프로그램과 관련하여 아직 유지 관리되거나 사용 가능한 것으로 보이지 않습니다. xmove는 거의 20 살이며 XiMove의 사본을 찾을 수 없습니다. xpra도 내가하려는 일에 대한 잘못된 종류의 프로그램처럼 보입니다.
deltaray

답변:


13

응용 프로그램이 표시되는 X 서버에서 직접 시작한 X 응용 프로그램을 이동할 수 없습니다. 이는 X 클라이언트가 "일생 동안 시작된 X 서버 (X 디스플레이)에 연결되어 있기 때문"입니다. [ 1 ] X 서버간에 쉽게 전송할 수없는 클라이언트 창에 대해 X 서버가 보유한 메타 데이터와 관련이있을 가능성이 높습니다.

명시 적으로 작성된 다중 화면 지원이없는 프로그램에 대해 별도로 구성된 화면 (Xinerama 또는 Twinview와 같은 확장명을 사용하지 않는 경우)도 마찬가지입니다. "이 구성을 사용하면 화면간에 창을 이동할 수 없습니다. 멀티 스크린을 지원하는 김프 및 이맥스와 같은 몇 가지 특수 프로그램. "[ 2 ]

이론적으로 응용 프로그램이 X 서버 컨텍스트 스위치를 처리하도록 설계된 경우 새 디스플레이 / 화면 번호가 제공되고, 창 상태를 저장하고, 새 X 서버 / 화면에 연결하고 창을 부활시킬 수 있지만 응용 프로그램은 이러한 방식으로 설계되며 많은 상용구 또는이 방법을 용이하게하는 라이브러리의 포함과 관련이 있어야합니다.

가장 좋은 방법은 콘솔 응용 프로그램과 터미널에 GNU 화면을 사용할 수있는 것과 비슷한 방식으로 X 클라이언트와 표시 X 서버 간의 프록시 역할을 할 수있는 다른 응용 프로그램을 사용하는 것입니다. Xmove와 Xpra [ 3 & 4 ]가 가장 널리 사용되는 구현 인 것 같습니다. 이것들을 사용하는 것의 주의점은 시작하는 응용 프로그램이 Xdisplay 또는 Xpra를 X 서버로 등록하여 다른 디스플레이 서버간에 컨텍스트 전환을 수행해야한다는 것입니다.

마지막으로, 슈퍼 유저에 대해 약간 다른 목적으로 비슷한 질문을하는 또 다른 질문이 있습니다 (클라이언트의 의도적 연결 해제 / 재 연결이 아닌 X 충돌 후 X에 다시 연결) [ 5 ]


2
답변 해 주셔서 감사합니다. 그러나 이것은 문제가 아닙니다. X 서버가 아닌 동일한 서버에서 X 화면 간을 이동하는 것에 대해 이야기하고 있습니다.
deltaray

5
나는 그 미묘한 차이를 놓쳤다. 사과한다. 불행히도 여러 화면을 하나로 병합하는 Xinerama와 같은 확장 기능이 없으면 응용 프로그램이 동일한 서버의 별도 화면을 별도의 논리 서버로 취급하고 개별적으로 연결을 관리하는 것 같습니다. 마지막 편집에서 추가 한 링크 [2]를 참조하십시오. X 서버간에 응용 프로그램을 이동하는 해결 방법도 화면 간 이동을 유지해야합니다. 예를 들어 Xpra를 연결할 때 DISPLAY 환경 변수의 화면 부분 만 지정하면됩니다.
Benjamin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.