在 Linux 中运行双(或更多!)屏幕设置已有 20 年了,我对设置布局并不陌生,但我的笔记本电脑上遇到了一个让我困惑的问题。该机器是戴尔 XPS,最初销售时预装了 Ubuntu。 Ubuntu 在我拿到它的那天就被淘汰了,从那以后它就一直是一台 Arch Linux 机器。
显示适配器是运行标准 i915 驱动程序的 Intel Iris 540。内部显示屏是 HIDPI 3200x1800 面板。我正在尝试通过具有 HDMI 或 VGA 连接的 USB-C 适配器连接外部显示器。我遇到的问题在任何一种连接类型和几种不同的显示器上都是相同的,所以这似乎不是显示器的特性。
我遇到的问题仅在尝试运行 Awesome WM 时出现。我的机器上还加载了 Gnome,并且由于某种原因,外部显示器没有任何问题。从控制中心进行的快速配置关闭了镜像,并将外部显示器排列在内部(主)显示器的右侧,一切都很顺利。
在 Awsesome 中,我运行了一些xrandr
命令并打开了显示屏,但它拒绝正确布局。它可以镜像内部显示器的任何部分(或缩放版本),但将其布置为主显示器之外的额外空间会导致奇怪的结果。将其排列在主显示器的右侧似乎可行,因为光标在屏幕上移动到外部显示器上的预期位置,但不会在那里绘制任何窗口。只有光标。屏幕显示永久停留在打开时主设备上 +0+0 帧缓冲区中的内容。可以将 Windows 拖到那里,Awesome 似乎知道正确的几何形状,但除了光标之外没有任何内容被渲染。
如果我将其映射到主显示器的左侧,则外部显示器可以工作,但外部显示器的宽度(例如 1280px)将冻结在主显示器的右侧。主图左边缘上的任何内容(例如 1280 像素 x 1800 像素的条子)都会绘制在右侧并冻结。
我什至曾经arandr
从 Gnome 保存工作布局并从 Awesome 运行生成的脚本,但结果是相同的。布局在 Gnome 中的任何排列中都能完美工作,但 borks 和 leaves 会带有旧缓冲区中的垃圾,而不是在 Awesome 负责时渲染当前的显示排列?
我还应该寻找什么? Gnome 正在做什么来让它高兴而我没有在 Awesome 中做?
答案1
嘎!五六次会议让我在这个问题上绞尽脑汁,但我什么也没得到。终于抽出时间写一个问题,四分钟后,我意识到罪魁祸首可能是什么——果然……
合成器。
我的普通 Awesome 登录会话运行了compton
很多年,在数十台机器上表现良好,所以我几乎没有再三考虑,但由于某种原因,它不喜欢这个视频驱动程序,需要在更改显示器布置后重新启动。在进行更改之前将其杀死xrandr
,然后再次启动似乎效果很好。我的显示器现在可以按预期工作。