HDMIが接続または切断されたときにモニタを設定するためのbashスクリプトをどのように作成しますか?

HDMIが接続または切断されたときにモニタを設定するためのbashスクリプトをどのように作成しますか?

私は時々ビデオを見るために使用するKubuntu Precise(12.04)を実行するラップトップを持っています。これを行うには、A / Vレシーバーに接続されているHDMIケーブルを接続し、HDMIモニターを接続します。

この方法でビデオを見るときに再生などを制御するためにシステムとやり取りするときは、ラップトップモニターを使用する必要があります。私が座った場所でHDMIモニターのテキストを読むのは難しいです。

HDMIケーブルを接続すると、Kubuntuはこれを検出しますが、毎回ビデオとオーディオを正しく設定するには、奇妙なダンスシーケンス(機能的ですが複雑さ)を受ける必要があります。この問題を解決するために、xrandr最初に正しく完了するようにbashスクリプトを書いてみました。

U&Lクイズの質問に対するPeoroの答えから基本的なアイデアを得ました。外部モニターを接続するときに RandR 構成を自動的に適用するツール

マイスクリプトについて

私のスクリプト(以下を含む)は機能しますが、改善が必要です。

HDMIモニターに合わせてビデオモードを設定しましたが、ラップトップのLVDS1モニターはデスクトップの左上部分のみを表示するように変更されます。これは、画面の右下のウィンドウのスクロールバーが切り捨てられるために問題になります。タスクバー。

問題を解決しようとしましたが、--scale最初の試みで問題が発生してディスプレイが再び機能するようにするには、再起動が必要でした。

2台のモニターに同じコンテンツを表示しながら、各モニターにそれぞれの好みの解像度を使用させる方法はありますか?

それとも、HDMIモニターを使用するときにデスクトップ全体に引き続きアクセスできるようにラップトップモニターを設定する方法はありますか?

スクリプトをデバッグしているので、まだクリーンアップされていません。後で加えてみたいかもしれませんね。

私のスクリプト

#!/bin/bash
## hdmi_set
## Copyleft 11/13/2013 JPmicrosystems
## Adapted from
## https://unix.stackexchange.com/questions/4489/a-tool-for-automatically-applying-randr-configuration-when-external-display-is-p
## Answer by peoro

# setting up new mode for my VGA
##xrandr --newmode "1920x1080" 148.5 1920 2008 2052 2200 1080 1089 1095 1125 +hsync +vsync
##xrandr --addmode VGA1 1920x1080

##source $HOME/bin/bash_trace
# default monitor is LVDS1
MONITOR=LVDS1

# functions to switch from LVDS1 to HDMI and vice versa
function ActivateHDMI {
    echo "Switching to HDMI"
    ##xrandr --output HDMI1 --mode 1920x1080 --dpi 160 --output LVDS1 --off
    ##xrandr --output HDMI1 --same-as LVDS1
    xrandr --output HDMI1 --mode 1920x1080
    xrandr --output LVDS1 --mode 1366x768
    MONITOR=HDMI1
}
function DeactivateHDMI {
    echo "Switching to LVDS1"
    xrandr --output HDMI1 --off --output LVDS1 --auto
    MONITOR=LVDS1
}

# functions to check if VGA is connected and in use
function HDMIActive {
    [ $MONITOR = "HDMI1" ]
}
function HDMIConnected {
    ! xrandr | grep "^HDMI1" | grep disconnected
}

## MONITOR doesn't do anything because it's not preserved between script executions
# actual script
##while true
##do
    if HDMIConnected
    then
        ActivateHDMI
    fi

    if ! HDMIConnected
    then
        DeactivateHDMI
    fi

    ##sleep 1s
##done

xrandrの出力

これがxrandrが見るものです:

bigbird@ramdass:~$ xrandr
Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192
LVDS1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x 194mm
   1366x768       60.0*+
   1360x768       59.8     60.0  
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        59.9  
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 connected (normal left inverted right x axis y axis)
   1920x1080      60.0 +
   1680x1050      60.0  
   1280x1024      60.0  
   1440x900       59.9  
   1280x720       60.0  
   1024x768       60.0  
   800x600        60.3  
   720x480        59.9  
   640x480        60.0  
   720x400        70.1  
DP1 disconnected (normal left inverted right x axis y axis)

答え1

おそらく単に使用する必要があります画面代わりに、これはすべての問題を解決します。以前に接続した画面の設定を覚えて再接続すると、復元されます。

kscreenを使用してもこのような問題が発生する場合は、試してみる価値があります。エラーレポート

Kubuntu 12.04はかなり古いので、おそらく次のことを見なければなりません。これ

関連情報