Non è possibile automatizzare in modo affidabile le impostazioni di xrandr in Debian 7 su VirtualBox


23

Sebbene ci siano molte domande esistenti sull'argomento (da cui la risposta più utile è questa ) e vari thread su altri forum, non posso configurare in modo affidabile le mie xrandrimpostazioni in Debian 7 su VirtualBox.

Sto cercando di utilizzare xrandrper controllare le mie impostazioni di visualizzazione (piuttosto che consentire al mio ambiente desktop di automatizzarle) perché sto usando il i3gestore delle finestre , che non automatizza le impostazioni di visualizzazione o utilizza le impostazioni di visualizzazione dell'ambiente desktop di Gnome.

Impostare:

Non sono sicuro di quanto sia rilevante tutto ciò, specialmente le cose hardware, dal momento che non penso che Debian possa effettivamente accedere a molte informazioni sull'impostazione del monitor; per quanto ne so, VirtualBox riporta solo l'esistenza di schermi virtuali come se fossero monitor hardware.

Hardware

  • Computer portatile Lenovo con grafica nVidia (la GPU Intel integrata non viene utilizzata, AFAIK - per eseguire questa operazione è stata utilizzata un'impostazione BIOS)
    • Windows 7
    • 32 GB di RAM
    • Usando il driver nVidia più recente (credo) (340.84), questo potrebbe importare, poiché ho abilitato l'accelerazione 3D in VirtualBox (vedi sotto), che penso che consenta al SO guest di avere accesso all'hardware host
  • TV Seiki 4K (utilizzata come monitor) tramite HDMI tramite docking station (che converte internamente DisplayPort in HDMI)
  • Il monitor Samsung SyncMaster 243T è diventato verticale

VirtualBox

  • Utilizzo di VirtualBox 4.3.20
  • Le aggiunte degli ospiti (stessa versione) sono installate
  • Conteggio monitor: 2 (assegnato a Seiki e SyncMaster in modalità schermo intero)
  • Memoria video massima (128 MB) utilizzata
  • L'accelerazione 3D è abilitata

Impostazioni dell'ospite

  • Debian 7 a 32 bit
  • gnomee gdm3sono installati
  • WM preferito è i3

Comportamento:

Quando avvio i3e eseguo una query xrandr, le impostazioni di visualizzazione predefinite sembrano sempre identiche tra VBOX0e VBOX1, i due "monitor" a cui VirtualBox riporta xrandr(almeno, è così che lo capisco; potrei mancare qualcosa). Si noti che, per quanto posso dire, non c'è un buon modo per dire quale VBOX # è quale monitor a corto di tentativi ed errori.

Di solito questo include una risoluzione ragionevole (anche se leggermente inferiore a quella nativa) per il mio SyncMaster verticale, ma nessuna risoluzione 4K per Seiki. L'opzione "ridimensionamento automatico della visualizzazione del guest" in VirtualBox non sembra influire xrandr.

Ho provato varie modifiche dello script descritto nella risposta sopra collegata , ma in generale mi sembra di riscontrare vari xrandrerrori. Non ho trovato molte correlazioni tra le varie cose che ho provato e gli errori che ricevo, ma qui ci sono le cose principali che potrebbero essere importanti:

Modifiche allo script

  • (Di solito) saltando i VBoxServicepassaggi di riavvio (non sembrano modificare il xrandrcomportamento)
  • Utilizzare l' xrandr --fbopzione prima di qualsiasi altro xrandrcomando; questo a volte provoca l'errore "schermo specificato non abbastanza grande" elencato di seguito
  • Usa 30 fps invece di 60 (4K tramite HDMI corrente è massimo di 30 fps, ma non penso che questo dovrebbe importare in VirtualBox; in ogni caso penso di averlo fatto funzionare a volte e a volte abbia fallito in entrambi i modi)
  • Usa cvtinvece di gtf(questi sembrano comportarsi essenzialmente allo stesso modo)
  • Sostituisci il primo numero indicato da gtf(che di solito è circa 200 o 300) con un numero più piccolo, come 100.00(penso che questo abbia funzionato una o due volte sulla riga di comando, ma in genere non sembra fare la differenza)
  • Randomizza i nuovi nomi delle modalità usando $RANDOM(ho anche provato vari altri modi di armeggiare con i nomi)
  • --rmmodeModalità esplicite prima di crearle utilizzando --newmode(questo sembra impedire l'errore "font" elencato di seguito)
  • Utilizzare --right-ofo --left-ofquando si imposta --outputs (poiché le schermate di solito sono speculari per impostazione predefinita)

Messaggio di errore

  • 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) L'ho preso subito dopo aver rieseguito lo script dopo che i monitor erano già stati forzati alla loro corretta risoluzione (usando la soluzione descritta nella sezione successiva). Questo mi ha sorpreso, perché xrandrriporta quanto segue: Screen 0: minimum 64 x 64, current 5120 x 2160, maximum 16384 x 16384
  • X Error of failed request: BadMatch (invalid parameter attributes) Questo a volte si verifica quando si tenta di eseguire un --newmode. È probabilmente il secondo motivo più comune per cui lo script non riesce. Io penso che potrebbe essere causato da xrandr"ricordare" il nome della modalità da un precedente tentativo di configurarlo, ma utilizzando $RANDOMnon non appare per risolvere il problema in modo coerente, quindi potrebbe essere qualche altro problema. (Suppongo sia possibile che anche con $RANDOMci siano collisioni di nomi, però.) Non vedo questo errore da quando ho iniziato a usare --rmmode, ma non ho eseguito lo script abbastanza volte da quando ho aggiunto quel comando per essere sicuro che abbia fatto la differenza il comportamento.
  • X Error of failed request: BadMatch (invalid parameter attributes) Questo a volte si verifica quando si tenta di fare un --addmode. È probabilmente il motivo più comune per cui la sceneggiatura fallisce e mi confonde. A volte l'esecuzione manuale (cioè in un terminale) dell'esecuzione della stessa sequenza di comandi utilizzata dallo script sembra essere una soluzione alternativa per questo errore, che è bizzarro.

Soluzione di Gnome:

Ho scoperto che se eseguo l'accesso al desktop di Gnome, quindi eseguo la funzione "Ridimensionamento automatico del guest display" di VirtualBox, quindi disconnettersi e riconnettersi con i3, in xrandrgenere include le risoluzioni corrette sia per Seiki che per SyncMaster nella sua generazione generata automaticamente elenco di modalità e la risoluzione 4K è impostata come risoluzione "preferita" per ciascuna schermata VBOX. Questo mi permette di usare semplicemente xrandr --output [4K VBOX] --auto --left-of [SyncMaster VBOX], seguito da xrandr --output [SyncMaster VBOX] --mode [SyncMaster resolution](nota che la risoluzione SyncMaster deve ancora essere specificata manualmente, poiché xrandrriporta la stessa risoluzione preferita per entrambi VBOX# senza alcun riguardo per verità o sanità mentale).

Questa soluzione, una volta che svolge, apparentemente persiste attraverso arresti e riavvii (cioè, i modi desiderati sono ancora presenti nella xrandrlista modalità 's, anche se ho ancora bisogno di eseguire i due xrandrcomandi dopo l'avvio di una i3sessione di), ma non non sempre mantenute quando semplicemente disconnettersi e iniziare una nuova i3sessione. Si noti che la gdm3schermata di accesso non ha mai la risoluzione corretta (per quanto ho visto). Non ho ulteriori commenti sulla stranezza che sta succedendo qui.

EDIT: questo approccio non sembra essere programmabile e il comportamento in realtà non sembra coerente.

Altre note:

  • Non ho un file xconf(o simile) nella mia directory etc/X11.
  • La riparazione dei display è un problema piuttosto comune, perché ogni volta che spengo uno dei miei monitor, VirtualBox uccide uno dei monitor virtuali a schermo intero. (Urgh.)

Domande:

  • Esiste un modo per distinguere a livello di programmazione tra le effettive capacità hardware (ovvero le risoluzioni native) di monitor diversi dall'interno di VirtualBox?
  • Perché vedo questi vari errori? Cosa sta succedendo xrandr, ecc.?
  • Esiste un modo per ottenere in modo affidabile la giusta risoluzione a schermo intero senza richiedermi di iniziare una gnomesessione prima della mia i3sessione?

Eventuali problemi correlati

  • Il puntatore del mouse non si allinea correttamente in modo affidabile rispetto al punto in cui i clic sembrano essere rilevati; i clic di solito si verificano sotto e a destra del puntatore. Una volta configurati correttamente gli schermi, questo problema di solito scompare, anche se attualmente gli schermi hanno le risoluzioni corrette ma il puntatore è ancora leggermente spento.
  • Quando riesco a ottenere le risoluzioni corrette, lo schermo lampeggia di tanto in tanto. Questo è fastidioso ma vivibile. Qualche idea su cosa lo causa o se può essere risolto?

Dovrò scavare le mie note ma quali sono le modalità supportate per i tuoi schermi? i3 ha un modo per avviare uno script prima / subito dopo il login? superuser.com/questions/808737/… è quello che ho finito per fare un problema fisico simile, ma potrebbe essere necessario un po 'di rifinitura per funzionare nel tuo caso.
Journeyman Geek

@JourneymanGeek Il 4K ha il supporto per la maggior parte delle modalità standard a 60 hz e il supporto per le modalità più grandi (incluso 4K) a 30 hz. SyncMaster sembra supportare la maggior parte delle modalità normali, con una risoluzione nativa (verticale) di 1920x1280. Lo script di configurazione i3 supporta l'esecuzione di uno script all'accesso; Sto usando questa funzione per eseguire automaticamente lo script sopra descritto, che è simile al tuo, ma continuo a ricevere strani xrandrerrori.
Kyle Strand

Come si avvia i3? Ha una sua routine di inizializzazione X? O lo lasci cadere nel tuo .xinitrce lo usi startx? Uso xmonad (che, a quanto ho capito, è simile a i3?) Che lancio usando startx. Il mio xrandrscripting è finito .xinitappena prima che il mio window manager venga lanciato. Ho avuto risultati eccellenti in questo modo. X è pronto per partire e nient'altro ha lanciato per interferire.
Chris,

Uso gdm3e ho i3selezionato come ambiente desktop predefinito per il mio account.
Kyle Strand

1
Sfortunatamente, nessuno a cui riesco a pensare immediatamente, poiché VBox non sembra assegnare coerentemente nomi ai monitor. Potresti pubblicare l'output di xrandr --query(a) quando rileva erroneamente le impostazioni, e (b) dopo che hai fatto funzionare tutto correttamente? O almeno uno da tutto funziona correttamente.
Chris,

Risposte:


0

L'aggiornamento all'ultima versione di VirtualBox, 5.0.14, sembra aver risolto il problema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.