Cuối cùng tôi đã kết hợp một thiết lập tập lệnh hoàn chỉnh sẽ phát hiện trạng thái dock của tôi và tự động chuyển màn hình.
Điều đầu tiên tôi làm là loại bỏ Xorg.conf của mình vì nó gây ra nhiều vấn đề hơn mà nó đã giải quyết. Vì tôi đang sử dụng thẻ nvdia nên cuối cùng tôi thấy rằng sử dụng bộ phân tán là cách tốt nhất để sử dụng. Tôi đã giảm giá nó trước đây vì các lệnh tiêu chuẩn của nó không thể đạt được thiết lập dualview của tôi nhưng sau đó tôi thấy tôi có thể tạo một siêu dữ liệu tùy chỉnh để sử dụng với phân tán.
Để tạo siêu dữ liệu tùy chỉnh, tôi đã sử dụng các giá trị được lưu trữ trong Xorg.conf cùng với thử nghiệm trước đó với nv-control-dpy và xrandr làm hướng dẫn. Siêu dữ liệu này và các giá trị song sinh khác đã được thêm vào một tệp có thể được chuyển qua để phân tán thông qua stdin .
Dưới đây là bảng phân tích đầy đủ các tập lệnh và tệp với nội dung của chúng.
Tạo tập lệnh XCreateMouseVoid:
Tên tập lệnh: ~/.mousevoid
#!/bin/bash
echo "Mouse Void"
/opt/XCreateMouseVoid/XCreateMouseVoid 0 1112 1280 88 &
/opt/XCreateMouseVoid/XCreateMouseVoid 0 0 1280 88 &
chmod +x ~/.mousevoid
Tạo tập tin cài đặt Disper:
Tên tệp: ~/.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
Tạo tập lệnh phiên dbus xuất:
Tên tập lệnh: ~/.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
Chỉ đặt thành người dùng thực thi: chmod 700 ~/.export_x_info
Sau đó đưa nó vào Ứng dụng khởi động:
Name: X Environment Variables
Command: /home/your_user/.export_x_info
Trừ khi bạn khởi động lại, bạn cần chạy ~ / .export_x_info để tạo tệp .Xdbus
Tạo quy tắc udev sẽ chạy theo sự kiện dock:
Tên tập lệnh: /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
Tạo tập lệnh được liên kết với quy tắc udev:
Tên tập lệnh: /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
Tạo tập lệnh mở khóa (thay đổi your_user để khớp với tên người dùng của bạn):
Tên tập lệnh: /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
Tạo tập lệnh dock (thay đổi your_user để khớp với tên người dùng của bạn):
Tên tập lệnh: /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