Jak mogę ustawić personalizację xrandr na stałe?

65

Kiedyś edytowałem skrypt startowy dla GDM (/ etc / gdm / Init / Default), aby trwale zmienić rozdzielczość ekranu.

Jak mogę to zrobić za pomocą LigthDM w Ubuntu Oneiric?

Edocastillo
źródło
dodaj do .xprofile w swoim katalogu domowym. Zobacz askubuntu.com/questions/63863/…, aby uzyskać podstawowy przewodnik po ustawianiu rozdzielczości i dodawaniu do pliku .xprofile
duffydack

Odpowiedzi:

21

Myślę, że możesz dodać tryby wyświetlania do /etc/X11/xorg.conf.

Jeśli nie masz xorg.conf, możesz użyć następujących podstaw. Trzeba wymienić wpisy z nazwiskami Modeline, Driveroraz Modesz odpowiednimi wpisami w systemie. W zależności od sprzętu mogą być potrzebne dodatkowe wpisy, na przykład jeśli twój system ma więcej niż jeden układ graficzny.

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

Jeśli nie znasz nazwy sterownika wideo, którego używa twój system, możesz uzyskać nazwę w następujący sposób (jeśli masz układ graficzny Intel, nazwa sterownika to po prostu „intel”):

lshw -class display | grep "driver"

Modelki można generować za pomocą cvt:

cvt <h-resolution> <v-resolution> [refresh]
Nimmermehr
źródło
Próbowałem tego i z jakiegoś powodu nie uruchomił się. Użyłem modeliny wygenerowanej z cvtpolecenia i sterownika z drugiej (i vesateż próbowałem ), ale po prostu zawiesił się bez komunikatów o błędach. Rozwiązanie Jona Robertsa działało dla mnie idealnie i jest niezależne od takich rzeczy, jak wspomniany tutaj sterownik karty graficznej, który może łatwo pójść nie tak dla początkujących, dlatego głosuję za jego odpowiedzią.
Mike,
1
Nie wydaje się to pomocne w przypadku czegoś takiego jak --rotate.
Jherico,
2
Ta odpowiedź jest nieaktualna. Zobacz John Roberts Answer
con-f-use
+1 Perfect-o! Używając GDM z Gnome 3.16, dzięki temu mój GDm rozpoznał monitory 1080p. Dziękuję Ci!
eduncan911
Na moim komputerze lshwwyjście i915, jednak prawidłowy sterownik to intel.
user202729
63

Zmodyfikuj, /etc/lightdm/lightdm.confaby dodać następujące opcje:

display-setup-script> wywołuje plik mycustomloginvideo.sh, zanim pojawi się ekran logowania

session-setup-script> wywołuje plik mycustomdesktopvideo.sh przed rozpoczęciem sesji pulpitu użytkownika

