当我将笔记本电脑停靠/移除时,Gnome 和 KDE 都会改变分辨率。
它们似乎或多或少会根据计算机的状态自动执行此操作。如果我运行 IceWM 或 Openbox 之类的程序,我希望有这种行为。甚至是 XFCE。
有什么建议吗?
答案1
我有/etc/udev/rules.d/80-monitor.rules
ACTION=="change", SUBSYSTEM=="drm", ENV{HOTPLUG}=="1", ENV{DEVNAME}=="dri/card0", RUN+="/etc/udev/monitors.sh"
然后在/etc/udev/monitors.sh
(标记为可执行文件):
#!/bin/sh
set -e
export DISPLAY=:0
export XAUTHORITY=$(getent passwd $(w -h -s|awk '$3==":0"{print $1}'|sed 1q)|cut -d: -f6)/.Xauthority
desktop() {
xrandr --output LVDS1 --off || true
xrandr --output HDMI3 --auto --primary --output HDMI2 --auto --right-of HDMI3
}
laptop() {
xrandr --output HDMI3 --off || true
xrandr --output HDMI2 --off || true
xrandr --output LVDS1 --auto
}
if xrandr|grep -q 'HDMI2 connected'; then
desktop
else
laptop
fi
此示例的一些提示和要点:
- 它仅适用于第一个通过图形登录的用户。
- 您需要调整脚本以匹配您的显示器设置。请参阅 xrandr 手册页以获取帮助。
- 我不确定 udev 规则是否会匹配每个人的监视器状态更改事件。我曾经
udevadm monitor --property
弄清楚该用什么。 - 在重新配置之前,我必须
--off
先关闭所有显示器,然后 xrandr 才允许我配置新的显示器。我认为这与驱动程序有关,而且没有很好的文档记录。 - 我使用外部屏幕来决定如何重新配置。这可能并不适合所有人。
- xrandr 默认设置了一些对我来说最佳的分辨率。如果需要,请参阅手册页以获取有关如何设置自定义分辨率的详细信息。