Saya akhirnya telah mengumpulkan pengaturan skrip lengkap yang akan mendeteksi status dok saya dan mengganti monitor secara otomatis.
Hal pertama yang saya lakukan adalah menyingkirkan Xorg.conf saya karena menyebabkan lebih banyak masalah yang diselesaikan. Karena saya menggunakan kartu nvdia saya akhirnya menemukan bahwa menggunakan Disper adalah cara terbaik untuk pergi. Saya telah mendiskonnya sebelumnya karena perintah standarnya tidak dapat mencapai pengaturan dualview saya, tetapi kemudian saya menemukan saya dapat membuat metamode khusus untuk digunakan dengan disper.
Untuk membuat metamode khusus saya menggunakan nilai yang disimpan di Xorg.conf bersama dengan pengujian sebelumnya dengan nv-control-dpy dan xrandr sebagai panduan. Metamode ini dan nilai-nilai twinview lainnya ditambahkan ke file yang dapat diteruskan ke disper melalui stdin .
Karena memiliki monitor berukuran berbeda dengan Twinview, saya perlu menggunakan XCreateMouseVoid , seperti yang dijelaskan dalam pertanyaan ini .
Di bawah ini adalah uraian lengkap skrip dan file dengan isinya.
Buat skrip XCreateMouseVoid:
Nama Skrip: ~/.mousevoid
#!/bin/bash
echo "Mouse Void"
/opt/XCreateMouseVoid/XCreateMouseVoid 0 1112 1280 88 &
/opt/XCreateMouseVoid/XCreateMouseVoid 0 0 1280 88 &
chmod +x ~/.mousevoid
Buat file pengaturan Disper:
Nama file: ~/.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
Buat skrip sesi ekspor dbus:
Nama Skrip: ~/.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
Setel hanya untuk pengguna yang dapat dieksekusi: chmod 700 ~/.export_x_info
Kemudian letakkan di Aplikasi Startup:
Name: X Environment Variables
Command: /home/your_user/.export_x_info
Kecuali Anda me-restart Anda perlu menjalankan ~ / .export_x_info untuk membuat file .Xdbus
Buat aturan udev yang akan dijalankan pada saat acara dok:
Nama Skrip: /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
Buat skrip yang dikaitkan dengan aturan udev:
Nama Skrip: /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
Buat skrip undock (ubah your_user agar sesuai dengan nama pengguna Anda):
Nama Skrip: /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
Buat skrip dock (ubah your_user agar sesuai dengan nama pengguna Anda):
Nama Skrip: /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