ラップトップドックでモニターを自動的に切り替える方法


11

私は、Ubuntu Nattyを実行しているDell Dock PRO1Xを備えたDell Precision M4300を持っています。

ラップトップをドッキングすると、液晶ディスプレイがオフになり、2つの外部モニターを使用しますが、ラップトップをドッキング解除すると、ラップトップ画面に切り替わりません。ラップトップをドッキングしたときも同じことが起こり、外部モニターに切り替わりません。

ラップトップを再起動すると、正しいセットアップが選択されますが、Ubuntuが実行されているモニターは自動的に変更されません。

私のXorg.conf

回答:


10

Dock / UnDockスクリプト

ドックの状態を検出し、モニターを自動的に切り替える完全なスクリプト設定をようやくまとめました。

私が最初に行ったのはXorg.confを取り除くことでした。Xorg.confが解決する問題をさらに引き起こしたためです。私はNVDIAカードを使用しておりますので、私は最終的に使用していることを見つけディスパーが行くための最善の方法でした。以前は、標準コマンドでは私のデュアルビューセットアップを実現できなかったので、それを割り引いていましたが、disperで使用するカスタムメタモードを作成できることがわかりました。

カスタムメタモードを作成するために、Xorg.confに格納されている値と、nv-control-dpyおよびxrandrをガイドとして使用した以前のテストを使用しました。このメタモードと他のtwinview値は、stdinを介してディスパーに渡すことができるファイルに追加されました。

Twinviewにはさまざまなサイズのモニターがあるため、この質問で説明されているように、XCreateMouseVoidを使用する必要があります。

以下は、スクリプトとファイルとその内容の完全な内訳です​​。


スクリプト

  1. XCreateMouseVoidスクリプトを作成します。

    スクリプト名: ~/.mousevoid

    #!/bin/bash
    echo "Mouse Void"
    /opt/XCreateMouseVoid/XCreateMouseVoid 0 1112 1280 88 &
    /opt/XCreateMouseVoid/XCreateMouseVoid 0 0 1280 88 &
    

    chmod +x ~/.mousevoid

  2. 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
    
  3. エクスポート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ファイルを作成する必要があります

  4. ドックイベントで実行する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

  5. 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

  6. アンドックスクリプトを作成します(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

  7. ドックスクリプトを作成します(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 TwinviewX Config Options
Autorandr Disper
PPA
nv-control-dpy
Ubuntuフォーラム
-Un / DockスクリプトThinkwiki
udevadm


キャス、私があなたの投稿にコメントして、これで私が抱えている問題について質問することが提案されました: askubuntu.com/questions/68737/auto-switching-with-dock
Toby Joiner

スクリプトdell-dock.shはありますか?
Cas

1
はい、そのファイルは存在しないようです:$ cat /sys/devices/platform/dock.0/docked cat: /sys/devices/platform/dock.0/docked: No such file or directory
Toby Joiner '20

3

autorandrを使用できます。

接続ディスプレイハードウェアを自動検出し、xrandrまたはdisperを使用して適切なX11セットアップをロードする

接続されたデバイスに基づいてディスプレイ構成を自動的に選択します

以下も参照してください。


このソリューションは痛みがなく、うまく機能します。
食料雑貨店
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.