插入或拔下HDMI时如何编写bash脚本以配置我的显示器


8

我有一台运行Kubuntu Precise(12.04)的笔记本,偶尔会用来观看视频。完成后,我插入连接有A / V接收器的HDMI电缆,并连接了HDMI监视器。

当我以这种方式观看视频时,与系统进行交互以控制播放等时,仍然需要使用笔记本显示器。

当我插入HDMI电缆时,Kubuntu会检测到它,但是我必须经历一个奇怪的舞蹈序列(该序列有效,但令人费解),才能每次正确设置视频和音频。为了解决这个问题,我正在尝试编写一个bash脚本xrandr以使其在第一次就正确执行。

我从Peoro的标题为“ U&L问答”的答案中得到了一个基本思想:当插入外部显示器时,该工具可以自动应用RandR配置

关于我的剧本

我的脚本(包括在下面)可以工作,但是需要改进。

它为HDMI监视器正确设置了视频模式,但是LVDS1监视器(在笔记本电脑上)更改为仅显示桌面的左上部分-这是一个问题,因为它切断了右侧的窗口滚动条和底部。

我尝试使用修复此问题--scale,但第一次尝试将事情弄得一团糟,以至于我不得不重新启动才能恢复正常的显示。

有没有一种方法可以使两个显示器显示相同的内容,但是每个显示器都使用各自独立的首选分辨率?

或者至少是一种设置笔记本电脑显示器的方式,以便在使用HDMI显示器时仍可访问整个台式机?

由于我正在调试脚本,因此尚未清除。我可能想稍后再做。

我的剧本

#!/bin/bash
## hdmi_set
## Copyleft 11/13/2013 JPmicrosystems
## Adapted from
## /unix/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)

Answers:


3

您可能应该简单地使用kscreen代替,它可以解决所有问题。再次连接后,它将记住先前连接的屏幕的设置并恢复它们。

如果仍在使用kscreen时仍然遇到此类问题,那么值得报告错误

由于Kubuntu的12.04是很老,你应该看看这个


天哪!这个PPA给了我347个更新!我不知道为什么以前没有安装它。而且,那是在安装kscreen之前。现在,如果也可以将声音(声子)也切换到HDMI和从HDMI切换出来……升级完成后,我将回到这里,我可以测试kscreen。

如果您在Phonon配置中配置设备优先级,则动态声音切换效果会很好。
Elias Probst 2013年

Kscreen完全是岩石!谢谢。现在,我只需要习惯或修复ppa更新的其他所有内容。我进入“系统设置”->“多媒体”->“音频和视频设置”,并将“内置音频数字立体声(HDMI)”移至“内置音频模拟立体声”上方,但是当我插入/拔下HDMI电缆时,没有发生音频切换。我还想念什么?
2013年

哪些应用程序受影响/不切换输出?
Elias Probst

我刚刚从kubuntu 12.04升级到14.04.1。我一直在等待评论,因为我希望这会有所帮助,但没有任何改变。我仍然必须手动切换音频。我想我将在SE Ask Ubuntu上提出一个新问题。我认为没有音频开关。我刚刚尝试了VLC,Dragonplayer和Amarok。
2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.