XFCEでモニターレイアウトを自動的に更新するにはどうすればよいですか?


9

通常、大型モニターにドッキングされているラップトップを持っています。ドッキングすると、大型モニターをプライマリディスプレイとして使用し、ラップトップ画面をセカンダリディスプレイとして右側に配置します。ドッキングを解除すると、ノートパソコンの画面が唯一のディスプレイになります。

XFCEには、そのようなマルチモニターサポートが組み込まれていないようです。ARandRを見つけました。これにより、モニターを希望どおりにセットアップできます。ARandRを使用して、ドッキングされた構成とドッキングされていない構成のプロファイルを保存できます(これらは、実際にはxrandrを呼び出す単なるシェルスクリプトです)。

しかし、ラップトップがドッキングおよびドッキング解除されたときに、これらのプロファイルを自動的に適用するにはどうすればよいですか?ドッキングステーションを検出するudevルールを作成する必要がありますか?もっと良い方法はありますか?


まだテストしていませんが、x-on-resizeはこれを正確に行うためにX開発者の1人によって開発されました。
ミケル

回答:


5

1つの方法はudevルールを作成することですが、もっと移植性のあるものが欲しかったので、このbashスクリプトを用意しました。inotifywaitのサポートに依存し、なんらかのループがなく、効率的であると見なされています。

external-lcd.sh

#!/bin/sh
# inspired of:                                                                                            
#   http://unix.stackexchange.com/questions/4489/a-tool-for-automatically-applying-randr-configuration-   when-external-display-is-p                                                                                
#   http://ozlabs.org/~jk/docs/mergefb/                                                                   
#   http://superuser.com/questions/181517/how-to-execute-a-command-whenever-a-file-changes/181543#181543  

export MONITOR2=/sys/class/drm/card0-VGA-1/status                                                         

while inotifywait -e modify,create,delete,open,close,close_write,access $MONITOR2;                        

dmode="$(cat $MONITOR2)"                                                                                  

do                                                                                                        
    if [ "${dmode}" = disconnected ]; then                                                                
         /usr/bin/xrandr --auto                                                                           
         echo "${dmode}"                                                                                  
    elif [ "${dmode}" = connected ];then                                                                  
         /usr/bin/xrandr --output VGA1 --auto --right-of LVDS1                                            
         echo "${dmode}"                                                                                  
    else /usr/bin/xrandr --auto                                                                           
         echo "${dmode}"                                                                                  
    fi                                                                                                    
done 

ファイルを実行可能にすることを忘れないでください(chmod +x external-lcd.sh)。その後、DEを起動するたびに起動します。

これをarchlinuxで使用しているので、動作するはずです。xrandrパラメータを変更するか、スワップしてarandr構成を使用できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.