Zapisujesz ustawienia monitora?

16

Czy istnieje sposób na zapisanie ustawień mojego monitora? Mam zewnętrzny monitor w pracy, ale każdego ranka muszę go podłączać, przestawiać okna tak, aby były obok siebie i znajdowały się jedna nad drugą. Czy mogę to po prostu zapisać?

Oscar Godson
źródło

Odpowiedzi:

7

Krótka historia (czyli: rób to, co sugeruje Nicolas Bernaerts , ale oszczędzam ci szczegółów): konfiguracja monitorów jest faktycznie zapisana ~/.config/monitors.xml, ale nie jest stosowana podczas uruchamiania / logowania.

Kroki prowadzące do przezwyciężenia tego są następujące:

Zaloguj się przy niewłaściwej konfiguracji monitorów.

Usuń bieżącą konfigurację monitora:

cd .config
mv monitors.xml{,.bak}

Użyj aplikacji Displays , aby ustawić monitory według własnego uznania (mam jeden monitor boczny obrócony przeciwnie do ruchu wskazówek zegara). ustaw monitory według własnego uznania

Po naciśnięciu przycisku Zastosujmonitors.xml tworzony jest nowy .

Teraz pobierz i uruchom skrypt i program uruchamiający, które wymuszają konfigurację monitora na podstawie nowo utworzonego pliku konfiguracyjnego:

$ sudo wget -O /usr/local/sbin/update-monitor-position https://raw.githubusercontent.com/NicolasBernaerts/ubuntu-scripts/master/ubuntugnome/update-monitor-position
$ sudo chmod +x /usr/local/sbin/update-monitor-position
$ sudo wget -O /usr/share/applications/update-monitor-position.desktop https://raw.githubusercontent.com/NicolasBernaerts/ubuntu-scripts/master/ubuntugnome/update-monitor-position.desktop
$ sudo chmod +x /usr/share/applications/update-monitor-position.desktop

W tym momencie konfigurację monitorów można naprawić, uruchamiając aplikację aktualizacji pozycji monitorowania .

Jeśli chcesz, aby było to automatyczne, po prostu dodaj aplikację startową z następującymi wpisami:

  • Nazwa: Update Monitors Position
  • Komenda: update-monitor-position 5
  • Komentarz: Force monitors position 5 seconds after login

wprowadź opis zdjęcia tutaj

Alessandro Cuttin
źródło
1
Świetnie, pomogło. Dzięki! Czy jest to zgłoszenie błędu?
Ondra Žižka
2
Myślę, że to najlepsza odpowiedź. Zaktualizowałem skrypt, aby obsługiwał wiele profili: gist.github.com/relet/66a965cdf728e5278fbf52c9d1433be0 - po prostu skopiuj plik monitors.xml np. Do monitors-office.xml, jeśli chcesz uruchomić „update-monitor-position office”
relet
vanvugt: „Właściwie skorzystajmy z błędu 1292398, ponieważ jest to ten, który znajduje większość użytkowników.” bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1292398
FlipMcF 18.04.19
5

Konfiguracja wszystkich monitorów - podłączonych na gorąco lub nie - powinna być przechowywana $HOME/.config/monitors.xmlprzez xrandrwtyczkę, dla gnome-settings-daemonktórej faktycznie stosuje się konfigurację wykonaną w kapplecie Monitory.

Ponieważ wydaje się, że nie działa to poprawnie dla wszystkich, najwyraźniej gdzieś jest błąd. Urgh.

RAOF
źródło
Tak, i jak mówi Maco, jeśli wyłączę komputer i uruchomię go ponownie, pamięta, ale nie wtedy, gdy jest już włączony.
Oscar Godson,
4

Pierwsze trzy kroki, aby podłączyć monitor zewnętrzny tak, jak chcesz, a czwarte to zapisanie ustawień.

  1. Podłącz monitor zewnętrzny i sprawdź obsługiwaną rozdzielczość:

    xrandr -q
    
  2. Podaj następujące polecenie (spowoduje to wyłączenie monitora laptopa):

    xrandr --output LVDS1 --off --output TV1 --off --output VGA1 --mode 1280x1024 --pos 0x0 --rotate normal
    
  3. Jeśli chcesz włączyć zarówno laptop, jak i zewnętrzny:

    xrandr --output LVDS1 --mode yyyyXzzzz --pos 0x0 --rotate normal --output TV1 --off --output VGA1 --mode 1280x1024 --pos 0x0 --rotate normal
    

    (rrrrXzzzz - rozdzielczość twojego laptopa).

    Powyższa konfiguracja sklonuje twój ekran. Graj z „ --right-of/--left-of opcją ”, jeśli chcesz.

  4. Jeśli potrzebujesz tych ustawień podczas logowania, dodaj zaznaczenia /etc/X11/Xsession.d/45custom_xrandr-settings(może być konieczne ich utworzenie).

    xrandr |grep VGA1 | grep " connected " | if [ $? -eq 0 ]; then xrandr --output LVDS1 --off --output TV1 --off --output VGA1 --mode 1280x1024 --pos 0x0 --rotate normal  #Change the way u need ; fi
    
