答案1
一种方法是创建 udev 规则,但由于我想要更便携的东西,所以我有这个 bash 脚本。它依赖于 inotifywait 支持,没有某种循环,并且被认为是高效的。
外部lcd.sh
#!/bin/sh
# inspired of:
# http://unix.stackexchange.com/questions/4489/a-tool-for-automatically-applying-randr-configuration- when-external-display-is-p
# http://ozlabs.org/~jk/docs/mergefb/
# http://superuser.com/questions/181517/how-to-execute-a-command-whenever-a-file-changes/181543#181543
export MONITOR2=/sys/class/drm/card0-VGA-1/status
while inotifywait -e modify,create,delete,open,close,close_write,access $MONITOR2;
dmode="$(cat $MONITOR2)"
do
if [ "${dmode}" = disconnected ]; then
/usr/bin/xrandr --auto
echo "${dmode}"
elif [ "${dmode}" = connected ];then
/usr/bin/xrandr --output VGA1 --auto --right-of LVDS1
echo "${dmode}"
else /usr/bin/xrandr --auto
echo "${dmode}"
fi
done
不要忘记使文件可执行 ( chmod +x external-lcd.sh
)。然后在启动 DE 时启动它即可。
我在 archlinux 上使用它,所以我认为它应该可以工作。您可以更改 xrandr 参数或将其交换为使用 arandr 配置。