Aunque existen varias preguntas sobre el tema (de las cuales la respuesta más útil es esta ) y varios hilos en otros foros, no puedo configurar de manera confiable mi xrandr
configuración en Debian 7 en VirtualBox.
Estoy tratando de usar xrandr
para controlar la configuración de mi pantalla (en lugar de permitir que mi entorno de escritorio los automatice) porque estoy usando el i3
administrador de ventanas , que no automatiza la configuración de pantalla ni usa la configuración de pantalla del entorno de escritorio Gnome.
Preparar:
No estoy seguro de cuán relevante es todo esto, especialmente el hardware, ya que no creo que Debian pueda acceder a mucha información sobre la configuración del monitor; Por lo que puedo decir, VirtualBox solo informa la existencia de pantallas virtuales como si fueran monitores de hardware.
Hardware
- Laptop Lenovo con gráficos nVidia (no se usa la GPU Intel integrada, AFAIK - hay una configuración de BIOS que usé para lograr esto)
- Windows 7
- 32 GB de RAM
- Uso del último controlador (creo) nVidia (340.84): esto podría ser importante, ya que habilité la aceleración 3D en VirtualBox (ver más abajo), que creo que permite que el SO huésped tenga acceso al hardware del host
- Seiki 4K TV (utilizado como monitor) a través de HDMI a través de la estación de acoplamiento (que convierte internamente DisplayPort a HDMI)
- El monitor Samsung SyncMaster 243T se volvió vertical
VirtualBox
- Usando VirtualBox 4.3.20
- Se instalan adiciones de invitados (misma versión)
- Recuento de monitores: 2 (asignado a Seiki y SyncMaster cuando está en modo de pantalla completa)
- Memoria máxima de video (128 MB) utilizada
- La aceleración 3D está habilitada
Configuraciones de invitado
- Debian 7 de 32 bits
gnome
ygdm3
están instalados- WM preferido es
i3
Comportamiento:
Cuando inicio i3
y consulta xrandr
, la configuración de pantalla por defecto siempre parecen ser idénticos entre VBOX0
y VBOX1
, los dos "monitores" que los informes de VirtualBox para xrandr
(al menos, así es como yo lo entiendo, yo podría estar perdiendo algo). Tenga en cuenta que, por lo que puedo decir, no hay una buena manera de saber qué VBOX # es el monitor que no tiene prueba y error.
Por lo general, esto incluye una resolución razonable (aunque ligeramente inferior a la nativa) para mi SyncMaster vertical, pero ninguna resolución 4K para el Seiki. La opción "cambiar el tamaño de la pantalla de invitado" en VirtualBox no parece afectar xrandr
.
He intentado varias modificaciones del script descritas en la respuesta vinculada anteriormente , pero en general parece que obtengo varios xrandr
errores. No he encontrado muchas correlaciones entre las diversas cosas que he probado y los errores que obtengo, pero aquí están las cosas principales que podrían ser importantes:
Ajustes de guiones
- (Por lo general) omitiendo los
VBoxService
pasos de reinicio (no parecen cambiar elxrandr
comportamiento) - Use la
xrandr --fb
opción antes que cualquier otroxrandr
comando; esto a veces da como resultado el error "pantalla especificada no lo suficientemente grande" que se enumera a continuación - Use 30 fps en lugar de 60 (4K a través de HDMI actual es 30 fps máximo, pero no creo que esto deba importar dentro de VirtualBox; en cualquier caso, creo que a veces lo hice funcionar y otras veces falló en ambos sentidos)
- Usar en
cvt
lugar degtf
(estos parecen comportarse esencialmente de la misma manera) - Sustituya el primer número dado por
gtf
(que generalmente es alrededor de 200 o 300) con un número menor, como100.00
(creo que esto funcionó una o dos veces en la línea de comando, pero generalmente no parece hacer la diferencia) - Aleatorice los nuevos nombres de modo usando
$RANDOM
(también he intentado varios otros medios de jugar con los nombres) --rmmode
Modos explícitamente antes de crearlos usando--newmode
(esto parece evitar el error de "fuente" que se enumera a continuación)- Use
--right-of
o--left-of
cuando configure--output
s (ya que las pantallas generalmente se reflejan por defecto)
Error de mensajes
xrandr: specified screen 5120x2160 not large enough for output VBOX0 (3840x2160+3840+0) X Error of failed request: BadValue (integer parameter out of range for operation)
Obtuve este ahora cuando volví a ejecutar el script después de que los monitores ya habían sido forzados a su resolución adecuada (usando la solución descrita en la siguiente sección). Esto me sorprendió, porquexrandr
informa lo siguiente:Screen 0: minimum 64 x 64, current 5120 x 2160, maximum 16384 x 16384
X Error of failed request: BadMatch (invalid parameter attributes)
Esto a veces ocurre cuando se intenta hacer una--newmode
. Probablemente sea la segunda razón más común para que el script falle. Yo creo que puede ser causada porxrandr
"recordar" el nombre del modo de un intento anterior de ponerla en marcha, pero el uso$RANDOM
no no aparecerá constantemente para resolver el problema, por lo que puede ser algún otro problema. (Sin embargo, supongo que es posible que incluso con$RANDOM
colisiones de nombres.) No he visto este error desde que comencé a usarlo--rmmode
, pero no he ejecutado el script suficientes veces desde que agregué ese comando para asegurarme de que haya una diferencia en el comportamiento.X Error of failed request: BadMatch (invalid parameter attributes)
Esto a veces ocurre cuando se intenta hacer un--addmode
. Probablemente sea la razón más común para que el script falle y me desconcierta. A veces, la ejecución manual (es decir, en un terminal) de la misma secuencia de comandos utilizada por el script parece ser una solución viable para este error, lo cual es extraño.
Solución alternativa de Gnome:
Descubrí que si inicio sesión en el escritorio de Gnome, luego realizo la función "Cambiar el tamaño de la pantalla de invitado" de VirtualBox, y luego cerrar sesión y volver a iniciarla i3
, xrandr
generalmente incluye las resoluciones correctas para Seiki y SyncMaster en su generación automática lista de modos, y la resolución 4K se establece como la resolución "preferida" para cada pantalla VBOX. Esto me permite simplemente usar xrandr --output [4K VBOX] --auto --left-of [SyncMaster VBOX]
, seguido de xrandr --output [SyncMaster VBOX] --mode [SyncMaster resolution]
(tenga en cuenta que la resolución de SyncMaster aún debe especificarse manualmente, ya que xrandr
informa la misma resolución preferida para ambos VBOX#
sin tener en cuenta la verdad o la cordura).
Esta solución alternativa, una vez realizada, aparentemente persiste durante los apagados y reinicios (es decir, los modos deseados todavía están presentes en xrandr
la lista de modos, aunque todavía necesito ejecutar los dos xrandr
comandos después de comenzar una i3
sesión), pero no siempre persiste cuando simplemente cerrar sesión y comenzar una nueva i3
sesión. Tenga en cuenta que la gdm3
pantalla de inicio de sesión nunca tiene la resolución correcta (por lo que he visto). No tengo más comentarios sobre lo extraño que está sucediendo aquí.
EDITAR: Este enfoque no parece ser programable, y el comportamiento en realidad no parece ser consistente.
Otras notas:
- No tengo un
xconf
archivo (o similar) en mietc/X11
directorio. - Arreglar las pantallas es un problema bastante común, porque cada vez que apago uno de mis monitores, VirtualBox mata uno de los monitores virtuales de pantalla completa. (Urgh.)
Preguntas:
- ¿Hay alguna manera de distinguir mediante programación entre las capacidades reales de hardware (es decir, resoluciones nativas) de diferentes monitores desde VirtualBox?
- ¿Por qué veo estos diversos errores? ¿Qué está pasando
xrandr
, etc.? - ¿Hay alguna forma de lograr de manera confiable la resolución correcta de pantalla completa sin requerir que inicie una
gnome
sesión antes de mii3
sesión?
Posiblemente problemas relacionados
- El puntero de mi mouse no se alinea correctamente de manera confiable con los clics que parecen detectarse; los clics generalmente ocurren debajo y a la derecha del puntero. Una vez que tengo las pantallas configuradas correctamente, este problema generalmente desaparece, aunque actualmente las pantallas tienen las resoluciones correctas pero el puntero todavía está ligeramente apagado.
- Cuando logro obtener las resoluciones correctas, la pantalla parpadea ocasionalmente. Esto es molesto pero habitable. ¿Alguna idea de qué lo causa o si se puede solucionar?
xrandr
errores extraños .
.xinitrc
y usas startx
? Utilizo xmonad (que, según tengo entendido, es similar a i3?) Que inicio usando startx
. Mi xrandr
secuencia de comandos se realiza .xinit
justo antes de que se inicie mi administrador de ventanas. He tenido excelentes resultados de esa manera. X está listo para partir, y nada más se ha lanzado para interferir.
gdm3
y i3
seleccioné el entorno de escritorio predeterminado para mi cuenta.
xrandr --query
(a) cuando detecta la configuración de forma incorrecta y (b) después de que todo funcione correctamente? O al menos uno de todo funciona correctamente.