アンプラグドディスプレイを無効にする(xrandr)


17

自宅にいるときに使用する2つのビデオ出力を備えたラップトップ(HDMI1、VGA1)があります。それらを有効にするには、次のようにします。

xrandr --output HDMI1 --right-of LVDS1 --auto
xrandr --output LVDS1 --off
xrandr --output VGA1 --right-of HDMI1 --auto

仕事に行きたいときは、ラップトップを持って行きますが、最初に以下を実行します。

xrandr --output VGA1 --off
xrandr --output LVDS1 --left-of HDMI1 --auto
xrandr --output HDMI1 --off

そして、これは私のラップトップのディスプレイを本来のようにアクティブのままにします。

私が直面している問題は、コンピューターを使用する前に2つの画面を無効にすることを忘れないことです。私が到着したとき、私はの様々な組み合わせを試してみてください--output--off私は私の画面の再有効化取得することはできません。

これはxrandr何も表示されずに実行される出力です:

Screen 0: minimum 320 x 200, current 3840 x 1080, maximum 8192 x 8192
LVDS1 connected (normal left inverted right x axis y axis)
   1366x768       60.0 +
   1024x768       60.0··
   800x600        60.3     56.2··
   640x480        59.9··
VGA1 disconnected 1920x1080+1920+0 (normal left inverted right x axis y axis) 0mm x 0mm
HDMI1 disconnected 1920x1080+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
DP1 disconnected (normal left inverted right x axis y axis)
  1920x1080 (0x4c)  148.5MHz
        h: width  1920 start 2008 end 2052 total 2200 skew    0 clock   67.5KHz
        v: height 1080 start 1084 end 1089 total 1125           clock   60.0Hz

私が試したほぼすべてのコマンドが返されます:

xrandr: Configure crtc 2 failed
X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  140 (RANDR)
  Minor opcode of failed request:  21 (RRSetCrtcConfig)
  Serial number of failed request:  40
  Current serial number in output stream:  40

2つのモニターがCRTCを放棄していないようで、私のハードウェアは2つしかサポートしていないため、これらのモニターを接続して無効にするまでロックされています。

回答:


11

次のように、1つのコマンドですべての構成を指定できます。

xrandr --output VGA1 --off --output HDMI1 --off --output LVDS1 --left-of HDMI1 --auto

また、それが機能するはずです。また、(長い)書きにくいコマンドなので、現在接続されている画面をテストし、必要なセットアップを行うスクリプトを作成できます。(キーショートカットに追加できます)

if [ -z `xrandr --query | grep "HDMI1 connected"` ]
then
    xrandr --output DP2 --off --output DP1 --off --output HDMI2 --off \
        --output HDMI1 --off \
        --output LVDS1 --mode 1366x768 --pos 0x0 --rotate normal \
        --output VGA1 --off
else
    xrandr --output DP2 --off --output DP1 --off --output HDMI2 --off \
        --output HDMI1 --mode 1920x1080 --pos 0x0 --rotate normal --primary \
        --output LVDS1 --off --output VGA1 --off
fi

それは派手なスクリプトではありませんが、あなたのために働くかもしれません。


1

残念ながら、画面が切断されたときにイベントが生成されることはありません。スクリプトxrandrをポーリングするのは非常に重いですが、/ sys / class / drm / * / statusを調べて、それらのファイルをポーリングし、ステータスが「接続済み」から別の状態に変わる(または完全に消える)ときに必要なxrandrアクションを実行できます。


1

これは非常に古いスレッドであることは知っていますが、モニターのオン/オフを切り替えてから切断することに関する情報を使用して、問題の解決方法を共有したかったのです。私はautorandrと呼ばれるプログラムを使用し、基本的には2台のモニターでディスプレイをセットアップしましたautorandr --save docked。次に、それを使用してxrandr --output VGA --offから、モニターのプラグを抜き、続いてを押しましたautorandr --save mobile。Autorandrは、プラグインまたはアンプラグに応じて異なるモードを自動的に切り替えます。うまくいけば、これにつまずく他の人を助けます!また、これは私の最初の本当の答えのようなものですので、もっと明確にするために何かを変更できるかどうか教えてください。

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