[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

Być może narzędzie GUI „arandr” generuje powyższy skrypt sh, wybierając parametry z konfiguracji X bieżącej sesji.

Upewnij się, że skrypt powłoki jest wykonywalny:

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

i możesz przetestować, czy to działa (tj. czy nie ma literówek ani błędów konfiguracji w poleceniu xrandr), po prostu uruchamiając go w terminalu:

/usr/share/mycustomdesktopvideo.sh

Jeśli skrypt logowania nie działa z jakiegokolwiek powodu, komputer może nie ukończyć procesu rozruchu na ekranie logowania. Jeśli skrypt na pulpicie się nie powiedzie, możesz nie uzyskać pulpitu po zalogowaniu. Jeśli ustawiasz monitor zewnętrzny, skrypty te zakończą się niepowodzeniem po jego odłączeniu, a sesja X nie rozpocznie się.

Jon Roberts
źródło
Dla Mint 13 XFCE za pomocą mdm, edytuj / etc / mdm / Init / Default. Wywołaj skrypt przed „wyjściem 0”
StackUnder
Evnn działa na Fedorze ... potrzebował tylko display-setup-scriptskryptu, ponieważ Xfce miał go już ustawiony w ustawieniach wyświetlania, więc po session-setup-scriptprostu zrzuciłem mnie na ekranie logowania.
Wilf
10

Ktoś opublikował inne obejście, chociaż muszę powiedzieć, że to nie działało dla mnie. Prawdopodobnie może to działać dla Ciebie. W moim przypadku łamie jedność i mogę jedynie przesuwać kursor myszy. Górny panel wskaźnika aplikacji wygląda na pusty, ale po odłączeniu wyświetlacza LCD udało mi się usunąć dodane linie i wszystko wróciło do normy.

edytować plik /usr/sbin/lightdm-session

Oto jak wygląda teraz pierwsza część tego pliku:

#!/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

Pamiętaj, że ustawienia Xrandr powinny zostać dostosowane do twoich.

Meconio
źródło
To rozwiązanie świetnie działało w przypadku lubuntu 17.x na starej maszynie. Wpływa tylko na sesję, więc ekran logowania powitania nie wyświetla się w żądanej rozdzielczości.
laconbass
6

Od jakiegoś czasu próbuję rozwiązać podobny problem i znalazłem rozwiązanie, które działa dla mnie, więc mam nadzieję, że pomoże ...

Mam starą aspirującą wersję AOA110, na której zbyt wiele razy zepsułem ekran i po zakupie nowego laptopa zdecydowałem, że spróbuję go przekształcić w HTPC, ale X nie rozpoznaje zewnętrznego wyświetlacza, więc musiałem „poprawiaj” go wiele razy, aby działał we właściwej rozdzielczości.

Oto co zrobiłem:

Po skorzystaniu z tego http://ubuntuforums.org/showthread.php?t=1112186 tutoriala do kroku 5 udało mi się znaleźć działającą i akceptowalną rozdzielczość w xrandr, ale to nie działało na ekranie logowania LightDM.

Nie postępuj zgodnie z instrukcjami, aby utrwalić powyższe wskazówki, jak to może działać, ale myślę, że jest to właściwy sposób, aby to zrobić w 11.10. Znalazłem ten post na ArchWiki https://wiki.archlinux.org/index.php/Xorg, który dostosowałem do moich potrzeb.

Najpierw utwórz plik tutaj: /etc/X11/xorg.conf.d/10-monitor.conf

Dodaj tutaj odpowiednie szczegóły X dla swojego wyświetlacza, jak wyglądał mój:

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

Ważne bity, które należy dodać, znajdują się pod odpowiednimi, Section "Monitor"obejmującymi odpowiednie Modelineznalezione podczas używania, gtf 1440 900 60.00a następnie pod odpowiednimi, w Section "Screen"tym poprawnymi Modes.

Zauważysz, że próbowałem nie tylko ustawić połączenie VGA1 na odpowiednią rozdzielczość, ale także powiedzieć, aby nie korzystało z mojego wyjścia LVDS1. Oczywiście będziesz musiał odpowiednio dostosować swój, aby dopasować odpowiednią liczbę wyjść i odpowiednie sekcje Urządzenie, Ekran i Wyświetlacz do konfiguracji.

Przepraszam za epicki post, od jakiegoś czasu poprawiam pliki xorg.conf za pomocą wyświetlanego przeze mnie Hannspree, a stare ustawienia xorg.conf, których użyłem przed 11.10, po prostu nie działają poprawnie, to jest jedyne rozwiązanie, które znalazłem, które działa.

Powodzenia!

wiara
źródło
Używanie xrandr -qpowinno dać ci właściwe informacje o tym, który wyświetlacz jest używany i możliwe tryby.
faithinfriction,
Podstawowy plik konfiguracyjny może być generowany przez bieganie Xorg :1 -configure, co czyni nowy serwer X i generuje plik konfiguracyjny od niego - może to be skopiowany z /root/xorg.conf.newdo /etc/X11/xorg.conf. Znalazłem lepszy sposób na powyższą odpowiedź
Wilf
5

Miałem podobny problem z laptopem jak powyżej i chciałem coś dodać do rozmowy. Jeśli nie zależy Ci na rozdzielczości logowania (ja nie), ale chcesz, aby rzeczywisty obszar roboczy był odpowiedniej rozdzielczości, możesz dodać informacje o monitorze do LightDM, ale nie włączać pełnej rozdzielczości, dopóki się nie zalogujesz.

Właśnie dodałem następujący skrypt dla mojego monitora w pliku: lighdmxrandr

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

potem dzwonię /etc/lightdm/lightdm.conf

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

Po zalogowaniu mogę skonfigurować monitor w Monitory i działa, nawet po ponownym zalogowaniu (używany, aby dać mi duży brzydki błąd).

Karl
źródło
To działało zgodnie z oczekiwaniami, ale musiało się zrestartować, a nie ponownie zalogować ...
CrandellWS
4

Jako rozszerzenie odpowiedzi Jona Robertsa, pozwól mi zaznaczyć, że arandr nie uwzględnia w swoim generowaniu skryptu sh wszystkich parametrów działających w bieżącej sesji. Główny monitor (w przypadku korzystania z konfiguracji z dwoma monitorami), na przykład nie są uwzględnione ustawienia częstotliwości odświeżania i gamma dla każdego monitora. Mój skrypt sesji wygląda następująco:

#!/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 

Ręcznie dodałem --rate i --primary opcje w pierwszej linii, a następnie ręcznie dodałem drugą linię z korekcją gamma, ponieważ najwyraźniej ustawienia gamma xrandr są tracone za każdym razem, gdy przełączysz monitor na główny .

Nie wiem, czy to konkretne zachowanie z ustawieniami gamma podczas ustawiania monitora jako pierwotnego jest zamierzone czy jest błędem.

Co więcej, skrypt powłoki sesji nie jest wywoływany przez lightdm, ale jako aplikacja startowa, ponieważ wydaje się, że lightdm wywołuje skrypt, zanim wszystko będzie gotowe na xrandr i zdarzają się dziwne rzeczy.

Hermes
źródło
4

Miałem problem z tym, że chciałem rozszerzyć wyświetlanie na moim nowym oknie LXDE (nie podwójnym klonie), znalazłem poprawne polecenie, ale nie mogłem uczynić go trwałym.

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

Wszystkie powyższe metody wydawały się zbyt trudne / niewłaściwe.

W końcu znalazłem to: http://www.sudo-juice.com/change-lxde-screen-resolution-ubuntu-lubuntu/

To działało, ale zamiast tego użyłem gedit:

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

Następnie dodano linię na końcu z symbolem @ na początku:

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

Mam nadzieję, że to pomaga i dziękuję sokowi sudo.

PS Zwróć uwagę na podwójne -polecenie xrandr --(nie wyświetlało się zbyt wyraźnie na moim ekranie).

abisdad
źródło
2

Utwórz nowy dokument i nazwij go, np. /home/yourusername/yourscriptname.sh Wpisz

#!/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

i zapisz go w folderze domowym (ustawia to rozdzielczość na 1600 x 900)

Otwórz aplikacje startowe (lub uruchom gnome-session-properties) i kliknij „DODAJ”. Podaj nazwę i wpisz w wierszu polecenia:

bash /home/yourusername/yourscriptname.sh

Zapisz go, a teraz skrypt będzie uruchamiany przy każdym logowaniu, więc musisz się najpierw wylogować, aby zadziałał. Uruchomienie polecenia (np. bash /home/yourusername/yourscriptname.sh) W terminalu byłoby również dobrym pomysłem, aby sprawdzić, czy skrypt działa.

Nikhil
źródło
Zostało to zredagowane (zamiast usuniętego) przez OP tej odpowiedzi, ponieważ zostało tu zamieszczone zamiast tutaj - przywróciłem oryginalne formatowanie, ponieważ może to być przydatne, ponieważ powinno przywrócić konfigurację xrandr podczas logowania - zawartość skryptu bash powinna prawdopodobnie zostaną zastąpione poleceniami xrandr używanymi do uzyskania właściwej konfiguracji.
Wilf
Na moim ekranie z dwoma monitorami EDID dla mojego wyświetlacza HDMI-0 jest odczytywany, ale EDID dla mojego DVI-0 nie jest odczytywany. Wskazanie zapisanego skryptu konfiguracji /usr/binnie działało, ale dodanie tego skryptu do moich aplikacji startowych gnome-session-propertieszakończyło się powodzeniem!
noobninja
1

W oparciu o odpowiedzi górne, przeprowadziłem test i znalazłem przydatną metodę, która mi odpowiada, a następnie stworzyłem prosty skrypt, aby zautomatyzować go za pomocą moich automatycznych instalacji. Ale zadziała w innych przypadkach.

Utwórz scriptinstallxrandrfixed.sh Dodaj następujące wiersze:

#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

stworzy skrypty i pliki do wyświetlania i sesji lightdm. nie zapomnij wyrazić zgody na wykonanie

chmod + x scriptinstallxrandrfixed.sh

I wykonaj

./scriptinstallxrandrfixed.sh (musisz znajdować się w tym samym katalogu, w którym znajduje się plik).

jeśli nie znajduje się w tym samym katalogu: /path/to/script/scriptinstallxrandrfixed.sh

Zmodyfikuj go do swoich potrzeb. Z poważaniem. Pablo.

pablodav
źródło