Zastosować ustawienia wyświetlania do wszystkich kont użytkowników?

14

Spędziłem trochę czasu, aby moje ustawienia były poprawne dla wielu monitorów, i to działa dobrze, gdy jestem zalogowany, ale nie jest na ekranie logowania lub dla innych użytkowników.

Jak ustawić ustawienia wyświetlania globalnie dla wszystkich użytkowników i ekranu logowania?

miramy
źródło
Jak to ustawiłeś? z GUI lub wiersza poleceń i jakie dokładnie są twoje ustawienia?
Jacob Vlijm
Myślę, że z GUI „Screen Display” ustawienia i tak się tam pojawiają. Dwa monitory, jeden obrócony.
mirams
askubuntu.com/questions/360886/… ustawia login na taki sam jak jeden użytkownik, co jest pomocne. askubuntu.com/questions/372729/... wydaje się odnosić do starych ustawień xorg, które nie są już używane w 14.04 (myślę?). Nie mogę znaleźć żadnego pytania ani odpowiedzi, jak to zrobić w dniu 14.04 ...
mirams
Próbowałem tej odpowiedzi, ekran został obrócony w celu prawidłowego logowania, a następnie nie został obrócony dla użytkowników (nawet po usunięciu lokalnych monitorów.xml)
mirams
Jestem nieco zaskoczony nagrodą, jeśli skonfigurujesz swoje monitory, uruchomisz sudo cp ~/.config/monitors.xml /var/lib/lightdm/.config/jak sugerowano wcześniej, + rozwiązanie poniżej, masz konfigurację dla wszystkich użytkowników (w tym nowych użytkowników) dokładnie tak , jak to opisujesz.
Jacob Vlijm

Odpowiedzi:

14

W zależności od sposobu skonfigurowania systemu kopiowanie monitors.xmlpliku od prawidłowo skonfigurowanego użytkownika do wszystkich użytkowników może być tak proste :

Aby przetestować to dla jednego użytkownika:

cp --preserve=timestamps /home/CorrectUser/.config/monitors.xml /home/TestUser/.config/

następnie wyloguj się TestUser, jeśli jest już zalogowany , zaloguj się ponownie i sprawdź, czy wszystko jest w porządku .

Polecenie dla wszystkich użytkowników:

