Ubuntu Nattyを実行しているDell Dock PRO1Xを搭載したDell Precision M4300があります。
ラップトップをドッキングすると、液晶ディスプレイがオフになり、2台の外部モニターを使用しますが、ラップトップをドッキング解除するとラップトップ画面に切り替わりません。ラップトップをドッキングしたときにも同じことが起こりますが、外部モニターに切り替わりません。
ラップトップを再起動すると、正しいセットアップが選択されますが、Ubuntuを実行しているモニターは自動的に変更されません。
私の Xorg.conf
最終的に、ドックの状態を検出し、モニターを自動的に切り替える完全なスクリプトセットアップを作成しました。
私が最初にしたことは、Xorg.confが解決した問題をさらに引き起こしたため、Xorg.confを取り除くことでした。私はnvdiaカードを使用しているので、最終的にdisper行くのに最適な方法でした。その標準コマンドがデュアルビュー設定を達成できなかったため、以前ディスカウントしていましたが、disperで使用するカスタムメタモードを作成できることがわかりました。
カスタムメタモードを作成するために、nv-control-dpyおよびxrandrこのメタモードと他のツインビューの値は、stdinを介してdisperに渡すことができるファイルに追加されました。
Twinviewにはさまざまなサイズのモニターがあるため、この question で説明されているように、 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
次に、sysloginLog File Viewer
nVidia Readme: Config Twinview 、 X Configオプション
Autorandr
分散PPA
nv-control-dpy
buntu Forum-Un/Dock Scripts
Thinkwiki
devadm
autorandr を使用できます。
接続ディスプレイハードウェアを自動検出し、xrandrまたはdisperを使用して適切なX11セットアップを読み込みます。
接続されたデバイスに基づいてディスプレイ構成を自動的に選択する
こちらもご覧ください: