可能有xrandr没有响应拔下辅助显示器,移除HDMI / DisplayPort电缆?

我使用的是Nvidia GTX 950 GPU桌面系统,附带三个显示器。 一个显示器在HDMI输出端口,另外两个在DisplayPort端口上。

默认行为是关闭其中一个“辅助”监视器会导致xrandr调整虚拟桌面的大小并重新排列所有窗口以适应幸存的显示。

有没有办法让xrandr忽略HDMI电缆和/或相关显示器的移除,以便它保持“虚拟桌面”相同(即使窗口是屏幕外的,很难访问),而不是它是否可以将所有活动窗口整合到幸存的显示中? 此外,重新插入电缆和同一台显示器并将其重新点亮?

Ubuntu 16.04和16.10似乎都具有相同的基本行为。 我有两个作为启动选项。 谢谢。

编辑2017:我发现了一些bash和python脚本来尝试自动重新排列屏幕外窗口。 这些可以用来应对这种情况。 即使使用Ubuntu 17.04(格式全新安装),这个一般性问题仍然存在。 脚本讨论: 如何在断开第二台显示器后恢复屏幕外窗口? 并使用命令行将窗口移动到特定屏幕

这可能适用于HDMI / VGA端口,但不适用于DP,因为DP的某些标准应始终通过检测事件。

我可以在带有VGA / DP的Dell E6410上进行测试。 从VGA中移除电缆现在不会触发xrandr重置和移动窗口。

  1. gksu nvidia-settings
  2. 转到X配置选项卡,然后导出配置
  3. 仅复制设备部分
  4. sudo mkdir /etc/X11/xorg.conf.d/
  5. sudo nano /etc/X11/xorg.conf.d/90_my_nvidia_hacks.conf
  6. 粘贴设备部分

     Section "Device" Identifier "Device0" Driver "nvidia" VendorName "NVIDIA Corporation" BoardName "NVS 3100M" EndSection 
  7. 添加到此行Option "UseHotplugEvents" "false"

     Section "Device" Identifier "Device0" Driver "nvidia" VendorName "NVIDIA Corporation" BoardName "NVS 3100M" Option "UseHotplugEvents" "false" EndSection 
  8. 重启或重启lightdm

     sudo systemctl restart lightdm 

您可能会发现这个也很有用Option "AllowEmptyInitialConfiguration" "true"创建空的监视器部分,即使在X start上没有连接任何屏幕。

参考:

当我插入或拔出显示器时,我的显示器会以意想不到的方式重新配置,或关闭显示器然后重新打开电源。

这是“我在nvidia-settings中配置的显示设置不会保留”中描述的问题的特殊情况。 某些包含高级显示配置工具的桌面环境将自动配置显示布局以响应检测到的配置更改。 例如,当插入新显示器时,这样的桌面环境可以尝试恢复与当前连接的显示器集合一起使用的先前布局,或者可以基于其自己的策略配置默认布局。

在支持RandR 1.2或更高版本的X服务器上,NVIDIA X驱动程序报告在连接和断开显示器时通过RandR向X服务器显示热插拔事件。 这些热插拔事件可能会触发具有高级显示管理function的桌面环境,以更改显示配置。 这些更改可能会影响一组活动显示,其分辨率和相对于彼此的定位,每个显示颜色校正设置等设置。

除了通过连接或断开显示器生成的热插拔事件外,DisplayPort显示器将在电源关闭时生成热拔出事件,并在电源打开时生成热插拔事件,即使没有发生物理插入或拔出。 这可能导致热插拔引起的显示配置更改,而不会发生任何实际的热插拔动作。

如果显示热插拔事件导致不需要的配置更改,请尝试“我在nvidia-settings中配置的显示设置不会保留”中列出的解决方案和变通方法。 另一种解决方法是使用UseHotplugEvents X配置选项禁用NVIDIA X驱动程序的hotplug事件报告。 请注意,此选项对DisplayPort设备没有任何影响,DisplayPort设备必须报告所有热插拔事件以确保正常运行。


Option "UseHotplugEvents" "boolean"

启用此选项后,当显示器插入或拔出NVIDIA GPU时,NVIDIA X驱动程序将生成RandR显示更改事件。 某些桌面环境将侦听这些事件,并在添加或删除显示时动态重新配置桌面。

禁用此选项会禁止为非DisplayPort显示生成这些RandR事件,即通过VGA,DVI或HDMI连接的显示。 对于通过DisplayPort连接的显示器,无法抑制热插拔事件。

请注意,探测显示配置(例如,使用xrandr或nvidia-settings)可能会导致生成RandR显示更改的事件,无论是启用还是禁用此选项。 此外,某些VGA端口无法进行热插拔检测:在此类端口上,只能通过重新探测显示配置来检测显示的添加或删除。

默认值:开。 添加或删除显示时,驱动程序将生成RandR事件。

Option "AllowEmptyInitialConfiguration" "boolean"

通常,如果NVIDIA X驱动程序找不到连接到NVIDIA GPU的任何显示设备,它将无法启动。 AllowEmptyInitialConfiguration会覆盖该行为,以便即使没有连接任何显示设备,X服务器也会始终启动。

在启动X服务器时,启用此选项在配置中是有意义的,没有显示设备连接到NVIDIA GPU,但可能会在以后连接。 例如,某些监视器在关闭电源时不会显示为已连接,即使它们物理连接到GPU也是如此。

另一种有用的方案是基于Optimus的笔记本电脑,其中RandR 1.4显示卸载(参见第33章,使用RandR 1.4卸载图形显示)用于在非NVIDIA内部显示面板上显示屏幕,但外部显示器可能以后连接。

默认值:关闭。 如果找不到至少一个连接的显示设备,驱动程序将拒绝启动。