Come posso rendere permanente la personalizzazione di xrandr?

60

Ho usato per modificare lo script di avvio per GDM (/ etc / gdm / Init / Default) per modificare in modo permanente la risoluzione dello schermo.

Come posso fare questo con LigthDM su Ubuntu Oneiric?

    
posta Edocastillo 30.09.2011 - 07:25

9 risposte

20

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

Se non disponi di un xorg.conf , puoi utilizzare i seguenti elementi come base. Devi sostituire le voci con i nomi Modeline , Driver e Modes con le voci corrette per il tuo 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 conosci il nome del driver video utilizzato dal tuo sistema, puoi ottenere il nome come segue (se hai un chip grafico Intel, il nome del driver è solo "intel"):

lshw -class display | grep "driver"

Le modeline possono essere generate con cvt :

cvt <h-resolution> <v-resolution> [refresh]
    
risposta data Nimmermehr 01.10.2011 - 10:59
62

Modifica /etc/lightdm/lightdm.conf per aggiungere le seguenti opzioni:

display-setup-script & gt; chiama il tuo mycustomloginvideo.sh prima che appaia la schermata di accesso

session-setup-script & gt; chiama il tuo mycustomdesktopvideo.sh prima che inizi la 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

Potresti avere uno strumento "arandr" gui generare lo sh script sopra, scegliendo i parametri dalla configurazione X della tua sessione attuale.

Assicurati che lo script della shell sia eseguibile:

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

e puoi verificare che funzioni (ovvero che non hai errori di battitura o di configurazione nel comando xrandr) semplicemente eseguendolo in un terminale:

/usr/share/mycustomdesktopvideo.sh

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

    
risposta data Jon Roberts 20.10.2011 - 00:17
10

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

modifica il file /usr/sbin/lightdm-session

Ecco come appare 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.

    
risposta data Meconio 21.11.2011 - 16:45
5

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

Ho un vecchio aspirante AOA110 che 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 così io ho dovuto "modificarlo" numerose volte per farlo funzionare alla risoluzione corretta.

Ecco cosa ho fatto:

Dopo aver utilizzato questo link tutorial fino al passaggio 5, sono riuscito a trovare una risoluzione funzionante e accettabile in xrandr ma questo non funzionava sulla schermata di accesso di LightDM.

Non seguire i passaggi per renderlo persistente in quanto sopra può funzionare, ma penso che questo sia il modo corretto di farlo in 11.10. Ho trovato questo post sul link di ArchWiki che ho adattato alle mie esigenze.

Prima crea un file qui: /etc/X11/xorg.conf.d/10-monitor.conf

Quindi aggiungi i dettagli X appropriati per il tuo display. Ecco 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 il Modeline appropriato che hai trovato mentre usi gtf 1440 900 60.00 e poi sotto il corrispondente Section "Screen" includendo il Modes corretto.

Noterai che ciò che stavo cercando di fare non era solo impostare la connessione VGA1 ad una risoluzione adatta, ma anche dirgli di non usare la mia uscita LVDS1. Ovviamente dovrai modificare il tuo in modo appropriato per abbinare il giusto numero di uscite e le sezioni corrette di Dispositivo, Schermo e Display per la tua configurazione.

Scusa per il post epico, ho modificato i file xorg.conf da un po 'di tempo con il display Hannspree che sto usando e le vecchie configurazioni xorg.conf che ho usato prima dell'11.10 non funzionano più correttamente questa è l'unica soluzione che ho trovato che funzioni.

Buona fortuna!

    
risposta data faithinfriction 07.12.2011 - 18:02
5

Ho avuto un problema simile con il mio portatile come sopra, e volevo aggiungere qualcosa alla conversazione. Se non ti interessa la risoluzione di accesso (non lo faccio), ma vuoi che l'effettiva area di lavoro sia la giusta risoluzione, puoi aggiungere le informazioni sul monitor a LightDM ma non attivare la piena risoluzione finché non accedi.

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

quindi lo chiamo in /etc/lightdm/lightdm.conf

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

Una volta effettuato il login posso configurare il mio monitor in Displays e funziona, anche dopo che ho effettuato il re-log (usato per darmi un brutto errore).

    
risposta data Karl 03.05.2012 - 20:07
4

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

#!/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 della gamma perché apparentemente le impostazioni della gamma xrandr vengono perse ogni volta che si passa a un monitor principale .

Non so se questo particolare comportamento con le impostazioni di gamma quando si progetta un monitor primario sia inteso o sia un bug.

Inoltre lo script della shell di sessione non viene 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 che accadano cose strane.

    
risposta data Hermes 08.05.2012 - 20:52
4

Ho avuto il problema di volere uno schermo esteso sul mio nuovo box LXDE, (non un duplice clone), ho trovato il comando corretto, ma non ho potuto renderlo permanente.

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

I metodi di cui sopra sembravano tutti troppo difficili / non il modo giusto per farlo.

Alla fine ho trovato questo: link

Questo ha funzionato, ma invece ho usato gedit:

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

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

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

Spero che ti aiuti e grazie a sudo-juice.

PS Nota il doppio - nel comando xrandr -- (non è apparso troppo chiaro sullo schermo).

    
risposta data abisdad 12.01.2013 - 02:29
2

Crea un nuovo documento e chiamalo ad es. %codice% 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 Inizio (questo imposta la risoluzione su 1600x900)

Apri Applicazioni di avvio (o esegui /home/yourusername/yourscriptname.sh ) 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 ora a ogni accesso, quindi dovrai prima effettuare il logout perché diventi effettivo. Eseguendo il comando (ad esempio gnome-session-properties ) in un terminale sarebbe anche una buona idea controllare se lo script funziona.

    
risposta data Nikhil 24.12.2012 - 04:57
1

In base alle risposte superiori, ho eseguito 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 script installxrandrfixed.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 dargli il permesso di eseguire

  

chmod + x scriptinstallxrandrfixed.sh

Ed esegui

  

./ 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.

    
risposta data pablodav 03.06.2014 - 22:29

Leggi altre domande sui tag