如果我只使用窗口管理器而不是桌面环境,如何获得自动停靠/取消停靠分辨率更新?

如果我只使用窗口管理器而不是桌面环境,如何获得自动停靠/取消停靠分辨率更新?

当我将笔记本电脑停靠/移除时,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

此示例的一些提示和要点:

  1. 它仅适用于第一个通过图形登录的用户。
  2. 您需要调整脚本以匹配您的显示器设置。请参阅 xrandr 手册页以获取帮助。
  3. 我不确定 udev 规则是否会匹配每个人的监视器状态更改事件。我曾经udevadm monitor --property弄清楚该用什么。
  4. 在重新配置之前,我必须--off先关闭所有显示器,然后 xrandr 才允许我配置新的显示器。我认为这与驱动程序有关,而且没有很好的文档记录。
  5. 我使用外部屏幕来决定如何重新配置​​。这可能并不适合所有人。
  6. xrandr 默认设置了一些对我来说最佳的分辨率。如果需要,请参阅手册页以获取有关如何设置自定义分辨率的详细信息。

相关内容