Linux强制应用程序在特定的显示器上全屏显示

对于工作,我正在开发一个非常专业化的软件,需要运行两个全屏应用程序,每个显示器上一个。 为了简单起见,我目前使用的是AMD Radeon HD显卡(目前无法正确回想确切的版本,但是相当新)。

如果可能的话,我想坚持使用SDL2,但是如果我需要做一些黑客攻击或移动到另一个库,我相当适应这一点。

所以,我的问题是,是否有可能在Linux的不同显示器上运行两个全屏应用程序(如果是这样,我需要什么样的设置步骤)? 列举显示器以获取其左上angular的x / y位置,我最好select哪一个,这样我可以告诉SDL将我的窗口移动到该显示器上进行全屏显示?

注意:我没有发布到askubuntu,因为我不确定这个问题是否严格围绕着Ubuntu平台。

更新:

这是来自xrandr -q的输出:

 Screen 0: minimum 320 x 200, current 3200 x 1080, maximum 3200 x 3200 DFP1 disconnected (normal left inverted right x axis y axis) DFP2 disconnected (normal left inverted right x axis y axis) DFP3 disconnected (normal left inverted right x axis y axis) DFP4 disconnected (normal left inverted right x axis y axis) DFP5 disconnected (normal left inverted right x axis y axis) DFP6 disconnected (normal left inverted right x axis y axis) DFP7 disconnected (normal left inverted right x axis y axis) DFP8 disconnected (normal left inverted right x axis y axis) DFP9 connected 1920x1080+1280+0 (normal left inverted right x axis y axis) 533mm x 312mm 1280x1024 50.0 + 75.0 60.0 30.0 24.0 1920x1080 60.0 + 50.0* 59.9 30.0 25.0 30.0 24.0 30.0 30.0 24.0 1776x1000 50.0 59.9 25.0 24.0 30.0 30.0 1680x1050 50.0 60.0 30.0 24.0 1400x1050 50.0 60.0 30.0 24.0 1600x900 50.0 60.0 30.0 24.0 1440x900 50.0 59.9 30.0 24.0 1280x960 50.0 60.0 30.0 24.0 1280x800 50.0 59.8 30.0 24.0 1152x864 50.0 59.9 75.0 30.0 24.0 1280x768 50.0 59.8 30.0 24.0 1280x720 60.0 50.0 59.9 30.0 24.0 1024x768 50.0 75.0 70.1 30.0 24.0 60.0 1152x648 50.0 59.9 800x600 50.0 30.0 24.0 72.2 75.0 60.3 56.2 720x576 59.9 30.0 24.0 50.0 720x480 50.0 30.0 24.0 60.0 59.9 640x480 50.0 30.0 24.0 75.0 72.8 67.0 60.0 59.9 DFP10 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 376mm x 301mm 1280x1024 60.0*+ 76.0 75.0 72.0 1280x960 76.0 75.0 72.0 60.0 1152x864 75.0 60.0 1280x768 76.0 75.0 72.0 60.0 1280x720 76.0 75.0 72.0 60.0 1024x768 75.0 70.1 60.0 800x600 72.2 75.0 60.3 640x480 75.0 72.8 67.0 59.9 640x350 60.0 70.1 CRT1 disconnected (normal left inverted right x axis y axis) 

我试图寻找一些论坛,以更好地解释如何处理这些信息,似乎我应该这样做:

xrandr --output DFP9 --auto --output DFP10 --auto

当我这样做,我仍然只有一个显示(“:0”)。

你的设置是什么? 你真的有2个单独的X显示器,或者你是否使用Xinerama来结合这两个?

如果你使用2个显示器,他们应该有他们自己的-display或者DISPLAY env变量。 你可以使用它来执行一个新的应用程序。

 $ echo $DISPLAY :0.0 $ xterm -display :0.0 

在另一个显示器中打开一个shell来获取其他的显示env变量。

还有几何形状,格式为[Wth,Ht + X + Y]

 $ xterm -geometry 132x80+500+0 

当启用Xinerama时,其他显示器通常是+ X + Y偏移量。

当然,这确实需要应用程序来处理命令行参数。 然后在初始化窗口时将它们传递给X. 对于xterm,宽度和高度是文本字符的单位,其中X / Y是屏幕像素。

如果您可以控制X配置,并且其他应用程序不会显示在生产工作站上,则可能需要禁用“Xinerama”功能并设置两个屏幕。 然后,您可以将您的应用程序连接到:0.0:0.1并从每个屏幕获取屏幕大小。