मेरे लैपटॉप डॉक के साथ मॉनिटर को स्वचालित रूप से कैसे स्विच करें


11

मेरे पास एक Dell परिशुद्धता M4300 है, जिसमें डेल डॉक PRO1X उबंटू नेट्टी चल रहा है।

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

अगर मैं लैपटॉप को रिबूट करता हूं तो यह सही सेटअप का चयन करेगा लेकिन यह स्वचालित रूप से उबंटू चलाने के साथ मॉनिटर नहीं बदलेगा।

मेरा Xorg.conf

जवाबों:


10

डॉक / अनडॉक लिपियों

मैंने आखिरकार एक पूरी स्क्रिप्ट सेटअप को एक साथ रखा है जो मेरी डॉक स्थिति का पता लगाएगा और मॉनिटर को स्वचालित रूप से स्विच करेगा।

पहली बात मैंने अपने Xorg.conf से छुटकारा पाने के लिए किया क्योंकि यह अधिक मुद्दों का कारण बनता है जो इसे हल करता है। चूंकि मैं एक एनवीडिया कार्ड का उपयोग कर रहा हूं, इसलिए मैंने अंततः पाया कि डिस्पर का उपयोग करना सबसे अच्छा तरीका था। मैंने पहले ही इसकी छूट दे दी थी क्योंकि इसके मानक कमांड मेरे ड्यूलव्यू सेटअप को प्राप्त नहीं कर सकते थे, लेकिन फिर मैंने पाया कि मैं डिस्प्रेटर के साथ उपयोग करने के लिए एक कस्टम मेटामोड बना सकता हूं।

कस्टम मेटामोड बनाने के लिए मैंने Xorg.conf में संग्रहीत मानों का उपयोग पिछले परीक्षण के साथ nv-control-dpy और xrandr के साथ एक गाइड के रूप में किया। यह metamode और अन्य TwinView मूल्यों एक फ़ाइल के माध्यम से disper को पारित किया जा सकता है कि करने के लिए जोड़ा गया था stdin

कारण का उपयोग करने के TwinView मैं जरूरत के साथ अलग-अलग आकार पर नज़र रखता है होने के लिए XCreateMouseVoid , जिसका विवरण सवाल

नीचे उनकी सामग्री के साथ स्क्रिप्ट और फ़ाइलों का पूर्ण विराम है।