cp /home/CorrectUser/.config/monitors.xml /tmp/
for szUser in /home/* ; do sudo cp --preserve=timestamps /tmp/monitors.xml $szUser/.config/ ; done

Polecenie ekranu logowania:

sudo cp --preserve=timestamps /home/CorrectUser/.config/monitors.xml /var/lib/lightdm/.config/

Polecenie dla wszystkich przyszłych użytkowników ¹:

sudo mdkdir -p /etc/skel/.config
sudo cp --preserve=timestamps /home/CorrectUser/.config/monitors.xml /etc/skel/.config/

Uwaga¹: Wszyscy użytkownicy, których będziesz tworzyć w przyszłości

Fabby
źródło
1
Zasugerowałem już to w komentarzach (i w mojej odpowiedzi wcześniej, ale wycofałem), ale OP wspomniało, że to nie wystarczy. Działa to tylko w przypadku ekranu logowania :) Nie działa również w przypadku nowych użytkowników, chyba że skopiujesz ich ponownie do tych użytkowników.
Jacob Vlijm
@JacobVlijm: Przeczytaj jeszcze raz ... Mój jest na ekranie logowania i wszyscy użytkownicy ... : P (pozostawienie go jako komentarza poniżej tego przez OP, że nie działa ostrzega innych plakatów przed wpisaniem tego wszystkiego po raz trzeci) > :-)
Fabby
1
Nie sugerowałem, aby skopiować plik do wszystkich użytkowników, z tego powodu: Chciałbym rozwiązania, które zastosuje ustawienia do wszystkich kont użytkowników (i przyszłych), a także sprawi, że ekran logowania będzie wyglądał poprawnie. dodanie do /etc/xdg wydaje się być tylko trik, który robi, że do nowych użytkowników, jak również.
Jacob Vlijm
@JacobVlijm: ah, tęskniłem za tym! (Dodano również rozwiązanie tego) ;-)
Fabby
2
To najlepsza jak dotąd odpowiedź - poprawnie ustawia wszystkie monitory i działa natychmiast także dla gościa. Jako bonus - czy istnieje sposób na skopiowanie również ustawienia „Wyrzutnia” z GUI ustawień wyświetlania? Na moim użytkowniku jest tylko na jednym monitorze, ale na obu dla nowego / gościa.
mirams
3

Aby ustawić konfigurację ekranu dla każdego zalogowanego użytkownika (nie zmieni to konfiguracji na ekranie logowania), możesz utworzyć .desktopplik w/etc/xdg/autostart

Jak to zrobić

  1. znajdź nazwę ekranu, który chcesz obrócić, uruchamiając xrandr. Wyprowadzi szereg wierszy, spośród tych kilku linii wyglądających jak:

    VGA-0 connected
    

    Daje to informacje o nazwach podłączonych ekranów.

  2. Wybierz ten, który chcesz obrócić, w moim przykładzie poniżej VGA-0
  3. Utwórz program uruchamiający za pomocą (np.) gedit:

    sudo -i gedit /etc/xdg/autostart/set_screens.desktop
    

    Wklej poniższy tekst do pliku:

    [Desktop Entry]
    Name=set_screens
    Exec=/bin/bash -c "sleep 10&&xrandr --output VGA-0 --rotate left"
    Type=Application
    

    zamień w wierszu:

    Exec=/bin/bash -c "sleep 10&&xrandr --output VGA-0 --rotate left"
    

    Ciąg: VGA-0według nazwy (obróconego) ekranu.

Ważne notatki

  • W linii

    Exec=/bin/bash -c "sleep 10&&xrandr --output VGA-0 --rotate left"
    

    Załączyłem sleep 10. Wynika to z tego, że czasami xrandrpolecenia psują się, jeśli uruchamiają się zbyt wcześnie, zanim komputer „ładuje się”. Być może musisz zwiększyć przerwę lub możesz spróbować ją pominąć. W tym poleceniu ekran obraca się po 10 sekundach od zalogowania dowolnego użytkownika.

  • Komenda:

    xrandr --output VGA-0 --rotate left
    

    obraca ekran w lewo, nie ma potrzeby, aby powiedzieć, że jeśli chcesz innego rodzaju obrotu, można wybrać jedną left, right, normal, inverted(patrz tutaj) .

Wyjaśnienie

Możesz uruchamiać polecenia podczas uruchamiania (faktycznie się zalogować), umieszczając .desktopplik (program uruchamiający) w ~/.config/autostart. Spowoduje to uruchomienie programu uruchamiającego tylko dla jednego użytkownika. Jeśli zrobisz to samo, ale umieścisz program uruchamiający /etc/xdg/autostart, polecenie będzie uruchamiane za każdym razem, gdy zaloguje się dowolny użytkownik, chyba że określony użytkownik wyłączy dla niego program uruchamiający w Dash> Aplikacje startowe

Dodatkowo możesz po prostu skopiować ~/.config/monitors.xmlplik lokalny , aby /var/lib/lightdm/monitors.xmlustawienia działały również na ekranie logowania.

Imo połączenie tego i powyższego rozwiązania (program uruchamiający w /etc/xdg) jest najłatwiejszym rozwiązaniem, aby osiągnąć dokładnie to, co chcesz zarówno dla ekranu logowania, jak i (dowolnego) użytkownika. Ponadto rozwiązanie programu uruchamiającego /etc/xdgmożna (bardzo) łatwo odwrócić lub zmienić na wypadek, gdyby trzeba było dokonać innej konfiguracji bez edytowania wielu plików na poziomie (każdego) użytkownika, ponieważ zarówno ustawieniami użytkownika, jak i ekranem logowania zarządza się wszyscy użytkownicy jednocześnie w dwóch prostych plikach.

Jacob Vlijm
źródło
To może działać - zmiana ustawień 10s po zalogowaniu, ale wolałbym wiedzieć, od czego są ustawione, i zacząć je dla wszystkich (i ekran logowania, który jest obecnie z boku).
mirams,
Dlaczego ktoś miałby to głosować?
Fabby
2

Chciałem tylko dodać komentarz dla każdego, kto zmaga się z podobnym problemem. Utknąłem z rozdzielczością mojego starego monitora (1280x1024) przy każdym logowaniu, ale ekran logowania i login użytkownika gościa używają poprawnej domyślnej wartości 1680x1050.

W ciągu ostatnich czterech miesięcy przeczytałem wiele postów, szukając odpowiedzi, czytając na xorg.conf, monitors.xml, lightdm i xrandr i innych sugestiach - ale niektóre zmiany konfiguracji są skomplikowane i niosą za sobą ryzyko uszkodzenia wyświetlacza całkowicie, więc skończyłem z użyciem GUI do ręcznej zmiany ustawień monitora przy każdym logowaniu.

Dzisiaj zrobiłem grep dla starej rozdzielczości w moim folderze .config.

grep -HrnIF '1280' .config | less

Pierwszym rezultatem był plik ~ / .config / autostart / xrandr.desktop zawierający ten plik,

Exec=xrandr -s 1280x1024 -r 75

więc właśnie przeniosłem plik z tego miejsca. I bingo, loguję się i otrzymuję domyślną rozdzielczość 1680x1050.

Zajęło mi to kilka godzin poszukiwań i nie mogłem znaleźć wystarczająco bliskiej odpowiedzi, więc zamieść tutaj, na wypadek, gdyby komuś się przydał.

MattB
źródło
Witamy w Ask Ubuntu. Dziękujemy za podzielenie się czterema miesiącami (upływem czasu) badań.
WinEunuuchs2Unix
Czytając to jeszcze raz, myślę, że prawdopodobnie utworzyłem ten plik xrandr.desktop dwa lata temu, aby obejść Ubuntu, zawsze domyślnie ustawiając podstawowe ustawienia monitora „Goldstar”, i to prawdopodobnie był problem z kompatybilnością z moją kartą wideo.
MattB
0

Możesz dodać coś do /etc/lightdm/lightdm.conf. Tutaj tworzymy skrypt, który używa xrandrpolecenia do skonfigurowania wyświetlaczy. Możesz użyć graficznego narzędzia RandR, aby utworzyć dla siebie polecenie, na przykład arandr. W moim przypadku skrypt wyglądałby następująco:

#!/bin/sh
xrandr --output DVI-I-1 --mode 1600x1200 --pos 0x0 --rotate left --output DVI-I-0 --off --output DP-3 --off --output DP-2 --off --output DP-1 --mode 1600x900 --pos 1200x700 --rotate normal --output DP-0 --off

Możesz umieścić ten skrypt w /usr/sharedowolnym miejscu. Twój skrypt może wyglądać na znacznie mniej skomplikowany, ponieważ dotyczy złożonej konfiguracji z dwoma monitorami. Następnie dodaj coś takiego:

session-setup-script=/usr/share/mycustomxrandr.sh

i:

display-setup-script=/usr/share/mycustomxrandr.sh

Upewnij się, że plik jest wykonywalny, więc:

chmod a+x mycustomxrandr.sh

session-setup-scriptBędzie ustawić wyświetlanie na po zalogowaniu się poprzez LightDM i display-setup-scriptbędzie zmieniać wyświetlane na ekranie logowania.

nixpower
źródło
Byłoby wspaniale, gdybyś mógł to wypróbować. Chciałbym sprawdzić, czy to zadziała.
nixpower
0

W moim systemie (Ubuntu 16.04) do ekranu logowania po prostu cpjako root (za pomocą sudo) nie działał. Może być również konieczne upewnienie się, że właścicielem / grupą monitorów.xml jest lightdm:lightdm.

sudo chown lightdm:lightdm /var/lib/lightdm/.config/monitors.xml
Zinsser
źródło