thonixx
źródło
2

W biurze mam 3 monitory na laptopie i 2 w domu. Dwa monitory biurowe są ustawione pionowo, podczas gdy inne monitory są w normalnej orientacji.

A. monitors.xml znajduje się w ~ / .config.

  1. Usuń to
  2. Ustaw wyświetlacz w konfiguracji biurowej
  3. Zmień nazwę właśnie utworzonej „monitors.xml” na „monitors-office.xml”.

B. Pobierz skrypt powłoki, „update-monitor-position”.

  1. Zmień definicję „MONITOR_XML” z „monitors.xml” na „monitors-office.xml”.

  2. Zapisz go jako „update-monitor-position-office”, w ścieżce wykonywalnej (/ usr / local / sbin /).

  3. Kliknij uprawnienie -> wykonywalne przez „Ja”.

C. Uzyskaj skrót na pulpicie „update-monitor-position.desktop”

  1. Zmień definicję „Exec”, „update-monitor-position” na
    „update-monitor-position-office”.
  2. Zapisz go jako „update-monitor-position-office.desktop”
  3. Kliknij uprawnienie -> wykonywalne przez „Ja”.

update-monitor-position-office.desktop:

[Desktop Entry]
Type=Application
Exec=update-monitor-position-office
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[en_US]=Office Monitors Position
Name=Office Monitors Position
Comment[en_US]=Force monitors position from monitor-office.xml
Comment=Force monitors position from monitor-office.xml
Icon=display

Skrypt powłoki, update-monitor-position-office

#!/bin/bash
# -------------------------------------------------
#  Get monitors configuration from monitor.xml and apply it for current user session.
#  In case of multiple definitions in monitor.xml only first one is used.
#
#  See http://bernaerts.dyndns.org/linux/74-ubuntu/309-ubuntu-dual-display-monitor-position-lost
#  for instructions
#
#  Parameters :
#    $1 : waiting time in sec. before forcing configuration (optional)
#
#  Revision history :
#    19/04/2014, V1.0 - Creation by N. Bernaerts
#    10/07/2014, V1.1 - Wait 5 seconds for X to fully initialize
#    01/09/2014, V1.2 - Correct NULL file bug (thanks to Ivan Harmady) and handle rotation
#    07/10/2014, V1.3 - Add monitors size and rate handling (idea from jescalante)
#    08/10/2014, V1.4 - Handle primary display parameter
#    08/12/2014, V1.5 - Waiting time in seconds becomes a parameter
# -------------------------------------------------

# monitor.xml path
MONITOR_XML="$HOME/.config/monitors-office.xml"

# get number of declared monitors
NUM=$(xmllint --xpath 'count(//monitors/configuration['1']/output)' $MONITOR_XML)

# loop thru declared monitors to create the command line parameters
for (( i=1; i<=$NUM; i++)); do
  # get attributes of current monitor (name and x & y positions)
  NAME=$(xmllint --xpath 'string(//monitors/configuration['1']/output['$i']/@name)' $MONITOR_XML 2>/dev/null)
  POS_X=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/x/text()' $MONITOR_XML 2>/dev/null)
  POS_Y=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/y/text()' $MONITOR_XML 2>/dev/null)
  ROTATE=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/rotation/text()' $MONITOR_XML 2>/dev/null)
  WIDTH=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/width/text()' $MONITOR_XML 2>/dev/null)
  HEIGHT=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/height/text()' $MONITOR_XML 2>/dev/null)
  RATE=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/rate/text()' $MONITOR_XML 2>/dev/null)
  PRIMARY=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/primary/text()' $MONITOR_XML 2>/dev/null)

  # if position is defined for current monitor, add its position and orientation to command line parameters
  [ -n "$POS_X" ] && PARAM_ARR=("${PARAM_ARR[@]}" "--output" "$NAME" "--pos" "${POS_X}x${POS_Y}" "--fbmm" "${WIDTH}x${HEIGHT}" "--rate" "$RATE" "--rotate" "$ROTATE")

  # if monitor is defined as primary, adds it to command line parameters
  [ "$PRIMARY" = "yes" ] && PARAM_ARR=("${PARAM_ARR[@]}" "--primary")
