ในที่สุดฉันก็รวมการตั้งค่าสคริปต์ที่สมบูรณ์ซึ่งจะตรวจจับสถานะท่าเรือของฉันและสลับจอภาพโดยอัตโนมัติ
สิ่งแรกที่ฉันทำคือการกำจัด Xorg.conf ของฉันเพราะมันทำให้เกิดปัญหามากขึ้นว่ามันจะแก้ไข ตั้งแต่ฉันใช้การ์ด nvdia ในที่สุดฉันก็พบว่าการใช้disperเป็นวิธีที่ดีที่สุด ฉันเคยลดราคามาก่อนเนื่องจากคำสั่งมาตรฐานไม่สามารถใช้การตั้งค่าดูอัลของฉันได้ แต่ฉันพบว่าฉันสามารถสร้างเมตาโมดูที่กำหนดเองเพื่อใช้กับ disper ได้
ในการสร้าง metamode ที่กำหนดเองฉันใช้ค่าที่เก็บไว้ใน Xorg.conf พร้อมกับการทดสอบก่อนหน้าด้วยnv-control-dpyและxrandrเป็นแนวทาง MetaMode และ TwinView อื่น ๆ นี้ค่าถูกเพิ่มเข้าไปในแฟ้มที่สามารถส่งผ่านไป disper ผ่านstdin
สร้างสคริปต์ XCreateMouseVoid:
ชื่อสคริปต์: ~/.mousevoid
#!/bin/bash
echo "Mouse Void"
/opt/XCreateMouseVoid/XCreateMouseVoid 0 1112 1280 88 &
/opt/XCreateMouseVoid/XCreateMouseVoid 0 0 1280 88 &
chmod +x ~/.mousevoid
สร้างไฟล์การตั้งค่า Disper:
ชื่อไฟล์: ~/.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
นอกจากว่าคุณจะต้องรีสตาร์ทคุณต้องรัน ~ / .export_x_info เพื่อสร้างไฟล์. Xdbus
สร้างกฎ udev ที่จะทำงานกับเหตุการณ์ dock:
ชื่อสคริปต์: /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
สร้างสคริปต์ปลดการเชื่อมต่อ (เปลี่ยน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
สร้างสคริปต์ท่าเรือ (เปลี่ยน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