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 xrandr
impostazioni in Debian 7 su VirtualBox.
Sto cercando di utilizzare xrandr
per controllare le mie impostazioni di visualizzazione (piuttosto che consentire al mio ambiente desktop di automatizzarle) perché sto usando il i3
gestore 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
gnome
egdm3
sono installati- WM preferito è
i3
Comportamento:
Quando avvio i3
e eseguo una query xrandr
, le impostazioni di visualizzazione predefinite sembrano sempre identiche tra VBOX0
e 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 xrandr
errori. 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
VBoxService
passaggi di riavvio (non sembrano modificare ilxrandr
comportamento) - Utilizzare l'
xrandr --fb
opzione prima di qualsiasi altroxrandr
comando; 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
cvt
invece digtf
(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, come100.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) --rmmode
Modalità esplicite prima di crearle utilizzando--newmode
(questo sembra impedire l'errore "font" elencato di seguito)- Utilizzare
--right-of
o--left-of
quando si imposta--output
s (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éxrandr
riporta 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 daxrandr
"ricordare" il nome della modalità da un precedente tentativo di configurarlo, ma utilizzando$RANDOM
non non appare per risolvere il problema in modo coerente, quindi potrebbe essere qualche altro problema. (Suppongo sia possibile che anche con$RANDOM
ci 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 xrandr
genere 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é xrandr
riporta 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 xrandr
lista modalità 's, anche se ho ancora bisogno di eseguire i due xrandr
comandi dopo l'avvio di una i3
sessione di), ma non non sempre mantenute quando semplicemente disconnettersi e iniziare una nuova i3
sessione. Si noti che la gdm3
schermata 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 directoryetc/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
gnome
sessione prima della miai3
sessione?
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?
xrandr
errori.
.xinitrc
e lo usi startx
? Uso xmonad (che, a quanto ho capito, è simile a i3?) Che lancio usando startx
. Il mio xrandr
scripting è finito .xinit
appena 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.
gdm3
e ho i3
selezionato come ambiente desktop predefinito per il mio account.
xrandr --query
(a) quando rileva erroneamente le impostazioni, e (b) dopo che hai fatto funzionare tutto correttamente? O almeno uno da tutto funziona correttamente.