回答:
ドックの状態を検出し、モニターを自動的に切り替える完全なスクリプト設定をようやくまとめました。
私が最初に行ったのはXorg.confを取り除くことでした。Xorg.confが解決する問題をさらに引き起こしたためです。私はNVDIAカードを使用しておりますので、私は最終的に使用していることを見つけディスパーが行くための最善の方法でした。以前は、標準コマンドでは私のデュアルビューセットアップを実現できなかったので、それを割り引いていましたが、disperで使用するカスタムメタモードを作成できることがわかりました。
カスタムメタモードを作成するために、Xorg.confに格納されている値と、nv-control-dpyおよびxrandrをガイドとして使用した以前のテストを使用しました。このメタモードと他のtwinview値は、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
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ルールを作成します。
スクリプト名: /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
ドックスクリプトをデバッグするには、udevデバッグログを有効にする必要があります。
udevadm control --log-priority=debug
次に、ログファイルビューアでsyslogを開きます。
nVidia Readme:Config Twinview、X Config Options
Autorandr Disper
PPA
nv-control-dpy
Ubuntuフォーラム
-Un / DockスクリプトThinkwiki
udevadm
$ cat /sys/devices/platform/dock.0/docked cat: /sys/devices/platform/dock.0/docked: No such file or directory