กำลังบันทึกการตั้งค่าจอภาพ?


16

มีวิธีบันทึกการตั้งค่าจอภาพของฉันหรือไม่? ฉันมีจอมอนิเตอร์ภายนอกในที่ทำงาน แต่ทุกเช้าฉันต้องเสียบมันเข้าไปใหม่จัดเรียงหน้าต่างใหม่จากการอยู่เคียงข้างกันเพื่ออยู่ด้านบนของกันและกัน ฉันจะบันทึกได้ไหม

คำตอบ:


7

เรื่องสั้นสั้น ๆ (นั่นคือ: ทำตามสิ่งที่Nicolas Bernaertsแนะนำ แต่ฉันให้รายละเอียดแก่คุณ): การกำหนดค่าจอภาพถูกบันทึกไว้จริง ๆ~/.config/monitors.xmlแต่มันไม่ได้ถูกนำไปใช้เมื่อเริ่มต้น / เข้าสู่ระบบ

ขั้นตอนในการเอาชนะสิ่งนี้คือ:

เข้าสู่ระบบด้วยการกำหนดค่าจอภาพที่ไม่ถูกต้อง

ลบการกำหนดค่าจอภาพปัจจุบัน:

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

ใช้แอปพลิเคชั่นแสดงผลเพื่อจัดเรียงจอภาพตามที่คุณต้องการ (ฉันมีจอภาพด้านเดียวหมุนทวนเข็มนาฬิกา) จัดเรียงจอภาพของคุณตามที่คุณต้องการ

เมื่อคุณกดสมัครใหม่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 - เพียงแค่คัดลอก monitors.xml ของคุณเพื่อตรวจสอบเช่น-office.xml ถ้าคุณต้องการที่จะทำงาน "สำนักงานปรับปรุงการตรวจสอบตำแหน่ง"
relet

vanvugt: "จริงๆแล้วเรามาใช้ bug 1292398 เพราะเป็นสิ่งที่ผู้ใช้ส่วนใหญ่กำลังค้นหา" bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1292398
FlipMcF

5

การกำหนดค่าสำหรับการตรวจสอบของคุณทั้งหมด - ร้อนเสียบหรือไม่ - ควรเก็บไว้ใน$HOME/.config/monitors.xmlโดยxrandrปลั๊กอินสำหรับgnome-settings-daemonซึ่งเป็นสิ่งที่จริงใช้การตั้งค่าที่คุณทำในจอภาพ capplet

เนื่องจากดูเหมือนว่าสิ่งนี้จะทำงานไม่ถูกต้องสำหรับทุกคน Urgh


ใช่แล้วอย่างที่ maco บอกว่าถ้าฉันปิดเครื่องคอมพิวเตอร์และบู๊ตเครื่องมันก็จำได้ แต่ก็ไม่ได้เมื่อมันเปิดอยู่
ออสการ์ Godson

4

สามขั้นตอนแรกในการเชื่อมต่อจอภาพภายนอกในแบบที่คุณต้องการและอันดับที่ 4 คือการบันทึกการตั้งค่า

  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. monitor.xml อยู่ใน ~ / .config

  1. ลบมัน
  2. ตั้งค่าการแสดงผลที่การตั้งค่าสำนักงาน
  3. เปลี่ยนชื่อเพิ่งสร้าง "จอภาพ.xml" เป็น "จอภาพ-office.xml"

B. รับเชลล์สคริปต์ "update-monitor-position"

  1. เปลี่ยนนิยาม "MONITOR_XML", "จอภาพ.xml" เป็น "จอภาพ-office.xml"

  2. บันทึกเป็น "update-monitor-position-office", ในพา ธ ที่ปฏิบัติการได้ (/ usr / local / sbin /)

  3. แตะที่สิทธิ์ -> เรียกใช้โดย "ฉัน"

C. รับทางลัดบนเดสก์ท็อป "update-monitor-position.desktop"

  1. เปลี่ยนคำจำกัดความ "Exec", "update-monitor-position" เป็น
    "update-monitor-position-office"
  2. บันทึกเป็น "update-monitor-position-office.desktop"
  3. แตะที่สิทธิ์ -> เรียกใช้โดย "ฉัน"

ปรับปรุงจอภาพตำแหน่ง 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

Shell script, 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[@]}"

