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?


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


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.


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


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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.