¿Cómo realizar la aplicación en pantalla completa en ambos monitores de pantalla de doble cabezal?

¿Cómo realizar la aplicación en pantalla completa en ambos monitores de pantalla de doble cabezal?

Tengo dos máquinas Ubuntu 10.4 (y Ubuntu continúa ocultando más y más configuraciones de xorg.conf de modo que ya no sé dónde encontrarlas). Uno es una computadora portátil con dos cabezales: DP1 es la pantalla interna y VGA1 es un monitor externo; ambos funcionan a 1600x900. La otra máquina es una computadora de escritorio que ejecuta VGA1 y HDMI1 (que en realidad es un puerto de pantalla con un adaptador DVI) a 1600x900. Entonces, en ambos casos mi escritorio es 3200x900. Ejecuto un servidor VNC en la computadora portátil y me conecto a él (a través del túnel SSH) desde el escritorio; cuando presiono la tecla de acceso rápido de pantalla completa, obtengo una vista de 1600x900 de la máquina remota en un monitor y la mitad de mi escritorio local en el otro monitor: la "pantalla completa" solo se expande para llenar un monitor local.

Normalmente, esto es exactamente lo que desea cuando visualiza en pantalla completa un navegador web, un cliente de correo electrónico u otra aplicación. Estoy seguro de que hay algo de magia X para dejar en claro lo que realmente implica una pantalla completa, y la aplicación cliente vnc simplemente acepta obedientemente lo que se le dice. Si bien me gustaría mantener el comportamiento normal de pantalla completa para aplicaciones normales, cuando estoy realizando VNC en otra máquina de 3200x900, realmente me gustaría que la pantalla completa se extendiera a ambas pantallas locales. Cambiar el tamaño de la ventana para que esté "cerrada" no es suficiente ya que todavía tengo paneles locales en la parte superior e inferior de una pantalla (aunque puedo configurarlos para que se oculten automáticamente), además del borde de la ventana de la aplicación cliente VNC (ya que no No parece respetar -notitle).

¿Existe alguna buena manera de hacer que X mienta a una sola aplicación sobre el tamaño de "pantalla completa"? ¿Puedo hacer que mienta en todas las aplicaciones? xrandr --noprimaryparece no tener ningún efecto.

Respuesta1

Investigué un poco. La versión moderna de la magia X11 que planteé es en realidad la magia del administrador de ventanas,_NET_WM_STATE_FULLSCREEN. De hecho, mi cliente VNC está utilizando esa solicitud y se está expandiendo a un solo monitor. Parece que primero debería configurarse_NET_WM_FULLSCREEN_MONITORSpara describir qué monitores usar como bordes superior/inferior/izquierdo/derecho, pero no es así. Sin embargo, saqué la fuente de dpkg y busqué para hackearla. Incluso con _NET_WM_FULLSCREEN_MONITORS no pude obtener el comportamiento correcto. El cliente VNC sabe que quiere llegar a 3200x900 e intenta varias veces (30) cambiar el tamaño a eso (estableciendo los anchos y alturas base y máximo en XA_WM_NORMAL_HINTS y ​​luego usando XResizeWindow()) en la ventana superior, pero siempre se ignora. ¿Quizás compiz se está portando mal?

Pero el cliente VNC también tiene código para tratar con X directamente en lugar de pasar por un administrador de ventanas. Cuando corto el código de detección de WM, modifica la ventana raíz de manera más directa (XtNoverrideRedirect, XReparentWindow en la parte superior, XMapRaised, etc.) y eso funciona de maravilla (siempre que también desactive el código de detección en la función de pantalla completa). ). Podría decirse que funciona aún mejor: alt-tab y otras teclas de administración de ventanas ahora pasan a la máquina remota hasta que desactivo la pantalla completa de la ventana del cliente VNC.

Por lo tanto, puede ser complicado y tener algunas trampas*, pero al menos por ahora he logrado que se comporte aceptablemente en mi mente.

*: la eliminación de pantalla completa no vuelve a dibujar correctamente la ventana raíz ni otras ventanas que se habían tapado. Pero cambiar a una ventana gráfica diferente y luego regresar obliga a volver a dibujar, lo cual es una solución alternativa aceptable.

Respuesta2

Otra posibilidad a explorar podría ser la capacidad de algunos programas de ser forzados a un cierto tamaño/ubicación cuando se inician.

Defino el comando para ejecutar Opera a través de un ícono E17 como este:

/usr/local/bin/opera-11.01 -geometría 1600x3200-0+100 %U

Eso establece el tamaño y la ubicación de la ventana de Opera.

Y en Xemacs no puedo controlar la ubicación, pero puedo especificar el tamaño de la ventana para ejecutarla al inicio en mi init.el:

(establecer-tamaño-marco (marco-ventana) 140 80)

Estas no son una solución exacta para su situación, pero posiblemente pueda considerar configurar cualquier software que esté ejecutando en un cierto tamaño/ubicación equivalente a una pantalla completa (doble). No todos tendrán ese tipo de opción, pero tal vez valga la pena considerarla.

información relacionada