是否有一个工具,使人们能够:
>记住每个监视器的当前RandR配置(位置,方向,分辨率等),
>插入显示器后立即自动应用上次已知的良好配置,无需使用applet或xrandr(1)进行清理?
必须在每个用户,每个显示器的基础上应用配置.
如果在野外没有这样的工具,我想把自己扔在一起,但据我所知,没有办法告诉显示器已插入.我是否必须使用xrandr -q进行轮询偶尔弄清楚输出是连接还是断开,还是有更有效的方法呢?你可以调整udev来做到这一点吗?
解决方法:
我正在使用这个简单(自制)脚本来保持轮询RandR,并在VGA连接/断开时在LVDS1和VGA1之间切换.
这是一个肮脏的解决方案,但它的工作正常.
它是根据我的设置自定义的:你很可能需要更改RandR输出名称(LVDS1和VGA1)和unlike me,你可能会使用你的RandR默认模式VGA.
#!/bin/bash
# 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
# default monitor is LVDS1
MONITOR=LVDS1
# functions to switch from LVDS1 to VGA and vice versa
function ActivateVGA {
echo "Switching to VGA1"
xrandr --output VGA1 --mode 1920x1080 --dpi 160 --output LVDS1 --off
MONITOR=VGA1
}
function DeactivateVGA {
echo "Switching to LVDS1"
xrandr --output VGA1 --off --output LVDS1 --auto
MONITOR=LVDS1
}
# functions to check if VGA is connected and in use
function VGAActive {
[ $MONITOR = "VGA1" ]
}
function VGAConnected {
! xrandr | grep "^VGA1" | grep disconnected
}
# actual script
while true
do
if ! VGAActive && VGAConnected
then
ActivateVGA
fi
if VGAActive && ! VGAConnected
then
DeactivateVGA
fi
sleep 1s
done