一段时间以来,我一直在 Ubuntu 上与笔记本电脑上的多个(2 个以上,而不是 1 个以上)显示器作斗争。驱动程序支持问题等问题依然存在。我目前的解决方案是一台传统的扩展显示器和另一台通过 USB 转换器运行的显示器,但这并不理想。我的问题是... 有没有办法运行主机(在本例中是我的 Ubuntu 笔记本电脑)并通过 VNC 连接到它,然后使用 VNC 连接在“Windows”VNC 客户端上添加尽可能多的显示器?从我所读的内容来看,我发现的问题是主机需要在 VNC 连接之前了解所有显示器...而不是之后。
我想这可能对我来说是一种创造性的方式,最终可以将 2-3 个(或更多)显示器连接到 ubuntu 笔记本电脑,而无需在将显示器连接到 USB 适配器时与驱动程序发生冲突并且性能不佳。
我并不担心 VNC 的速度,这都是本地网络流量。
答案1
如果 USB 视频适配器因性能原因“不太理想”,除非问题完全出在 USB 总线瓶颈上,否则可能没有其他方法可以添加相同数量的显示器并获得可接受的性能,至少在有大量运动的情况下是这样。话虽如此,这里有一种方法可以将任意数量的显示器“连接”到笔记本电脑上,所有这些都在单个键盘和鼠标的控制下,而无需专门的硬件:
在笔记本电脑上设置 VNC,这样当您登录时,它就会连接到自己独立的 X 服务器(而不是当前驱动显示器的 :0 显示器)。现在您可以设置其他计算机。从每台计算机,您都可以打开一个 VNC 会话(具有自己独立的 X 桌面会话)并全屏运行它。(您也可以通过 LTSP 或其他方式或任何其他远程控制方法直接使用 X 连接到 X 会话;只需将它们显示在屏幕上即可。使用 VNC,您的其他计算机甚至不必运行 Linux。)好的,太棒了。现在您有 25 个彼此相邻的显示器,但您还有 25 对 kbd/鼠标。现在怎么办?
首先,在其他每台计算机上安装 VNC。验证您是否可以连接到每台计算机并查看它们显示的桌面。因此,您可以从笔记本电脑 VNC 连接到另一台计算机,并查看在您自己的笔记本电脑上生成的“私人”桌面,但该桌面显示在另一台计算机的显示器上以及您自己的 VNC 客户端窗口中。好的,现在我们知道这是可行的。但这仍然不是您想要的,所以接下来是下一步。
输入“x2vnc”。基本上,它是一个发送键盘/鼠标事件的 VNC 客户端,但不会费心获取视频。与传统的客户端窗口(您激活它以便它知道将鼠标/键盘事件发送到远程计算机而不是本地会话)不同,您可以将其配置为在将鼠标移动到屏幕边缘时激活它。您可以让它连接到显示额外桌面的计算机或连接到它们所连接的您自己的笔记本电脑上运行的 vnc 服务器。
无论如何,x2vnc 魔法使您可以将显示器连接到位于主计算机右侧的远程计算机,当您将鼠标移过屏幕的右边缘时,它会神奇地继续从右侧显示器的左侧移动,就像它是双显示器一样,而实际上您正在控制另一台计算机(在这种情况下,它反过来控制您自己机器上的桌面会话)。它会跟踪鼠标的位置,以便当您回到左侧时,您的指针会在正确的时间和位置重新出现在本地显示器上,因此整个过程感觉非常自然。
我玩 x2vnc 已经有一段时间了。我知道它很灵活,但我不知道具体怎么用。不过,这样一来,您至少可以连接 4 台其他机器:屏幕的顶部、底部、左侧和右侧边缘。当然,如果您的其中一台机器有 2 台显示器,并允许您将 VNC 查看器跨越这两台显示器,那么您就可以远离本地中央显示器。就此而言,您可能可以在一台远程机器上运行 x2VNC(Windows 机器上的 win2VNC),这样当您继续沿同一方向移动时,它就可以控制另一台机器;这将允许您在一个方向上拥有一长串显示器,每台显示器都会为 a-controls-b-which-controls-c-which-controls-d-which-views-a2 链添加另一层。数百台显示器!
当然,在运行多个独立 X 服务器的情况下,您仍然无法顺利地在会话之间传输窗口(尽管我似乎记得有一个应用程序可以让您做到这一点,充当应用程序和多个 X 服务器之间的代理)。如果您将其他计算机配置为“胖客户端”(使用 LTSP),则可以这样做,这样您的应用程序至少可以与笔记本电脑半同步(您必须定期更新胖客户端映像以使其与已安装的映像保持同步),同时利用其他计算机上的 CPU/Mem 来减轻笔记本电脑的负载。
不过,对于笔记本电脑来说,这似乎是一个非常复杂的基础设施!