如何在 X 中设置 0.1 虚拟显示

如何在 X 中设置 0.1 虚拟显示

我想创建一个虚拟监视器,将其作为单独的屏幕添加到我当前的显示器(在 X 意义上)并通过 VNC 共享。现在,我想要做的事情在 Arch Linux Wiki 文章下面清楚地描述了多头设置

这是使用 X 配置多个显示器的原始方法,并且已经存在了几十年。每个物理显示器都被分配为一个 X 屏幕,虽然您可以在它们之间移动鼠标,但它们或多或少是独立的。通常,X 显示器在 DISPLAY 环境变量中设置一个标识符,例如 :0,但在此配置中,每个屏幕都有不同的 $DISPLAY 值。第一个屏幕是:0.0,第二个屏幕是:0.1,依此类推。使用此配置,除了一些具有多屏幕支持的特殊程序(例如 GIMP 和 Emacs)之外,无法在屏幕之间移动窗口。对于大多数程序,您必须在启动时更改 DISPLAY 环境变量,以使程序显示在另一个屏幕上:

# Launch a terminal on the second screen
$ DISPLAY=:0.1 urxvt &

或者,如果每个屏幕上都有一个终端,启动程序将继承 DISPLAY 值并显示在启动它们的同一屏幕上。但是在屏幕之间移动应用程序需要将其关闭并在另一个屏幕上重新打开它。这种工作方式确实有一定的优势,例如,如果您在另一个屏幕上工作,在一个屏幕上弹出的窗口不会夺走您的注意力 - 每个屏幕都是相当独立的。

Tl;dr:显示如:0.1

我过去创建过虚拟显示器,它们是当前屏幕的扩展,带有xrandr.

xrandr --newmode "1024x768_60.00"  64.11  1024 1080 1184 1344  768 769 772 795  -HSync +Vsync
xrandr --addmode VIRTUAL1 1024x768_60.00  
xrandr --output VIRTUAL1 

出现的问题是我需要在监视器之间拉出窗口(从实际监视器拉到 VNC 监视器)。我如何指定使新显示成为新屏幕?我想做与此相反的事情问题,引发“问题”,以便窗口在调用它的同一监视器中打开。

答案1

出现的问题是我需要在屏幕之间拉动窗口。

你不能,除非应用程序是专门为支持 at (大多数 X 应用程序不是)而编写的。阅读man XOpenDisplay,您将看到 X 应用程序返回该显示器上的屏幕列表,但已经有工具包操作XtOpenDisplay强制您指定屏幕。

如果您想在“屏幕之间”移动任意 X 应用程序的窗口,这意味着“屏幕”不能是 X 屏幕,而是相同 X 显示/屏幕组合的一部分。

因此,您想要的是单个帧缓冲区,显示在两台显示器上(这部分很简单),然后需要通过 VNC 共享一台显示器的帧缓冲区。我不知道如果不修补您正在使用的任何 VNC 服务器,这是否可能。

相关内容