আমার ল্যাপটপ ডকের সাথে কীভাবে স্বয়ংক্রিয়ভাবে মনিটরগুলি স্যুইচ করা যায়


11

আমার সাথে একটি ডেল প্রিসিশন এম 4300 আছে একটি ডেল ডক PRO1X উবুন্টু নাটি চালাচ্ছে।

আমি যখন ল্যাপটপটি ডক করি তখন এলসিডি ডিসপ্লে বন্ধ থাকে এবং আমি দুটি বাহ্যিক মনিটর ব্যবহার করি তবে আমি যখন ল্যাপটপটি আনডক করি তখন এটি ল্যাপটপের স্ক্রিনে স্যুইচ হয় না। ল্যাপটপ ডক করার সময় একই ঘটনা ঘটে, এটি বাহ্যিক মনিটরে স্যুইচ করে না।

আমি যদি ল্যাপটপটি পুনরায় বুট করি তবে এটি সঠিক সেটআপটি চয়ন করবে তবে উবুন্টু চলমান এটি মনিটরগুলিতে স্বয়ংক্রিয়ভাবে পরিবর্তন করবে না।

আমার Xorg.conf

উত্তর:


10

ডক / আনডক স্ক্রিপ্টগুলি

অবশেষে আমি একটি সম্পূর্ণ স্ক্রিপ্ট সেটআপ একসাথে রেখেছি যা আমার ডকের স্থিতি সনাক্ত করতে এবং মনিটরগুলিকে স্বয়ংক্রিয়ভাবে স্যুইচ করবে।

আমি প্রথম কাজটি করেছিলাম আমার Xorg.conf থেকে মুক্তি পাওয়ার কারণ এটি আরও সমস্যার সমাধান করেছে। যেহেতু আমি একটি এনভিডিএ কার্ড ব্যবহার করছি আমি অবশেষে দেখতে পেলাম যে ডিস্পার ব্যবহার করা সবচেয়ে ভাল উপায়। আমি এর আগে এটি ছাড় দিয়েছিলাম কারণ এর স্ট্যান্ডার্ড কমান্ডগুলি আমার ডুয়ালভিউ সেটআপটি অর্জন করতে পারে না তবে আমি খুঁজে পেলাম যে আমি ডিসপারের সাথে ব্যবহারের জন্য একটি কাস্টম মেটাਮੋড তৈরি করতে পারি।

কাস্টম metamode তৈরি করতে আমি পূর্ববর্তী পরীক্ষামূলক সহ Xorg.conf সঞ্চিত মান ব্যবহৃত NV-নিয়ন্ত্রণ-dpy এবং xrandr একটি নির্দেশিকা হিসেবে। এই metamode এবং অন্যান্য twinview মান একটি ফাইল মাধ্যমে disper প্রেরণ যেতে পারে যে যোগ করা হয় নি stdin

টুইনভিউয়ের সাথে বিভিন্ন আকারের মনিটর থাকার কারণে আমাকে এই প্রশ্নে বর্ণিত হিসাবে এক্সসিআরটমাউসভিড ব্যবহার করতে হবে ।

নীচে স্ক্রিপ্টগুলি এবং তাদের সামগ্রীর ফাইলগুলির একটি সম্পূর্ণ ভাঙ্গন রয়েছে।


স্ক্রিপ্ট

  1. এক্সক্রিয়েটমাউসওয়াইড স্ক্রিপ্ট তৈরি করুন:

    স্ক্রিপ্টের নাম: ~/.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. এক্সপোর্ট ডিবিস সেশন স্ক্রিপ্ট তৈরি করুন:

    স্ক্রিপ্টের নাম: ~/.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. ডাব ইভেন্টের সাথে চলতে পারে এমন udev নিয়ম তৈরি করুন:

    স্ক্রিপ্টের নাম: /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. উদেব নিয়মের সাথে সম্পর্কিত স্ক্রিপ্টটি তৈরি করুন:

    স্ক্রিপ্টের নাম: /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. আনডক স্ক্রিপ্ট (পরিবর্তন তৈরি করুন your_user আপনার ব্যবহারকারী নাম মেলে):

    স্ক্রিপ্টের নাম: /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. ডক স্ক্রিপ্ট (পরিবর্তন তৈরি করুন your_user আপনার ব্যবহারকারী নাম মেলে):

    স্ক্রিপ্টের নাম: /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


ডেবাগ্ করা

ডক স্ক্রিপ্টগুলি ডিবাগ করতে আপনাকে udev ডিবাগ লগিং সক্ষম করতে হবে:

udevadm control --log-priority=debug

তারপর ওপেন syslog- র মধ্যে কার্যবিবরণী ফাইল ভিউয়ার


সম্পদ

এনভিডিয়া Readme: কনফিগ Twinview , এক্স কনফিগ বিকল্প
Autorandr
Disper পিপিএ
NV-নিয়ন্ত্রণ-dpy
উবুন্টু ফোরাম - UN / ডক স্ক্রিপ্ট
Thinkwiki
udevadm


CA গুলির, সুপারিশ করা হয় যে আপনার পোস্টে আমি মন্তব্য সমস্যা হল আমি সঙ্গে এই হচ্ছে সম্পর্কে জিজ্ঞাসা করতে: askubuntu.com/questions/68737/auto-switching-with-dock
টবি যোজক

আপনার কাছে স্ক্রিপ্টটি আছে ডেল-ডক.শ?
ক্যাস

1
হ্যাঁ মনে হচ্ছে যে ফাইলটি বিদ্যমান নেই: $ cat /sys/devices/platform/dock.0/docked cat: /sys/devices/platform/dock.0/docked: No such file or directory
টবি জয়েনার

3

আপনি অটোরেন্ডার ব্যবহার করতে পারেন ।

সংযুক্ত ডিসপ্লে হার্ডওয়্যারটি স্বয়ংক্রিয়ভাবে সনাক্ত করুন এবং এক্সরেন্ডার বা ডিসপার্পর ব্যবহার করে অ্যাপ্রোপিয়েট এক্স 11 সেটআপ লোড করুন

সংযুক্ত ডিভাইসের উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে ডিসপ্লে কনফিগারেশন নির্বাচন করুন

আরো দেখুন:


এই সমাধান ব্যথাহীন এবং দুর্দান্ত কাজ করে।
মুদিবিদ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.