모니터 설정을 저장 하시겠습니까?


16

모니터 설정을 저장하는 방법이 있습니까? 나는 직장에서 외부 모니터를 가지고 있지만 매일 아침에 플러그를 꽂고 창문을 나란히 놓고 서로 위에 놓으십시오. 이것을 저장할 수 있습니까?

답변:


7

간단히 말해서 (즉 , Nicolas Bernaerts가 제안한 것을 수행 하지만 세부 사항을 아끼지 마십시오 ) : 모니터 구성은 실제로에 저장 ~/.config/monitors.xml되지만 시작 / 로그인에는 적용되지 않습니다.

이를 극복하기위한 단계는 다음과 같습니다.

잘못된 모니터 구성으로 로그인하십시오.

현재 모니터 구성을 제거하십시오.

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

디스플레이 응용 프로그램을 사용하여 원하는대로 모니터를 배열하십시오 (한 쪽 모니터를 시계 반대 방향으로 회전했습니다). 당신이 원하는대로 모니터를 정렬

Apply 를 누르면 새로운 monitors.xml것이 생성됩니다.

이제 새로 작성된 구성 파일을 기반으로 모니터 구성을 강제 실행하는 스크립트 및 실행기를 다운로드하여 실행하십시오.

$ 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

이 시점에서 업데이트 모니터 위치 응용 프로그램 을 시작하여 모니터 구성을 수정할 수 있습니다 .

이것을 자동으로하려면 다음과 같이 시작 응용 프로그램을 추가하십시오.

  • 이름: Update Monitors Position
  • 명령: update-monitor-position 5
  • 논평: Force monitors position 5 seconds after login

여기에 이미지 설명을 입력하십시오


1
큰 도움이되었습니다. 감사! 이것에 대한 버그 리포트가 있습니까?
Ondra Žižka


2
이것이 가장 좋은 대답이라고 생각합니다. 나는 여러 프로필을 지원하기 위해 스크립트를 업데이트 : gist.github.com/relet/66a965cdf728e5278fbf52c9d1433be0을 - 당신은 "업데이트 모니터 위치 사무소"를 실행하려면 단지 예를 들어 모니터-office.xml에 monitors.xml 복사
relet

vanvugt : "실제로, 대부분의 사용자가 찾는 버그 1292398을 사용합시다." bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1292398
FlipMcF

5

모든 모니터에 대한 구성 (핫 플러그 ​​여부 에 관계없이)은 에 대한 플러그인에 저장 해야 합니다. $HOME/.config/monitors.xmlxrandr플러그인 gnome-settings-daemon은 모니터 capplet에서 구성을 실제로 적용합니다.

이것이 모든 사람에게 제대로 작동하지 않는 것 같으므로 어딘가에 버그가 있습니다. 어.


그래, maco가 말했듯이 컴퓨터를 종료하고 다시 부팅하면 이미 켜져있을 때가 아니라 기억합니다.
Oscar Godson

4

외부 모니터를 원하는 방식으로 연결하는 첫 3 단계는 설정을 저장하는 것입니다.

  1. 외부 모니터를 연결하고 지원되는 해상도를 확인하십시오 :

    xrandr -q
    
  2. 다음 명령을 입력하십시오 (노트북 모니터가 비활성화 됨).

    xrandr --output LVDS1 --off --output TV1 --off --output VGA1 --mode 1280x1024 --pos 0x0 --rotate normal
    
  3. 랩톱과 외부를 모두 사용하려는 경우 :

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

    (yyyyXzzzz-노트북 해상도)

    위의 구성은 화면을 복제합니다. 원하는 경우 " --right-of/ --left-of"옵션으로 재생하십시오 .

  4. 로그인하는 동안이 설정이 필요한 경우 체크인을 추가하십시오 /etc/X11/Xsession.d/45custom_xrandr-settings(생성해야 할 수도 있음).

    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
    

2

사무실에서는 랩톱에 3 대의 모니터가 있고 집에 2 대의 모니터가 있습니다. 사무용 모니터 중 두 대는 수직으로 설정되어 있고 다른 모니터는 정상 방향입니다.

A. monitors.xml은 ~ / .config에 있습니다.

  1. 삭제
  2. 사무실 설정시 디스플레이 설정
  3. 방금 생성 한 "monitors.xml"의 이름을 "monitors-office.xml"로 바꿉니다.

