当 HDMI 插入或拔出时,如何编写 bash 脚本来配置我的显示器

当 HDMI 插入或拔出时,如何编写 bash 脚本来配置我的显示器

我有一台运行 Kubuntu Precise (12.04) 的笔记本电脑,我偶尔用它来观看视频。执行此操作时,我会插入一根连接到 A/V 接收器的 HDMI 电缆,并连接 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
## 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 已经很老了,你可能应该看看

相关内容