สวัสดี @jey คุณตอบคำถามนี้ในเดือนมกราคม 2018 (ในขณะที่ Nicolas script มีอายุ 4 ปี ... ) ฉันขอสมมติว่ามันยังใช้งานได้กับ Ubuntu 16.x / 18.x ล่าสุดหรือไม่ - และ: คุณมีสมมติฐานใด ๆ ถ้ามันจะทำงานภายใต้ Ubuntu- MATEเช่นกัน? (ฉันเห็นว่าจอภาพ.
xml

แฟรงค์ฉันพูดว่า "16.04.5 LTS" จนถึงจุดหนึ่งหลังจาก "dist-upgrade" ฉันต้องผ่านกระบวนการและทำการรีบูต "การตั้งค่าระบบ -> การแสดงผล" ใช้งานได้ดีบนระบบของฉัน ฉันไม่ได้อยู่ในโหมดลอง 18.x ขอบคุณ
jay

1

Ubuntu 12.04 จดจำการตั้งค่าจอภาพแบบเสียบปลั๊กได้ แต่จะมีผลเฉพาะเมื่อคุณเปิดการกำหนดค่าระบบอีกครั้ง> แสดงแอปเพล็ต นี่เป็นกรณีสำหรับฉันอย่างน้อยและนี่เป็นข้อผิดพลาดอย่างแน่นอน


1

คำตอบของเจย์เกือบจะได้ผลสำหรับฉัน แต่ฉันต้องทำสองขั้นตอนเพิ่มเติม ฉันจะแสดงความคิดเห็นต่อคำตอบของเขา แต่ฉันไม่มีชื่อเสียง

ในไฟล์ update-monitor-position-office:

  1. รุ่นของฉันทุบตี (4.3.48) บ่นเกี่ยวกับการขาดช่องว่างตาม "i ++" ในบรรทัด 28
  2. รุ่น xrandr ของฉัน (1.5) ไม่รู้จักตัวเลือก "--fbmm" ที่บรรทัดที่ 40 ฉันต้องเปลี่ยนเป็น "- โหมด" นี่เป็นการยากที่จะวินิจฉัยเพราะ xrandr ไม่ได้ให้ข้อผิดพลาดกับฉันจริง ๆ มันแค่เรียกใช้งานคำสั่งโดยไม่ทำอะไรเลย

1

ฉันต้องการเรียกใช้สคริปต์นี้จากเทอร์มินัลตั้งแต่ฉันเปิดหนึ่งครั้งหลังจากเข้าสู่ระบบ

การเข้าสู่ระบบครั้งแรกด้วยการกำหนดค่าที่ไม่ดี - จอภาพไม่ถูกต้อง:

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

ตอนนี้ตั้งค่าจอภาพของคุณด้วยการตั้งค่าระบบเพื่อสร้าง~/.config/monitors.xmlไฟล์ใหม่ด้วยการตั้งค่าที่เหมาะสม

คัดลอกสคริปต์คงที่ของ Nicolas Bernaerts จาก repo ของฉัน: 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

ไม่ไม่มีวิธีบันทึกการกำหนดค่าบนจอภาพแบบเสียบปลั๊ก ถ้าคุณต่อสายก่อนบู๊ต GNOME ควรจดจำการกำหนดค่าในการบู๊ตแต่ละตัวแบบต่ออุปกรณ์ (นั่นคือการเชื่อมต่อกับจอภาพของคุณในที่ทำงานเทียบกับที่บ้าน)


เอาละโอเค มีแอปพลิเคชันบุคคลที่สามที่สามารถทำได้หรือไม่ ฉันรู้ว่า Mac OS X ทำสิ่งนี้และ Windows 7 (จากสิ่งที่ฉันได้ลองด้วยประสบการณ์เล็กน้อยที่ฉันมีกับ W7)
ออสการ์ Godson

การกำหนดค่าจอภาพ GNOME ควรบันทึกข้อมูลนี้สำหรับจอภาพฮอตปลั๊กอีกด้วย มันทำเพื่อฉัน
RAOF

RAOF: แปลกเนื่องจากการสนทนาในรายชื่อผู้รับจดหมาย ubuntu-devel เมื่อต้นสัปดาห์ที่ผ่านมาบอกว่ามันไม่ได้
maco

การกำหนดค่าจะถูกบันทึกจริง ๆ~/.config/monitors.xmlแต่มันจะไม่ถูกนำมาใช้เมื่อเริ่มต้น
Alessandro Cuttin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.