Estoy ejecutando XFCE 4.12 con 3 monitores configurados en dos pantallas X y dos tarjetas de video en la misma computadora. Dos de los monitores forman una única pantalla X con la funcionalidad nvidia twinview, que es Screen0 en Device0 en la configuración Xorg. El tercer monitor es para la segunda pantalla, que es Screen1 en Device1 en la configuración de Xorg. Puedo arrastrar ventanas bien entre los monitores en Screen0. También puedo mover mi mouse libremente entre Screen0 y Screen1 e incluso los datos del portapapeles se transportan entre las dos pantallas X bien.
Ambas pantallas X actúan como escritorios independientes que tienen su propio conjunto de ventanas gráficas. Me gusta de esta manera y es útil para hacer que un lado se "pegue" automáticamente. Sin embargo, si inicio un programa en una pantalla X, no puedo moverlo a la otra pantalla X simplemente arrastrándolo. Si quiero ejecutar ese programa en la otra pantalla, tengo que reiniciarlo en esa pantalla.
Mi pregunta es si hay forma de mover el programa mientras se ejecuta a la otra pantalla usando algún comando u otra función de X windows. Gracias.
Actualización: voy a comenzar una recompensa por esta pregunta, pero me he estado preguntando sobre esto por un tiempo. Para ganar la recompensa, debe proporcionar algunas citas como prueba.
Respuestas:
No puede mover una aplicación X iniciada directamente con el servidor X en el que finalmente se muestra la aplicación, esto se debe a que un cliente X está "vinculado al servidor X (pantalla X) en el que se inició durante toda su vida útil" [ 1 ] Esto es Lo más probable es que tenga que ver con los metadatos que el servidor X tiene sobre las ventanas de un cliente que no se pueden transferir fácilmente entre los servidores X.
Lo mismo se aplica a las pantallas configuradas por separado (cuando no se usan extensiones como Xinerama o Twinview) para programas que no tienen soporte multipantalla escrito explícitamente: "Con esta configuración no es posible mover ventanas entre pantallas, aparte de algunos programas especiales como GIMP y Emacs que tienen soporte para pantallas múltiples ". [ 2 ]
En teoría, si una aplicación fue diseñada para hacer frente a un cambio de contexto del servidor X, se le podría proporcionar el nuevo número de pantalla / pantalla, guardar el estado de sus ventanas, conectarse al nuevo servidor / pantalla X y resucitar sus ventanas, pero pocos Las aplicaciones se diseñarían de esta manera y necesariamente implicarían una gran cantidad de repeticiones o la inclusión de una biblioteca que facilitaría esto de alguna manera.
La mejor opción para usted es probablemente usar otras aplicaciones que puedan actuar como proxy entre un cliente X y el servidor X que se muestra de manera similar a la pantalla GNU que se puede usar para las aplicaciones de consola y el terminal. Xmove y Xpra [ 3 y 4 ] parecen ser las implementaciones más utilizadas para hacer esto. La advertencia de usarlos es que las aplicaciones que inicias tienen que registrarse con Xmove o Xpra como su servidor X para poder cambiar de contexto entre diferentes servidores de visualización.
Finalmente, hay otra pregunta, en SuperUser, que es hacer una pregunta similar para un propósito ligeramente diferente (reconectarse a X después de X crash, en lugar de desconexión / reconexión deliberada del cliente) [ 5 ]
fuente