B. "update-monitor-position"쉘 스크립트를 얻는다.

  1. "MONITOR_XML"정의 "monitors.xml"을 "monitors-office.xml"로 변경하십시오.

  2. 실행 경로 (/ usr / local / sbin /)에 "update-monitor-position-office"로 저장하십시오.

  3. "Me"로 권한-> 실행 파일을 터치합니다.

C. 바탕 화면 바로 가기, "update-monitor-position.desktop"가져 오기

  1. "실행"정의, "update-monitor-position"을
    "update-monitor-position-office"로 변경하십시오.
  2. "update-monitor-position-office.desktop"으로 저장하십시오.
  3. "Me"로 권한-> 실행 파일을 터치합니다.

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

쉘 스크립트, 업데이트 모니터 위치 사무실

#!/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[@]}"

안녕하세요 @jey, 2018 년 1 월에이 질문에 답변했습니다. (Nicolas 스크립트 는 4 살이 지만 ... ) 이것이 최근 우분투 16.x / 18.x에서 여전히 작동한다고 가정 할 수 있습니까? – 그리고 : 우분투 메이트 에서도 작동한다면 어떤 가정이 있습니까? (내 시스템에서 monitors.xml을
보았습니다

프랭크는 "16.04.5 LTS"라고 말합니다. 한 가지 점은 "dist-upgrade"후에 프로세스를 거친 다음 다시 부팅해야했습니다. "시스템 설정-> 디스플레이"가 내 시스템에서 재미있게 작동합니다. 18.x를 시도하는 모드가 아닙니다. 감사합니다
jay

1

Ubuntu 12.04는 핫 플러그 ​​된 모니터 설정을 기억합니다. 그러나 시스템 구성> 디스플레이 애플릿을 다시 열 때만 적용됩니다. 이것은 적어도 나를위한 경우이며, 이것은 분명히 버그입니다.


1

제이의 대답은 거의 나를 위해 일했지만 몇 가지 추가 단계를 수행해야했습니다. 나는 이것을 그의 대답에 대해 논평하고 싶지만 평판이 없다.

update-monitor-position-office 파일에서 :

  1. 내 버전의 bash (4.3.48)는 28 번째 줄의 "i ++"다음에 공백이 부족하다고 불평했습니다.
  2. 내 버전의 xrandr (1.5)가 40 행의 "--fbmm"옵션을 인식하지 못했습니다. 이것을 "--mode"로 변경해야했습니다. xrandr가 실제로 오류를주지 않았기 때문에 진단하기가 어려웠으며 아무것도하지 않고 명령을 실행했습니다.

1

로그인 후 먼저 열어서 터미널에서이 스크립트를 실행하는 것을 선호합니다.

잘못된 구성으로 처음 로그인-모니터가 올바르게 배치되지 않았습니다.

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

이제 시스템 설정으로 모니터를 설정하여 ~/.config/monitors.xml적절한 설정 으로 새 파일 을 만듭니다 .

내 저장소에서 Nicolas Bernaerts의 고정 스크립트를 복사 하십시오 : https://raw.githubusercontent.com/alextomko/monitors/master/monitors 터미널에서 실행할 경로에 넣으십시오.

$ 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

0

아니요, 핫 플러그 ​​된 모니터에 구성을 저장할 수있는 방법이 없습니다. 부팅하기 전에 꽂으면 그놈은 각 부팅마다 장치별로 구성을 기억해야합니다 (즉, 직장에서 모니터로 집에 연결).


젠장 이 작업을 수행 할 수있는 타사 응용 프로그램이 있습니까? 나는 Mac OS X이 이것을하고 Windows 7 (W7에 대한 작은 경험으로 시도한 것)을 알고 있습니다.
Oscar Godson

그놈 모니터 구성은 핫 플러그 ​​모니터에 대해서도이 정보를 저장해야합니다. 그것은 나를 위해합니다.
RAOF

RAOF : 이상한데, 이번 주 초 우분투 개발 메일 링리스트에 대한 토론이 그렇지 않다고 말했기 때문입니다.
maco

구성은 실제로에 저장 ~/.config/monitors.xml되지만 시작시 적용되지 않습니다.
Alessandro Cuttin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.