Come posso rendere permanente la personalizzazione di xrandr?


65

Ho usato per modificare lo script di avvio per GDM (/ etc / gdm / Init / Default) per cambiare in modo permanente la mia risoluzione del display.

Come posso farlo con LigthDM in Ubuntu Oneiric?


aggiungi a .xprofile nella tua cartella home. Vedere askubuntu.com/questions/63863/… per una guida di base per l'impostazione della risoluzione e l'aggiunta a .xprofile
duffydack,

Risposte:


21

Penso che puoi aggiungere le modalità di visualizzazione a /etc/X11/xorg.conf.

Se non si dispone di un xorg.conf, quindi è possibile utilizzare quanto segue come base. È necessario sostituire le voci con i nomi Modeline, Drivere Modescon le voci corrette per il sistema. A seconda dell'hardware, potrebbero essere necessarie voci aggiuntive, ad esempio se il sistema ha più di un chip grafico.

Section "Monitor"
    Identifier    "Monitor0"
    Modeline "1280x1024_60.00"  109.00  1280 1368 1496 1712  1024 1027 1034 1063 -hsync +vsync
    Modeline "1024x768_60.00"   63.50  1024 1072 1176 1328  768 771 775 798 -hsync +vsync
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Card0"
    Monitor        "Monitor0"
    SubSection "Display"
        Modes       "1280x1024_60.00" "1024x768_60.00"
    EndSubSection
EndSection

Section "Device"
    Identifier    "Card0"
    Driver        "nvidia"
EndSection

Se non si conosce il nome del driver video utilizzato dal sistema, è possibile ottenere il nome come segue (se si dispone di un chip grafico Intel, il nome del driver è semplicemente "Intel"):

lshw -class display | grep "driver"

Le modeline possono essere generate con cvt:

cvt <h-resolution> <v-resolution> [refresh]

Ho provato questo e non si avviava per qualche motivo. Ho usato la modeline generata dal cvtcomando e il driver dall'altra (e ci ho provato vesaanche), ma si è bloccata senza messaggi di errore. La soluzione di Jon Roberts ha funzionato perfettamente per me ed è indipendente da cose come il driver della scheda video che citi qui che potrebbe facilmente andare storto per i neofiti, quindi sto votando la sua risposta.
Mike,

1
Questo non sembra aiutare per cose come --rotate.
Jherico,

2
Questa risposta è obsoleta. Vedi la risposta di John Roberts
con-f-use

+1 Perfect-o! Usando GDM con Gnome 3.16, questo ha permesso al mio GDm di riconoscere i monitor 1080p. Grazie!
eduncan911,

Sul mio computer, lshwoutput i915, tuttavia è il driver corretto intel.
user202729

63

Modifica /etc/lightdm/lightdm.confper aggiungere le seguenti opzioni:

display-setup-script> chiama mycustomloginvideo.sh prima che appaia la schermata di accesso

session-setup-script> chiama mycustomdesktopvideo.sh prima dell'avvio della sessione desktop dell'utente

