मैंने आखिरकार एक पूरी स्क्रिप्ट सेटअप को एक साथ रखा है जो मेरी डॉक स्थिति का पता लगाएगा और मॉनिटर को स्वचालित रूप से स्विच करेगा।
पहली बात मैंने अपने Xorg.conf से छुटकारा पाने के लिए किया क्योंकि यह अधिक मुद्दों का कारण बनता है जो इसे हल करता है। चूंकि मैं एक एनवीडिया कार्ड का उपयोग कर रहा हूं, इसलिए मैंने अंततः पाया कि डिस्पर का उपयोग करना सबसे अच्छा तरीका था। मैंने पहले ही इसकी छूट दे दी थी क्योंकि इसके मानक कमांड मेरे ड्यूलव्यू सेटअप को प्राप्त नहीं कर सकते थे, लेकिन फिर मैंने पाया कि मैं डिस्प्रेटर के साथ उपयोग करने के लिए एक कस्टम मेटामोड बना सकता हूं।
कस्टम मेटामोड बनाने के लिए मैंने Xorg.conf में संग्रहीत मानों का उपयोग पिछले परीक्षण के साथ nv-control-dpy और xrandr के साथ एक गाइड के रूप में किया। यह metamode और अन्य TwinView मूल्यों एक फ़ाइल के माध्यम से disper को पारित किया जा सकता है कि करने के लिए जोड़ा गया था stdin ।
कारण का उपयोग करने के TwinView मैं जरूरत के साथ अलग-अलग आकार पर नज़र रखता है होने के लिए XCreateMouseVoid , जिसका विवरण सवाल ।
XCreateMouseVoid स्क्रिप्ट बनाएं:
स्क्रिप्ट का नाम: ~/.mousevoid
#!/bin/bash
echo "Mouse Void"
/opt/XCreateMouseVoid/XCreateMouseVoid 0 1112 1280 88 &
/opt/XCreateMouseVoid/XCreateMouseVoid 0 0 1280 88 &
chmod +x ~/.mousevoid
डिस्क सेटिंग फ़ाइल बनाएँ:
फ़ाइल का नाम: ~/.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
निर्यात 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 चलाने की आवश्यकता है
एक गोदी घटना के साथ चलने वाले 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
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
अनडॉक स्क्रिप्ट बनाएं ( अपने उपयोगकर्ता नाम से मिलान करने के लिए अपने_उज़र को बदलें ):
स्क्रिप्ट का नाम: /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
डॉक स्क्रिप्ट बनाएं ( अपने उपयोगकर्ता नाम से मिलान करने के लिए अपने_उज़र को बदलें ):
स्क्रिप्ट का नाम: /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