같은 컴퓨터에서 두 개의 X 화면과 두 개의 비디오 카드에 3 개의 모니터를 설치 한 XFCE 4.12를 실행하고 있습니다. 모니터 중 두 대는 norgia twinview 기능을 사용하여 단일 X 화면을 형성합니다.이 기능은 Xorg 구성의 Device0에서 Screen0입니다. 세 번째 모니터는 Xorg 설정에서 Device1의 Screen1 인 두 번째 화면입니다. Screen0의 모니터간에 창을 잘 끌 수 있습니다. Screen0과 Screen1 사이에서 마우스를 자유롭게 움직일 수 있으며 클립 보드 데이터도 두 X 화면 사이에서 나옵니다.
이 X 화면은 모두 고유 한 뷰포트 세트가있는 독립 데스크탑 역할을합니다. 이 방법이 마음에 들며 한쪽을 “스틱”으로 자동으로 만드는 데 유용합니다. 그러나 한 X 화면에서 프로그램을 시작하면 드래그하여 다른 X 화면으로 이동할 수 없습니다. 다른 화면에서 해당 프로그램을 실행하려면 해당 화면에서 해당 프로그램을 다시 시작해야합니다.
내 질문은 일부 명령이나 X 윈도우의 다른 기능을 사용하여 프로그램을 다른 화면으로 실행하는 동안 프로그램을 이동할 수있는 방법이 있는지입니다. 감사.
업데이트 : 이 질문에 현상금을 시작하려고하지만 잠시 동안 이것에 대해 궁금합니다. 현상금을 받으려면 증거를위한 인용을 제공해야합니다.
답변
응용 프로그램이 표시되는 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 ]
- [1] https://ko.wikipedia.org/wiki/Xmove
- [2] https://wiki.archlinux.org/index.php/Multihead#Separate_screens
- [3] https://wiki.archlinux.org/index.php/Allow_a_program_to_continue_after_logoff
- [4] https://wiki.archlinux.org/index.php/Xpra
- [5] /superuser/238728/recover-an-application-in-sleeping-state-after-an-x-server-crash