Dlaczego moje edycje lightdm.conf nie wpływają na rozdzielczość ekranu pulpitu?

13

Chciałem zmienić rozdzielczość ekranu pulpitu na 1366x768. Ale mój VESA drivers(AMD REDWOOD)nie wykrył tej rozdzielczości. Więc utworzyłem skrypt powłoki w następujący sposób:

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

Zapisałem go jako lightdmxrandr.shw /usr/bini uczyniłem go wykonywalnym. Następnie dodałem następujące wiersze /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf(co jest odpowiednikiem dobrze znanego /etc/lightdm/lightdm.conf. Używam powyższego pliku tak, jak w dniu 14.04, gdzie nie ma /etc/lightdm/lightdm.conf): -

greeter-session=unity-greeter  
display-setup-script=/usr/bin/lightdmxrandr.sh  
session-setup-script=/usr/bin/lightdmxrandr.sh

i uratowałem to. Teoretycznie powinno to zmienić zarówno rozdzielczość ekranu logowania, jak i rozdzielczość ekranu pulpitu na 1366x768. Ale nieoczekiwanie zmieniło to tylko rozdzielczość ekranu logowania. Rozdzielczość pulpitu nie uległa zmianie. Później dodałem skrypt do aplikacji startowych, co zmieniło rozdzielczość pulpitu.

Chcę więc wiedzieć, dlaczego zmiany wprowadzone w lightdm.confpliku (a raczej 50-ubuntu.confpliku) nie wpłynęły na rozdzielczość pulpitu. Czy to jakiś błąd, który należy zgłaszać na starterze, czy też błędem jest twierdzenie, że zmiany w lightdm wpłyną na ekran pulpitu?

PS: - Moim zdaniem nie dotyczy to tylko Ubuntu 14.04.

VenkiPhy6
źródło

Odpowiedzi:

11

Próbowałem podobnej rzeczy i po debugowaniu myślę, że zrozumiałem, co się dzieje. Twój skrypt prawdopodobnie jest uruchomiony i prawdopodobnie poprawnie ustawia rozdzielczość. Ponieważ jednak jest uruchamiany przez menedżera logowania, działa zanim Unity zakończy konfigurację środowiska pulpitu, a Unity przeczyta własne ustawienia i zresetuje rozdzielczość do tego, co posiadałeś. Myślę więc, że to, co się dzieje, to:

  1. lightdm poprawnie uruchamia twój skrypt
  2. Ustawia to pożądaną rozdzielczość
  3. Unity uruchamia się, odczytuje ustawienia i powraca do domyślnej rozdzielczości, którą masz
  4. Twoja rozdzielczość wraca do tego, co było wcześniej

Dzieje się tak, ponieważ sterownik VESA nie wykrywa automatycznie żądanej rozdzielczości. Oznacza to, że zmieniając rozdzielczość w sekcji Wyświetlania w ustawieniach Unity, dajesz rozdzielczość, która jest niedostępna, chyba że uruchomisz xrandrkomendy. Dlatego jest to ignorowane przy następnym uruchomieniu, a Unity powraca do domyślnej rozdzielczości.

Zatem musisz udostępnić rozdzielczość dla Unity, a następnie ustawić ją jako domyślną i pozwolić sobie na obsługę. Aby to zrobić, musisz najpierw dodać ten wiersz do /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf:

session-setup-script=/usr/bin/lightdmxrandr.sh

Następnie upewnij się, że /usr/bin/lightdmxrandr.shwygląda to tak:

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

Pamiętaj, że tak naprawdę nie ustawiam rozdzielczości, a jedynie udostępniam ją. Po wykonaniu tego restartu zaloguj się. Nowa rozdzielczość powinna być teraz dostępna w Ustawieniach => Wyświetlacze. Jeśli tak, wybierz go tam, wyloguj się i zaloguj ponownie, a rozdzielczość powinna być ustawiona poprawnie.


Alternatywne podejścia:

  1. Utwórz /etc/X11/xorg.confplik z listą żądanej rozdzielczości. Coś takiego:

    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
    
  2. Dodaj skrypt uruchamiający xrandrpolecenia do aplikacji startowych sesji.

terdon
źródło
Edycja plików w /usr/share/lightdm/lightdm.conf.d/ jest niewłaściwym sposobem zmiany lightdm.conf. Strona projektu LightDM mówi, że administratorzy systemu mogą zastąpić domyślną konfigurację w /etc/lightdm/lightdm.conf.d/ lub /etc/lightdm/lightdm.conf Nie należy edytować plików w / usr / share / lightdm /, ponieważ podczas gdy może działać przez jakiś czas, może zostać nadpisane przez aktualizacje pakietu Źródło: strona projektu LightDM freedesktop.org/wiki/Software/LightDM Proszę poprawić odpowiedź
happyskeptic
3
Nie mam wystarczającej reputacji, aby dodać prosty komentarz, ale chciałem zauważyć, że plik sh musi mieć pozwolenie na wykonanie. OP wspomniał, że to zrobił, ale odpowiedź terdona nie uwzględniła tego w krokach. Jeśli nie jest wykonywalny, będziesz musiał przejść do wiersza polecenia, ponieważ się nie zaloguje (przynajmniej nie dla mnie). Z mojej strony było to proste przeoczenie, ale na wypadek, gdyby ktokolwiek przeoczył ten krok, chciałem to powtórzyć tutaj.
Kirk Spencer