是否有一种工具可以使人:
这些配置必须在每个用户每次显示的基础上应用。
如果没有这样的工具在野外,我想自己把一个,但据我所能看到,没有办法知道一个显示器已插入。我是否需要不时地与-q进行民意测验才能发现输出是连接的或断开的,还是有更有效的方法来实现它?udev能被调成这样吗?
发布于 2011-04-23 20:08:19
我使用这个简单的(自制)脚本来保持轮询RandR,并在VGA连接/断开时在LVDS1和VGA1之间切换。(对于HDMI输出,在以下脚本文件中,将所有VGA1更改为HDMI1)
这是个肮脏的解决方案,但效果很好。
它是为我的设置定制的:您很可能需要更改RandR输出名称(LVDS1和VGA1)和不像我,您可能对VGA的RandR默认模式很满意。
#!/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全面步骤:
homemadeMonitor.sh)放入首选目录chmod +x homemadeMonitor.sh文件可执行./homemadeMonitor.sh发布于 2011-10-12 05:18:08
对于一个可以在每个用户和每次显示的基础上存储监控配置配置文件的工具,自行车道将准确地做到这一点。
我的笔记本电脑有一张NVIDIA卡,所以我用的是消散器后端,而不是xrandr。如果您将disper称为autodisper,Autorandr将使用disper作为后端来管理监视器。然而,在这篇文章的其余部分,为了保持一致性,我将把它称为autorandr。
您可以使用autorandr --save profile_name保存配置文件。运行autorandr本身将为您提供一个配置文件列表,并确定哪个配置文件被检测为当前配置。
例如:
$ autorandr
laptop
syncmaster19 (detected)您可以告诉它使用autorandr --change自动加载当前配置的适当配置文件。此命令与udev规则配合,在热插拔时运行它,将执行您所要求的操作。
作为一种额外的预防措施,我在该命令中添加了--default laptop,如果没有与当前配置相匹配的保存的配置文件,它将默认为笔记本电脑的显示器。因此,我用来切换显示的完整命令是:
autorandr --change --default laptop不幸的是,我的机器没有提供任何udev输出时,我热插拔我的显示器。我使用的是NVIDIA专有驱动程序,所以这并不奇怪。所以现在我已经将它绑定到XF68Display密钥(Fn-F8),这几乎是一样好的。
发布于 2011-05-27 16:21:38
在回答"一个告知监视器已插入“部分问题时:
支持仍然有很大的变化,但是最近的内核支持在显示热插拔发生时生成udev事件。使用内核2.6.38和ATI X1400硬件,当我第一次连接VGA显示器时,就会得到一个事件,但是在随后的显示器断开或重新连接时没有事件发生。英特尔的硬件可能有更好的支持。是NVIDIA的专有驱动程序,目前不支持KMS;我还没有尝试在NVIDIA硬件上寻找热插拔事件,但我怀疑它是否会起作用。
如果您想试验udev,可以尝试以下步骤:
[drm] radeon kernel modesetting enabled和[drm] initializing kernel modesettingudevadm monitor --property,查看(dis-)连接显示时是否报告了事件。如果要将udev事件显示在显示热插拔上,则可以触发具有udev规则的脚本,如下所示:
ACTION=="change", SUBSYSTEM=="drm", HOTPLUG=="1", RUN+="/path/to/hotplug.sh"注意:如果您在专有二进制驱动程序中使用nVIDIA GPU,这将无法工作,因为它不使用KMS。您将不会得到任何udev事件。
https://unix.stackexchange.com/questions/4489
复制相似问题