मॉनिटर सेटिंग सहेज रहा है?


16

क्या मेरी मॉनिटर सेटिंग सहेजने का कोई तरीका है? मेरे पास काम पर एक बाहरी मॉनिटर है, लेकिन प्रत्येक सुबह मुझे इसे प्लग करना पड़ता है, खिड़कियों को एक दूसरे के शीर्ष पर होने की ओर से फिर से व्यवस्थित करना। क्या मैं इसे बचा सकता हूं?

जवाबों:


7

लंबी कहानी छोटी (यह है: निकोलस बर्नर्ट्स जो सुझाव देते हैं, वह करें, लेकिन मैं आपको विवरणों को छोड़ देता हूं): मॉनिटर कॉन्फ़िगरेशन वास्तव में सहेजा जाता है ~/.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 kaiž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.xml लिए xrandrप्लगइन द्वारा संग्रहीत किया जाना चाहिए gnome-settings-daemon, जो कि वास्तव में आपके द्वारा मॉनिटर किए गए कॉन्फ़िगरेशन पर लागू होता है।

चूंकि ऐसा लगता है कि यह सभी के लिए ठीक से काम नहीं कर रहा है, इसलिए स्पष्ट रूप से कहीं न कहीं एक बग है। Urgh।


हाँ, और जैसा कि मैको कहता है, अगर मैं कंप्यूटर को बंद कर देता हूं और इसे वापस बूट करता हूं, तो यह याद रहता है, तब नहीं जब यह पहले से ही चालू हो।
ऑस्कर गोडसन

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. मॉनिटर। Xml ~ / .config में है।

  1. इसे मिटाओ
  2. कार्यालय सेटअप में प्रदर्शन सेट करें
  3. नाम "मॉनिटर.ऑफिस.एक्सएमएल" के लिए "मॉनिटर.एक्सएमएल" बनाया।

B. शेल स्क्रिप्ट प्राप्त करें, "अपडेट-मॉनिटर-पोजिशन"।

  1. "MONITOR_XML" परिभाषा, "मॉनिटर.एक्सएमएल" को "मॉनिटर-ऑफिस.एक्सएमएल" में बदलें।

  2. निष्पादन योग्य पथ (/ usr / स्थानीय / sbin /) में इसे "अपडेट-मॉनिटर-पोज़िशन-ऑफ़िस" के रूप में सहेजें।

  3. अनुमति को स्पर्श करें -> "मुझे" द्वारा निष्पादन योग्य।

सी। डेस्कटॉप शॉर्टकट प्राप्त करें, "अपडेट-मॉनीटर-पोजिशन। शेड्सकोड"

  1. "एक्ज़ेक" परिभाषा, "अपडेट-मॉनिटर-पोज़िशन" को
    "अपडेट-मॉनीटर-पोज़िशन-ऑफ़िस" में बदलें ।
  2. इसे "अपडेट-मॉनीटर-पोजीशन-ऑफिस. शेड्सकोड" के रूप में सहेजें
  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

शेल स्क्रिप्ट, अद्यतन-मॉनिटर-स्थिति-कार्यालय

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

अरे @ जी, आपने इसका जवाब जनवरी 2018 में दिया। (जबकि निकोलस की स्क्रिप्ट 4 साल पुरानी है ... )। क्या मुझे लगता है कि यह अभी भी हाल ही के Ubuntu 16.x / 18.x के तहत काम कर रहा है? - और क्या आपके पास कोई धारणा है, अगर यह उबंटू- मेट के तहत भी काम करेगा ? (मुझे मेरे सिस्टम पर मॉनिटर।
Xml

फ्रैंक, मेरा कहना है "16.04.5 LTS"। एक बिंदु, "डिस्ट-अपग्रेड" के बाद, मुझे प्रक्रिया से गुजरना पड़ा, और फिर रिबूट किया गया। "सिस्टम सेटिंग्स -> प्रदर्शित करता है" मेरे सिस्टम पर अजीब काम करता है। मैं 18.x की कोशिश करने के लिए मोड में नहीं हूं। धन्यवाद,
जय

1

उबंटू 12.04 हॉट-प्लग किए गए मॉनिटर सेटिंग्स को याद करता है। लेकिन वे केवल तभी लागू होते हैं जब आप सिस्टम कॉन्फ़िगरेशन> एप्लेट प्रदर्शित करते हैं। मेरे लिए यह मामला है, कम से कम, और यह निश्चित रूप से एक बग है।


1

jay का जवाब मेरे लिए लगभग काम कर गया, लेकिन मुझे कुछ अतिरिक्त कदम करने की जरूरत थी। मैं उनके जवाब पर यह टिप्पणी करूंगा लेकिन मेरे पास प्रतिष्ठा नहीं है।

फ़ाइल अपडेट-मॉनिटर-पोज़िशन-ऑफ़िस में:

  1. बैश के मेरे संस्करण (4.3.48) ने लाइन 28 पर "i ++" के बाद एक स्थान की कमी के बारे में शिकायत की।
  2. Xrandr (1.5) के मेरे संस्करण ने लाइन पर "--fbmm" विकल्प को नहीं पहचाना। मुझे इसे "--mode" में बदलना पड़ा। यह निदान करना कठिन था क्योंकि एक्सरैंडर ने वास्तव में मुझे कोई त्रुटि नहीं दी, यह सिर्फ कुछ भी किए बिना कमांड को निष्पादित करता है।

1

मैं इस स्क्रिप्ट को टर्मिनल से चलाना पसंद करता हूं क्योंकि मैं लॉगिन के बाद सबसे पहले खोलता हूं।

पहले खराब कॉन्फ़िगरेशन के साथ लॉगिन - मॉनिटर को सही तरीके से नहीं रखा गया है:

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

अब ~/.config/monitors.xmlउचित सेटिंग के साथ एक नई फ़ाइल बनाने के लिए सिस्टम मॉनिटर के साथ अपने मॉनिटर सेट करें ।

मेरे रेपो से निकोलस बर्नैर्ट्स की निर्धारित स्क्रिप्ट की प्रतिलिपि बनाएँ: 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

नहीं, हॉट-प्लग किए गए मॉनिटर पर कॉन्फ़िगरेशन को बचाने का कोई तरीका नहीं है। यदि आप बूट करने से पहले प्लग करते हैं, तो गनोम को प्रत्येक डिवाइस पर प्रति बूट आधार पर विन्यास को याद रखना चाहिए (यानी, घर पर काम पर अपने मॉनिटर से कनेक्ट करना)।


धिक्कार है, ठीक है। क्या कोई थर्ड पार्टी एप्लिकेशन ऐसा कर सकता है? मुझे पता है कि मैक ओएस एक्स ऐसा करता है, और विंडोज 7 (मैंने W7 के साथ जो थोड़ा अनुभव किया है, उसके साथ मैंने कोशिश की है)।
ऑस्कर गोडसन

GNOME मॉनिटर कॉन्फ़िगरेशन को हॉटप्लग किए गए मॉनिटरों के लिए भी इस जानकारी को सहेजना चाहिए। यह मेरे लिए करता है।
राफ्ट

RAOF: अजीब है, क्योंकि इस हफ्ते की शुरुआत में ubuntu-devel मेलिंग सूची पर चर्चा ने कहा कि यह नहीं करता है।
मैको

कॉन्फ़िगरेशन वास्तव में सहेजा गया है ~/.config/monitors.xml, लेकिन यह स्टार्टअप पर लागू नहीं होता है
एलेसेंड्रो क्यूटिन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.