运行 19.04,具有三重显示器设置。我用 Wine 在我的中央显示器上全屏打开游戏,只需运行wine game.exe
. 然而,Wine 最近更新了,现在它在我最左边的显示器上打开了。我怎样才能让它回到我的中央显示器上打开?
我尝试--geometry
在 Wine 命令末尾使用该选项,但似乎没有什么不同。该软件仍然在同一位置打开。
中央监视器也被确认为主监视器。
使用 Nvidia 驱动程序 430.26。
如果我记得,X 不会为每个监视器创建单独的屏幕。相反,它将监视器组合成一个逻辑屏幕。看着nvidia-settings
,我看到 X 屏幕 0 显示为 5040x1086。我的三台显示器从左到右设置为 1680x1050、1920x1080 和 1440x900。
我不知道这是否是 X Server 一直以来的做法,但如果每台显示器都是其自己的单独屏幕,也许我的问题可以解决。有没有办法做到这一点?还是有更好/更简单的解决方案来解决这个问题?
大约一年前,我问过一个类似的问题,关于如何在特定显示器上打开终端。不幸的是,同样的方法似乎不适用于这里的情况。
编辑:
显示的信息nvidia-settings
表明X Screen 0
包含我的三台显示器的显示名称为hiigaran:0.0
。
根据earthmeLon 的建议,我尝试SDL_VIDEO_FULLSCREEN_HEAD
在我希望用来启动相关应用程序的命令之前添加。以下三个命令用于测试应用程序将在哪个监视器上打开:
SDL_VIDEO_FULLSCREEN_HEAD=0 wine game.exe
SDL_VIDEO_FULLSCREEN_HEAD=1 wine game.exe
SDL_VIDEO_FULLSCREEN_HEAD=2 wine game.exe
使用这些命令和单独使用这些命令之间没有观察到差异wine game.exe
。该应用程序仍然在最左侧的显示器上全屏打开。
通常,您使用单个屏幕,并且您的所有显示器都属于该屏幕,如您所见。通过使用多个屏幕,您可以更准确地定义应用程序的加载位置,但您无法在不同屏幕之间移动应用程序。
如果您使用多个屏幕,您将通过
DISPLAY
变量确定哪个屏幕:为了设置哪个监视器用于全屏应用程序,以及确保所有监视器不完全用于全屏应用程序,我最幸运地设置了
SDL_VIDEO_FULLSCREEN_HEAD
环境变量,以便在窗口管理器中可用。您将其设置为显示器的编号,从零开始:对于三台显示器,您可以在
0
、1
和之间进行选择2
。您可以在~/.xinitrc
/中设置它~/.xsessionrc
。您放置它export
的位置高度取决于您的窗口管理器如何启动,使用 GDM、LightDM 或startx
等。您可以通过在运行时设置变量来测试这是否适合您,或者哪个监视器是哪个监视器:
注意: OP 提到此测试不起作用。
将其设置为默认监视器或确保它不是您的默认监视器可能是有意义的。默认监视器可以设置为
xrandr
:Wine 虚拟桌面
如果所有这些都失败了,您可以将 Wine 配置为使用虚拟桌面。这将导致 Wine 创建一个 Windows 窗口,您可以指定此窗口的分辨率(以匹配您的显示器的分辨率)。通过 Wine 运行的全屏 Windows 应用程序将仅填充该窗口。您可以使用窗口管理器将其移动到正确的桌面/监视器。
这可以通过打开 Wine 配置 (winecfg) 并打开图形选项卡来完成,或者
/desktop=name,1024x768
在运行 wine 时使用标志:因此,似乎在虚拟桌面上运行 Wine 是可行的方法。我一直在避免这样做,因为如果我要将桌面设置为我想要使用它的显示器的分辨率,虚拟桌面的标题栏与 Ubuntu 的顶部/活动栏相结合会导致相当一部分虚拟桌面在底部被切断。再加上码头会让事情变得更糟。
在摆弄了一下之后,我想出的最佳解决方案如下:
gnome-control-center
在“设置”>“设备”>“键盘”中设置了热键,用于将窗口移动到不同的显示器,以及用于进入全屏虽然在正确的显示器上打开已经全屏的软件本来是理想的,但这对我来说是一个合适的解决方案,尽管从技术上讲,它更像是一种解决方法,而不是实际的解决方案。