[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
# for your login screen, e.g. LightDM (Ubuntu 11.10) or GDM (11.04 or earlier)
display-setup-script=/usr/share/mycustomloginvideo.sh
# for your desktop session
session-setup-script=/usr/share/mycustomdesktopvideo.sh

È possibile che lo strumento gui "arandr" generi lo script sh sopra, selezionando i parametri dalla configurazione X della sessione corrente.

Assicurarsi che lo script della shell sia eseguibile:

chmod a+x /usr/share/mycustom*video.sh

e puoi provare che funziona (cioè che non hai errori di battitura o errori di configurazione nel tuo comando xrandr) semplicemente eseguendolo in un terminale:

/usr/share/mycustomdesktopvideo.sh

Se lo script di accesso non funziona per qualsiasi motivo, il computer potrebbe non completare il processo di avvio nella schermata di accesso. Se lo script desktop non riesce, potresti non ottenere un desktop dopo aver effettuato l'accesso. Se stai impostando un monitor esterno, questi script falliranno quando lo disconnetti e la sessione X non verrà avviata.


Per Mint 13 XFCE usando mdm, modifica / etc / mdm / Init / Default. Chiama il tuo script prima di "exit 0"
StackUnder il

Evnn funziona su Fedora ... aveva solo bisogno dello display-setup-scriptscript dato che Xfce lo aveva già impostato dalle impostazioni di visualizzazione, quindi session-setup-scriptmi ha appena scaricato nella schermata di accesso.
Wilf,

10

Qualcuno ha postato un'altra soluzione alternativa, anche se devo dire che non ha funzionato per me. Probabilmente potrebbe funzionare per te. Nel mio caso si rompe l'unità e posso solo spostare il cursore del mouse. Il pannello superiore dell'indicatore dell'app sembra vuoto, ma dopo aver scollegato il mio LCD sono stato in grado di eliminare le linee aggiunte e tutto è tornato alla normalità.

modifica il file /usr/sbin/lightdm-session

Ecco come appare ora la prima parte di quel file:

#!/bin/sh
#
# LightDM wrapper to run around X sessions.

echo "Running X session wrapper"

# Load profile
for file in "/etc/profile" "$HOME/.profile" "/etc/xprofile" "$HOME/.xprofile"; do
  if [ -f  "$file" ]; then
     echo "Loading profile from $file";
     . "$file"
  fi
done

xrandr --newmode "1368x768_60.00" 85.25 1368 1440 1576 1784 768 771 781 798 -hsync +vsync
xrandr --addmode CRT1 1368x768_60.00
xrandr --output CRT1 --mode 1368x768_60.00

# Load resources

Prendi nota che le impostazioni di Xrandr devono essere modificate in modo che corrispondano alle tue.


Questa soluzione ha funzionato alla grande con Lubuntu 17.x su una vecchia macchina. Interessa solo la sessione, quindi la schermata di accesso di greeter non viene visualizzata con la risoluzione desiderata.
laconbass,

6

Ho cercato di risolvere un problema simile per un po 'di tempo e ho trovato una soluzione che funziona per me, quindi spero che possa aiutare ...

Ho un vecchio aspirapolvere AOA110 sul quale ho rotto lo schermo troppe volte e dopo aver acquistato un nuovo laptop ho deciso che avrei provato a trasformarlo in un HTPC ma il display esterno che ho non è riconosciuto da X, quindi ho dovuto "ottimizzalo" numerose volte per farlo funzionare alla risoluzione corretta.

Ecco cosa ho fatto:

Dopo aver usato questo http://ubuntuforums.org/showthread.php?t=1112186 tutorial fino al passaggio 5, sono stato in grado di trovare una risoluzione funzionante e accettabile in xrandr ma questo non funzionava nella schermata di accesso di LightDM.

Non seguire i passaggi per renderlo persistente in precedenza su come potrebbe funzionare, ma penso che questo sia il modo corretto di farlo in 11.10. Ho trovato questo post su ArchWiki https://wiki.archlinux.org/index.php/Xorg che ho adattato alle mie esigenze.

Per prima cosa crea un file qui: /etc/X11/xorg.conf.d/10-monitor.conf

Quindi aggiungi i dettagli X appropriati per il tuo display qui è come appariva il mio:

Section "ServerLayout"
Identifier     "DualSreen"
Screen       0 "Screen0"
Screen       1 "Screen1" RightOf "Screen0" #Screen1 at the right of Screen0
#Option         "Xinerama" "1" #To move windows between screens
EndSection

Section "Monitor"
Identifier     "LVDS1"
Option         "ignore" "true"
EndSection

Section "Monitor"
Identifier     "VGA1"
Option         "Enable" "true"
Modeline "1440x900_60.00"  106.47  1440 1520 1672 1904  900 901 904 932  -HSync +Vsync
EndSection

Section "Device"
Identifier     "Device0"
Driver         "intel"
Screen         0
EndSection

Section "Device"
Identifier     "Device1"
Driver         "intel"
Screen         1
EndSection

Section "Screen"
Identifier     "Screen0"
Device         "Device0"
Monitor        "VGA1"
DefaultDepth    24
Option         "TwinView" "0"
SubSection "Display"
    Depth          24
    Modes          "1440x900_60.00"
EndSubSection
EndSection

Section "Screen"
Identifier     "Screen1"
Device         "Device1"
Monitor        "LVDS1"
DefaultDepth   24
Option         "TwinView" "0"
SubSection "Display"
    Depth          24
EndSubSection
EndSection

I bit importanti da aggiungere sono sotto l'appropriato Section "Monitor"includono l'appropriato Modelineche hai trovato durante l'utilizzo gtf 1440 900 60.00e quindi sotto il corrispondente Section "Screen"compreso il corretto Modes.

Noterai che quello che stavo cercando di fare non era solo di impostare la connessione VGA1 su una risoluzione adeguata, ma anche di non usare il mio output LVDS1. Ovviamente dovrai modificare il tuo in modo appropriato per abbinare il giusto numero di uscite e le giuste sezioni Dispositivo, Schermo e Display per la tua configurazione.

Ci scusiamo per il post epico, sto modificando i file xorg.conf da qualche tempo con il display Hannspree che ho usato e le vecchie configurazioni xorg.conf che ho usato prima dell'11.10 non funzionano più correttamente, questo è il unica soluzione che ho trovato che funziona.

In bocca al lupo!


L'uso di xrandr -qdovrebbe fornire le informazioni giuste su quale display viene utilizzato e le possibili modalità.
faithinfriction

Un file di configurazione di base può essere generato da corsa Xorg :1 -configure, il che rende un nuovo server X e genera un file di configurazione da esso - questo può essere copiato da l' /root/xorg.conf.newa /etc/X11/xorg.conf. Ho trovato un modo migliore era la risposta di cui sopra
Wilf

5

Ho avuto un problema simile con il mio laptop come sopra e volevo aggiungere qualcosa alla conversazione. Se non ti interessa la risoluzione di accesso (io no), ma desideri che l'area di lavoro effettiva sia la giusta risoluzione, puoi aggiungere le informazioni del monitor a LightDM ma non attivare la risoluzione completa fino al login.

Ho appena aggiunto il seguente script per il mio monitor in un file: lighdmxrandr

xrandr --newmode "1440x900_60.00"  106.50  1440 1528 1672 1904  900 903 909 934 -hsync +vsync
xrandr --addmode VGA1 1440x900_60.00

poi lo chiamo /etc/lightdm/lightdm.conf

display-setup-script=/usr/bin/lightdmxrandr

Una volta effettuato l'accesso posso impostare il mio monitor su Display e funziona, anche dopo aver effettuato nuovamente il login (usato per darmi un grosso brutto errore).


Ha funzionato come desiderato ma non è stato necessario riavviare il login, ma ...
CrandellWS,

4

Come miglioramento della risposta di Jon Roberts, lasciatemi specificare che arandr non include nella sua generazione di script sh tutti i parametri che funzionano nella sessione corrente. Monitor principale (nel caso in cui si stia utilizzando una configurazione a doppio monitor), ad esempio non sono incluse le impostazioni di frequenza di aggiornamento e gamma per ciascun monitor. Il mio script di sessione è simile al seguente:

#!/bin/sh
xrandr --output LVDS --mode 1366x768 --pos 1600x432 --rotate normal --output HDMI-0 --off --output DVI-0 --off --output VGA-1 --mode 1600x1200 --rate 85 --pos 0x0 --rotate normal --primary
xrandr --output VGA-1 --gamma 0.8:0.7:0.55 

Ho aggiunto manualmente le opzioni --rate e --primary nella prima riga e poi ho aggiunto manualmente una seconda riga con la correzione gamma perché apparentemente le impostazioni gamma xrandr vengono perse ogni volta che si passa da un monitor a primario .

Non so se questo particolare comportamento con le impostazioni gamma quando si rende primario un monitor sia destinato o sia un bug.

Inoltre lo script della shell di sessione non è chiamato da lightdm ma come un'applicazione di avvio, perché sembra che lightdm chiami lo script prima che le cose siano pronte per xrandr e accadano cose strane.


4

Ho avuto il problema di volere un display esteso sulla mia nuova scatola LXDE, (non un doppio clone), ho trovato il comando corretto, ma non sono riuscito a renderlo permanente.

xrandr --output VGA-0 --right-of DVI-0

Tutti i metodi sopra indicati sembravano troppo difficili / non il modo giusto per farlo.

Alla fine ho trovato questo: http://www.sudo-juice.com/change-lxde-screen-resolution-ubuntu-lubuntu/

Ha funzionato a meraviglia, ma invece ho usato gedit:

gksu gedit /etc/xdg/lxsession/LXDE/autostart

Quindi ha aggiunto la linea alla fine con un simbolo @ all'inizio:

@xrandr --output VGA-0 --right-of DVI-0

Spero che sia d'aiuto e grazie a Sudo-Succo.

PS Nota il doppio -nel comando xrandr --(non è apparso troppo chiaramente sul mio schermo).


2

Crea un nuovo documento e chiamalo, ad esempio, /home/yourusername/yourscriptname.sh digita

#!/bin/bash
xrandr --newmode "1600x900_60.00"  118.25  1600 1696 1856 2112  900 903 908 934 -hsync +vsync
xrandr --addmode VGA1 1600x900_60.00
xrandr --output VGA1 --mode 1600x900_60.00
unity --replace

e salvalo nella tua cartella home (imposta la risoluzione su 1600x900)

Apri Startup Applications (o esegui gnome-session-properties) e fai clic su "AGGIUNGI". Dare un nome e digitare nella riga di comando:

bash /home/yourusername/yourscriptname.sh

Salvalo e ora lo script verrà eseguito ogni volta che accedi, quindi dovrai prima disconnetterti perché abbia effetto. Eseguire il comando (ad es. bash /home/yourusername/yourscriptname.sh) In un terminale sarebbe anche una buona idea per verificare se lo script funziona.


Questo è stato modificato (invece se cancellato) dall'OP di questa risposta in quanto è stato pubblicato qui invece che qui - ho ripristinato la formattazione originale in quanto potrebbe essere utile in quanto dovrebbe ripristinare la configurazione di xrandr al login - il contenuto dello script bash dovrebbe probabilmente verrà sostituito con i comandi xrandr utilizzati per ottenere la configurazione corretta.
Wilf,

Nel mio display a doppio monitor, l'EDID per il mio display HDMI-0 viene letto, ma l'EDID per il mio DVI-0 non viene letto. Indicare uno script di configurazione memorizzato in /usr/binnon ha funzionato, ma l'aggiunta di quello script alle mie app di avvio usando ha gnome-session-propertiesavuto successo!
Noobninja,

1

Sulla base delle risposte superiori, ho fatto alcuni test e ho trovato un metodo utile che funziona per me, quindi ho creato un semplice script per automatizzarlo con le mie installazioni automatiche. Ma funzionerà in tutti gli altri casi.

Crea uno scriptinstallxrandrfixed.sh Aggiungi queste righe:

#Variables for lightdm script and xrandr script to setup fixed resolution for old displays: 
xrandrscript=/usr/local/bin/xrandrscript.sh
lightdmstartscript=/usr/share/lightdm/lightdm.conf.d/60-xrandrscript.conf

 #Added old style configuration for lightdm: 
 sudo  ln -s /usr/share/lightdm/lightdm.conf.d /etc/lightdm/lightdm.conf.d
 #A fix to some old displays in high school at Fray Bentos, fix to 1024x768
 #Some useful information comes from: http://askubuntu.com/questions/63681/how-can-i-make-xrandr-customization-permanent
 sudo sh -c "echo '[SeatDefaults]' > $lightdmstartscript"
 # for your login screen, e.g. LightDM (Ubuntu 11.10) or GDM (11.04 or earlier)
 sudo sh -c "echo 'display-setup-script=$xrandrscript' >> $lightdmstartscript"
 # for your desktop session
 sudo sh -c "echo 'session-setup-script=$xrandrscript' >> $lightdmstartscript"
 sudo sh -c "echo 'xrandr --size 1024x768 --rate 60.0' > $xrandrscript"
 sudo chmod +x $xrandrscript

creerà gli script e i file per la visualizzazione e la sessione di lightdm. non dimenticare di dare il permesso di eseguire

chmod + x scriptinstallxrandrfixed.sh

Ed eseguire

./scriptinstallxrandrfixed.sh (devi essere inserito nella stessa directory in cui hai il file.)

se non nella stessa directory: /path/to/script/scriptinstallxrandrfixed.sh

Modificalo in base alle tue esigenze. Cordiali saluti. Pablo.

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.