web-dev-qa-db-ja.com

HDMIがプラグインまたはプラグインされていないときにディスプレイを構成するbashスクリプトを作成する方法

Kubuntu Precise(12.04)を実行しているノートブックを持っています。このノートブックをビデオの鑑賞に使用することがあります。その際、HDMIモニターが接続されたA/Vレシーバーに接続されたHDMIケーブルを差し込みます。

この方法でビデオを見るときでも、システムを操作して再生などを制御しているときは、ノートブックのディスプレイを使用する必要があります。HDMIモニターのテキストは、座っているところから読むのが難しいです。

HDMIケーブルを接続すると、Kubuntuがそれを検出しますが、奇妙なダンスシーケンス(機能しますが、複雑です)を実行して、ビデオとオーディオの両方で毎回正しくセットアップする必要があります。これを修正するために、xrandrを使用してbashスクリプトを最初から正しく記述できるようにしています。

このU&LのQ&Aに対するPeoroの回答から基本的なアイデアを得ました: 外部ディスプレイが接続されているときにRandR構成を自動的に適用するためのツール

私のスクリプトについて

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

これは、HDMIモニターのビデオモードを正しく設定しますが、LVDS1モニター(ノートブック上)は、デスクトップの左上部分のみを表示するように変更されます。これは、右側のウィンドウスクロールバーとオンのタスクバーが切り取られるため問題ですボトム。

私は--scaleでこれを修正しようとしましたが、最初の試みは物事を台無しにしたので、正常に機能するディスプレイを取得するには再起動する必要がありました。

両方のディスプレイに同じコンテンツを表示させる方法はありますが、それぞれが独自の優先解像度を使用していますか?

または、少なくとも、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)
8
Joe

おそらく代わりに kscreen を使用するだけで、すべての問題が解決されます。以前に接続した画面の設定を記憶し、再度接続するとそれらを復元します。

それでもkscreenを使用している間にこのような問題が発生する場合は、 バグレポート の価値があります。

Kubuntu 12.04はかなり古いので、おそらく this を確認する必要があります。

3
Elias Probst