挂起+恢复后,使用 Manjaro 上的专有驱动程序连接到我的 NVidia 卡 (3050 ti) 的显示器在大约 95% 的情况下始终显示“无信号”。所有标准技巧(更新 BIOS、切换 nvidia-drm.modeset、各种其他内核标志、各种 XOrg 选项、使用 NVidia 的自定义 systemd 挂起服务,..)。
我使用 NVidia 卡作为多席位设置的第二个席位的一部分(使用 loginctl 和 lightdm)。这可能是相关的,因为第二个座位不允许虚拟终端切换,NVidia 自定义 systemd 挂起服务似乎正在使用虚拟终端切换来欺骗 XOrg 重新初始化。
(几个小时后,我找到了一个解决方法。我发布这个是为了让其他人免于头痛,也许是为了发现一个不那么棘手的解决方案。)
答案1
从挂起状态恢复后,xrandr --auto
可用于强制 Xorg te 重新初始化其输出。在某些情况下,似乎有必要先做一个xrandr --off
。自动化此操作的困难在于了解登录用户的 Xauthority 文件在哪里。 Lightdm 有自己的权限文件,它也提供访问权限并且位于标准位置。另外,第二个座位有时是DISPLAY=:0
,有时是DISPLAY=:1
。
您可以修改以下脚本以使用正确的输出设备并将其存储为/usr/lib/systemd/system-sleep/resume-seat1
:
#!/bin/sh
OUTPUT=HDMI-0
for DISPLAY in :0 :1 ; do
export DISPLAY
export XAUTHORITY=/run/lightdm/root/$DISPLAY
case "$1" in
pre)
xrandr --output $OUTPUT --off
;;
post)
xrandr --output $OUTPUT --auto
;;
esac
done
您需要使脚本可执行。
chmod a+x /usr/lib/systemd/system-sleep/resume-seat1