Volevo cambiare la risoluzione dello schermo del mio desktop a 1366x768
. Ma i miei VESA drivers(AMD REDWOOD)
non ha rilevato tale risoluzione. Quindi ho creato uno script di shell come segue:-
xrandr --newmode "1368x768_60.00" 85.25 1368 1440 1576 1784 768 771 781 798 -hsync +vsync
xrandr --addmode DVI-0 1368x768_60.00
xrandr --output DisplayPort-0 --off --output DVI-0 --mode 1368x768_60.00 --pos 0x0 --rotate normal --output HDMI-0 --off
L'ho salvato come lightdmxrandr.sh
in /usr/bin
e lo ha reso eseguibile. Quindi ho aggiunto le seguenti righe a /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
(che è l'equivalente del noto /etc/lightdm/lightdm.conf
. Sto usando il file sopra dato che sono su 14.04 dove non c'è /etc/lightdm/lightdm.conf
.) :-
greeter-session=unity-greeter
display-setup-script=/usr/bin/lightdmxrandr.sh
session-setup-script=/usr/bin/lightdmxrandr.sh
e l'ho salvato. In teoria questo avrebbe dovuto cambiare sia la risoluzione dello schermo di accesso che la risoluzione dello schermo del desktop in 1366x768
. Ma sorprendentemente questo ha cambiato solo la risoluzione dello schermo di accesso. La risoluzione del desktop non è stata modificata. Successivamente ho aggiunto lo script alle applicazioni di avvio e questo ha cambiato la risoluzione del mio desktop.
Quindi voglio sapere perché le modifiche che ho apportato a lightdm.conf
file (o meglio il 50-ubuntu.conf
file) non ha influito sulla risoluzione del mio desktop. Si tratta di una specie di bug che deve essere segnalato al launchpad o è sbagliato dire che le modifiche in lightdm influiranno sullo schermo del desktop?
PS:- Secondo me questo non è solo specifico di Ubuntu 14.04.
Risposta accettata:
Ho provato una cosa simile e dopo un po' di debug penso di aver capito cosa sta succedendo. Il tuo script probabilmente è eseguito e probabilmente imposta correttamente la risoluzione. Tuttavia, poiché è eseguito dal gestore degli accessi, viene eseguito prima che Unity abbia terminato la configurazione dell'ambiente desktop e Unity legge le proprie impostazioni e ripristina la risoluzione su quella che avevi. Quindi, penso che quello che succede sia:
- lightdm esegue correttamente il tuo script
- Questo imposta la risoluzione desiderata
- Unity si avvia, ne legge le impostazioni e torna alla risoluzione predefinita che hai lì
- La tua risoluzione torna a quella di prima
Ora, questo accade perché il driver VESA non rileva automaticamente la risoluzione desiderata. Ciò significa che quando modifichi la risoluzione dalla sezione Display delle impostazioni di Unity, gli stai assegnando una risoluzione che non è disponibile a meno che tu non esegua xrandr
comandi. Pertanto, questo viene ignorato al prossimo riavvio e Unity torna alla risoluzione predefinita.
Quindi, quello che devi fare è rendere la risoluzione disponibile per Unity, quindi impostarla come predefinita e lasciarla gestire. Per farlo, devi prima aggiungere questa riga a /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
:
session-setup-script=/usr/bin/lightdmxrandr.sh
Quindi, assicurati che /usr/bin/lightdmxrandr.sh
assomiglia a questo:
xrandr --newmode "1368x768_60.00" 85.25 1368 1440 1576 1784 768 771 781 798 -hsync +vsync
xrandr --addmode DVI-0 1368x768_60.00
Nota che in realtà non sto impostando la delibera, solo rendendola disponibile. Dopo aver eseguito questo riavvio, accedi. La nuova risoluzione dovrebbe ora essere disponibile in Impostazioni => Display. In tal caso, sceglilo lì, esci e accedi nuovamente e la risoluzione dovrebbe essere impostata correttamente. Ora dovrebbe persistere durante i riavvii.
Approcci alternativi:
-
Crea un
/etc/X11/xorg.conf
file che elenca la risoluzione desiderata. Qualcosa del genere:Section "Monitor" Identifier "Monitor0" Modeline "1368x768_60.00" 109.00 1280 1368 1496 1712 1024 1027 1034 1063 -hsync +vsync EndSection Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" SubSection "Display" Modes "1368x768_60.00" EndSubSection EndSection Section "Device" Identifier "Card0" Driver "vesa" EndSection
-
Aggiungi lo script che esegue
xrandr
comandi alle applicazioni di avvio della tua sessione.