我买了一个新的戴尔 XPS 9730(英特尔超高清显卡 620)以及戴尔 TB16扩展坞,一切运行正常,只有当我在休眠状态下将其与 TB16 扩展坞断开连接时才可以 -当我唤醒它时,笔记本电脑打开了,但内置屏幕保持黑暗。
连接到底座时,笔记本电脑盖始终处于关闭状态,输出将显示在 2 个外部戴尔显示器上(1920x1200 和 1920x1080)。但是当与端口断开连接时,输出当然只能显示在内置显示器上。当我从休眠状态唤醒系统而不改变输出源时,一切正常。此外,如果我拔掉电源后重新启动笔记本电脑,一切都会正常。我在 16.04 和 18.04 上遇到了同样的情况。
Xrandr 规格(xrandr -q
):链接到图片
我正在玩一些休眠后脚本,例如/lib/systemd/system-sleep/update-displays
:
#!/bin/sh
# Reset monitors in case laptop was detached
set -e
echo "Checking enabled monitors"
if [ "$2" = "hibernate" ] || [ "$2" = "hybrid-sleep" ]; then
case "$1" in
post)
if [xrandr -q|grep DP-1-2|egrep -v disconnected] && [xrandr -q|grep DP-2-2|egrep -v disconnected]; then
echo "Enabling built-in monitor"
xrandr --output eDP-1 --auto
fi
;;
esac
fi
但没有成功...也许是脚本中存在一些错误?我怀疑 xrandr 在唤醒时不会刷新并且它仍然使用“旧”配置。还有其他方法可以刷新吗?或者以某种方式调整以前的帖子脚本?
其他一切都运行良好,我非常喜欢这款笔记本电脑,只有这个问题有点令人沮丧,因为每次我从基座插入/拔出它时都必须重新启动系统。
任何帮助都将不胜感激,谢谢!
答案1
解决了。。我的$2
参数(休眠或混合睡眠)上的事件过滤器有误。我还简化了脚本,以防其他人觉得它方便:
#!/bin/sh
# Reset xrandr at wakeup in case any display setup change was made
case "$2" in
hibernate|suspend)
case "$1" in
post)
xrandr --auto
echo "System waking up from -$2- at $(date '+%d/%m/%Y %H:%M:%S')" >> /tmp/update-displays.txt
;;
esac
;;
esac
在 Ubuntu 18.04 中输入/lib/systemd/system-sleep
ie/lib/systemd/system-sleep/update-displays
并设置正确的权限(我的是 755)。