done

# if needed, wait for some seconds (for X to finish initialisation)
[ -n "$1" ] && sleep $1

# position all monitors
xrandr "${PARAM_ARR[@]}"
sójka
źródło
Hej @jey, odpowiedziałeś na to w styczniu 2018 r. (Podczas gdy skrypt Nicolasa ma 4 lata ... ). Czy mogę założyć, że nadal działa to w najnowszym Ubuntu 16.x / 18.x? - I: czy masz jakieś założenia, czy działałoby to również w Ubuntu- MATE ? (Widzę w moim systemie napisane monitors.xml ...)
Frank Nocke,
Frank, mój mówi „16.04.5 LTS”. Jeden punkt, po „dist-upgrade” musiałem przejść przez proces, a następnie uruchomić ponownie. „Ustawienia systemu -> Wyświetlacze” działają śmiesznie w moim systemie. Nie jestem w trybie, aby spróbować 18.x. Dzięki,
jay
1

Ubuntu 12.04 pamięta ustawienia monitora podłączanego podczas pracy. Są one jednak stosowane tylko po ponownym otwarciu konfiguracji systemu> Wyświetla aplet. Tak jest przynajmniej w moim przypadku i jest to zdecydowanie błąd.

Jens
źródło
1

Odpowiedź Jaya prawie dla mnie zadziałała, ale musiałem zrobić kilka dodatkowych kroków. Zrobiłbym to jako komentarz do jego odpowiedzi, ale nie mam reputacji.

W pliku update-monitor-position-office:

  1. Moja wersja bash (4.3.48) narzekała na brak spacji po „i ++” w wierszu 28.
  2. Moja wersja xrandr (1.5) nie rozpoznała opcji „--fbmm” w linii 40. Musiałem zmienić to na „--mode”. Trudno było to zdiagnozować, ponieważ xrandr tak naprawdę nie dał mi błędu, po prostu wykonał polecenie bez robienia czegokolwiek.
Chris
źródło
1

Wolę uruchomić ten skrypt z terminala, ponieważ otwieram go po zalogowaniu.

Pierwsze logowanie przy złej konfiguracji - monitory nieprawidłowo umieszczone:

cd ~/.config
mv ~/.config/monitors.xml{,.bak}

Teraz ustaw monitory z ustawieniami systemowymi, aby utworzyć nowy ~/.config/monitors.xml plik z odpowiednimi ustawieniami.

Skopiuj poprawny skrypt Nicolasa Bernaertsa z mojego repozytorium: https://raw.githubusercontent.com/alextomko/monitors/master/monitors i umieść go na ścieżce do uruchomienia z terminala.

$ ls -l ~/bin
# if you don't have this directory then create it - do not be logged in as root here.

$ mkdir /home/$USER/bin

$ echo $PATH
# should show /home/username/bin if the dir existed or if you had to create.

$ wget -P ~/bin https://raw.githubusercontent.com/alextomko/monitors/master/monitors
$ chmod +x ~/bin/monitors

# Log out, lock, reboot or whatever it takes to make monitor settings lost for you and run the script.
$ monitors
Alex Tomko
źródło
0

Nie, nie ma możliwości zapisania konfiguracji na monitorach podłączanych podczas pracy. Jeśli podłączysz się przed uruchomieniem, GNOME powinno zapamiętać konfigurację przy każdym rozruchu dla poszczególnych urządzeń (tj. Połączenie z monitorem w pracy, a nie w domu).

maco
źródło
Cholera. Ok. Czy istnieje aplikacja innej firmy, niż można to zrobić? Wiem, że Mac OS X to robi i Windows 7 (z tego, co próbowałem z małym doświadczeniem z W7).
Oscar Godson,
Konfiguracja monitora GNOME powinna również zapisywać te informacje dla monitorów podłączanych podczas pracy. To mi odpowiada.
RAOF,
RAOF: dziwne, ponieważ dyskusja na liście mailingowej Ubuntu-devel na początku tego tygodnia powiedziała, że ​​tak nie jest.
maco
konfiguracja jest faktycznie zapisana ~/.config/monitors.xml, ale nie jest stosowana podczas uruchamiania
Alessandro Cuttin