답변:
간단히 말해서 (즉 , 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
모든 모니터에 대한 구성 (핫 플러그 여부 에 관계없이)은 에 대한 플러그인에 저장 해야 합니다. $HOME/.config/monitors.xml
이 xrandr
플러그인 gnome-settings-daemon
은 모니터 capplet에서 구성을 실제로 적용합니다.
이것이 모든 사람에게 제대로 작동하지 않는 것 같으므로 어딘가에 버그가 있습니다. 어.
외부 모니터를 원하는 방식으로 연결하는 첫 3 단계는 설정을 저장하는 것입니다.
외부 모니터를 연결하고 지원되는 해상도를 확인하십시오 :
xrandr -q
다음 명령을 입력하십시오 (노트북 모니터가 비활성화 됨).
xrandr --output LVDS1 --off --output TV1 --off --output VGA1 --mode 1280x1024 --pos 0x0 --rotate normal
랩톱과 외부를 모두 사용하려는 경우 :
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
"옵션으로 재생하십시오 .
로그인하는 동안이 설정이 필요한 경우 체크인을 추가하십시오 /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
사무실에서는 랩톱에 3 대의 모니터가 있고 집에 2 대의 모니터가 있습니다. 사무용 모니터 중 두 대는 수직으로 설정되어 있고 다른 모니터는 정상 방향입니다.
A. monitors.xml은 ~ / .config에 있습니다.
B. "update-monitor-position"쉘 스크립트를 얻는다.
"MONITOR_XML"정의 "monitors.xml"을 "monitors-office.xml"로 변경하십시오.
실행 경로 (/ usr / local / sbin /)에 "update-monitor-position-office"로 저장하십시오.
C. 바탕 화면 바로 가기, "update-monitor-position.desktop"가져 오기
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[@]}"
제이의 대답은 거의 나를 위해 일했지만 몇 가지 추가 단계를 수행해야했습니다. 나는 이것을 그의 대답에 대해 논평하고 싶지만 평판이 없다.
update-monitor-position-office 파일에서 :
로그인 후 먼저 열어서 터미널에서이 스크립트를 실행하는 것을 선호합니다.
잘못된 구성으로 처음 로그인-모니터가 올바르게 배치되지 않았습니다.
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
아니요, 핫 플러그 된 모니터에 구성을 저장할 수있는 방법이 없습니다. 부팅하기 전에 꽂으면 그놈은 각 부팅마다 장치별로 구성을 기억해야합니다 (즉, 직장에서 모니터로 집에 연결).
~/.config/monitors.xml
되지만 시작시 적용되지 않습니다.