स्क्रिप्ट

  1. XCreateMouseVoid स्क्रिप्ट बनाएं:

    स्क्रिप्ट का नाम: ~/.mousevoid

    #!/bin/bash
    echo "Mouse Void"
    /opt/XCreateMouseVoid/XCreateMouseVoid 0 1112 1280 88 &
    /opt/XCreateMouseVoid/XCreateMouseVoid 0 0 1280 88 &
    

    chmod +x ~/.mousevoid

  2. डिस्क सेटिंग फ़ाइल बनाएँ:

    फ़ाइल का नाम: ~/.disperDocked

    backend: nvidia
    associated displays: CRT-0, DFP-0, DFP-1
    metamode: CRT-0: 1280x1024_60 @1280x1024 +0+88, DFP-1: 1920x1200 @1920x1200 +1280+0
    scaling: default, default, stretched
    xinerama info order: DFP-1, CRT-0, DFP-0
    
  3. निर्यात dbus सत्र स्क्रिप्ट बनाएँ:

    स्क्रिप्ट का नाम: ~/.export_x_info

    #!/bin/bash
    # Export the dbus session address on startup so it can be used by any other environment
    sleep 5
    touch $HOME/.Xdbus
    chmod 600 $HOME/.Xdbus
    env | grep DBUS_SESSION_BUS_ADDRESS > $HOME/.Xdbus
    echo 'export DBUS_SESSION_BUS_ADDRESS' >> $HOME/.Xdbus
    # Export XAUTHORITY value on startup so it can be used by cron
    env | grep XAUTHORITY >> $HOME/.Xdbus
    echo 'export XAUTHORITY' >> $HOME/.Xdbus
    

    केवल उपयोगकर्ता निष्पादन योग्य पर सेट करें: chmod 700 ~/.export_x_info

    फिर इसे स्टार्टअप एप्लिकेशन में डालें:

    Name: X Environment Variables
    Command: /home/your_user/.export_x_info
    

    जब तक आप पुनः आरंभ नहीं करते हैं, आपको .Xdbus फ़ाइल बनाने के लिए ~ / .export_x_info चलाने की आवश्यकता है

  4. एक गोदी घटना के साथ चलने वाले udv नियम बनाएँ:

    स्क्रिप्ट का नाम: /etc/udev/rules.d/81-dell-dock.rules

    KERNEL=="dock.0", ACTION=="change", RUN+="/usr/local/sbin/dell-dock"

    chmod +x /etc/udev/rules.d/81-dell-dock.rules

  5. Udev नियम से जुड़ी स्क्रिप्ट बनाएँ:

    स्क्रिप्ट का नाम: /usr/local/sbin/dell-dock

    #!/bin/sh
    # wait for the dock state to change
    sleep 0.5
    DOCKED=$(cat /sys/devices/platform/dock.0/docked)
    case "$DOCKED" in
       "0")
           echo "Run UnDocking Script..."
            /usr/local/sbin/undock
            ;;
        "1") 
            echo "Run Docking Script..."
            /usr/local/sbin/dock
            ;;
    esac
    exit 0
    

    chmod +x /usr/local/sbin/dell-dock

  6. अनडॉक स्क्रिप्ट बनाएं ( अपने उपयोगकर्ता नाम से मिलान करने के लिए अपने_उज़र को बदलें ):

    स्क्रिप्ट का नाम: /usr/local/sbin/undock

    #!/bin/bash
    USER=your_user
    export HOME=/home/$USER
    source $HOME/.Xdbus
    export DISPLAY=:0
    echo "UnDocking Script"
    echo "Switch primary monitor"
    sudo -u $USER disper -s
    echo "Killall XCreateMouseVoid"
    pkill XCreate
    echo "Restart conky"
    pkill conky
    sudo -u $USER conky &
    

    chmod +x /usr/local/sbin/undock

  7. डॉक स्क्रिप्ट बनाएं ( अपने उपयोगकर्ता नाम से मिलान करने के लिए अपने_उज़र को बदलें ):

    स्क्रिप्ट का नाम: /usr/local/sbin/dock

    #!/bin/bash
    USER=your_user
    export HOME=/home/$USER
    source $HOME/.Xdbus
    export DISPLAY=:0
    echo "Docking Script"
    echo "Switch to Dualview"
    sudo -u $USER disper -i < $HOME/.disperDocked
    echo "Start XCreateMouseVoid"
    pkill XCreate
    sudo -u $USER $HOME/.mousevoid
    echo "Restart conky"
    pkill conky
    sudo -u $USER conky &
    

    chmod +x /usr/local/sbin/dock


डिबग

डॉक स्क्रिप्ट को डीबग करने के लिए आपको udv डीबग लॉगिंग को सक्षम करना होगा:

udevadm control --log-priority=debug

फिर लॉग फाइल व्यूअर में syslog खोलें


साधन

एनवीडिया रीडमी: कॉन्फिग ट्विनव्यू , एक्स
कॉन्फिगर विकल्प ऑटोरैन्डर
डिस्प्रैक्टर पीपीए
एनवी-कंट्रोल-डीपीआई
उबंटू फोरम - अन / डॉक स्क्रिप्स
थिंकवीकी
यूडीवाडम


कैस, यह सुझाव दिया गया था कि मैं आपकी पोस्ट पर टिप्पणी करता हूं कि इस समस्या के बारे में पूछने के लिए: मैं इसके साथ हूं: askubuntu.com/questions/68737/auto-switching-with-dock
Toby Joiner

क्या आपके पास स्क्रिप्ट dell-dock.sh है?
कैस

1
हाँ ऐसा लगता है कि वह फ़ाइल मौजूद नहीं है:$ cat /sys/devices/platform/dock.0/docked cat: /sys/devices/platform/dock.0/docked: No such file or directory
टोबी जॉइनर

3

आप ऑटोरेंडर का उपयोग कर सकते हैं ।

कनेक्ट डिस्प्ले हार्डवेयर को ऑटो-डिटेक्ट करें और xrandr या डिस्प्रेटर का उपयोग करके ऐपप्रोटिएट X11 सेटअप को लोड करें

जुड़े उपकरणों के आधार पर स्वचालित रूप से एक डिस्प्ले कॉन्फ़िगरेशन चुनें

यह सभी देखें:


यह समाधान पीड़ारहित है और बढ़िया काम करता है।
किराना व्यापारी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.