我有两个屏幕通过 twinview 连接在一起。有些应用程序将其视为一个 3840*1200 的大面板,但这在第一人称射击游戏中是相当不理想的,因为您的视线最终会进入两个屏幕之间的间隙。
因此,我通常在 1920*1200px 的窗口中运行 Wine 游戏。窗口管理器会在一个屏幕上全屏显示,这对某些游戏来说效果很好。但是有些游戏会延迟,这会导致鼠标飞出 Wine 窗口的一侧,导致我的玩家像吸毒的狐狸一样旋转。
此外,还有大量原生游戏(X3、OpenArena、Quake4、QuakeWars 等)没有良好的窗口模式。在 X3 上使用窗口模式会导致鼠标变得非常敏感。
如果我可以在仅使用一个屏幕的新 X 会话中启动一些游戏,那不是很好吗?!
是的。对于 Steam,我了解到以下信息:
#!/bin/sh
X :3 -ac & nvidia-settings --load-config-only
sleep 10 # wait for X to catch up
cd ~/.wine/drive_c/Program\ Files/Steam/
DISPLAY=:3 WINEDEBUG=-all wine "Steam.exe"
现在这在技术上使用了两个屏幕,但是当游戏在全屏模式下启动时,一旦它们已经设置为 1920*1200,它们似乎会适应并使用我的 xorg.conf 元模式之一。如果我可以在此可执行文件中明确说明模式,那就更好了。有办法吗?
也没有声音。我已经安装了 WinePulse 补丁,所以我只需要将 PulseAudio 连接到此会话(反之亦然),我想现在就可以了。
编辑:Ralf 注意到了一些问题,但忽略了(或误解了)其他一些问题。这可能是因为我的问题太冗长了。尽管帖子很长,但我只遇到了两个问题。
以下是我所遇到的简洁问题:
如何以指定的分辨率启动新的 X 会话?我最好在调用 X 时指定现有的元模式或精确的分辨率。
如何让新 X 会话中的应用程序与正确的 PulseAudio 服务器通信?目前,它们似乎没有对齐。我已经用 测试过
totem
,而不仅仅是 Wine 应用程序。
答案1
对于声音,您只需运行ck-launch-session
脚本:
#!/bin/sh
X :3 -ac & nvidia-settings --load-config-only
sleep 10 # wait for X to catch up
cd ~/.wine/drive_c/Program\ Files/Steam/
DISPLAY=:3 ck-launch-session
DISPLAY=:3 WINEDEBUG=-all wine "Steam.exe"
两个 X 显示器的声音被合并。
答案2
更具体地回答您的问题。您可以使用 nvidia-settings 来更改元模式。来自 nvidia-settings --help 的片段:
-a, --assign=[ASSIGN]
The ASSIGN argument to the '--assign' commandline option is of the form:
{DISPLAY}/{attribute name}[{display devices}]={value}
This assigns the attribute {attribute name} to the value {value} on the X
Display {DISPLAY}. {DISPLAY} follows the usual {host}:{display}.{screen}
syntax of the DISPLAY environment variable and is optional; when it is
not specified, then it is implied following the same rule as the
--ctrl-display option. If the X screen is not specified, then the
assignment is made to all X screens. Note that the '/' is only required
when {DISPLAY} is present.
{DISPLAY} can additionally include a target specification to direct an
assignment to something other than an X screen. A target specification
is contained within brackets and consists of a target type name, a colon,
and the target id. The target type name can be one of "screen", "gpu",
"framelock", "vcs", "gvi", or "fan"; the target id is the index into the
list of targets (for that target type). The target specification can be
used in {DISPLAY} wherever an X screen can be used, following the syntax
{host}:{display}[{target_type}:{target_id}]. See the output of
`nvidia-settings -q all` for information on which target types can be
used with which attributes. See the output of `nvidia-settings -q
screens -q gpus -q framelocks -q vcs -q gvis -q fans` for lists of
targets for each target type.
The [{display devices}] portion is also optional; if it is not specified,
then the attribute is assigned to all display devices.
Some examples:
-a FSAA=5
-a localhost:0.0/DigitalVibrance[CRT-0]=0
--assign="SyncToVBlank=1"
-a [gpu:0]/DigitalVibrance[DFP-1]=63
答案3
运行多个X会话
我认为这正是您想要的。而且可以运行多个 X 会话,但这并不意味着所有视频驱动程序都允许您使用相同的视频卡。因此,运行多个 Xsession 意味着您将需要多个视频卡。
元模式
游戏可以使用元模式更改桌面的分辨率和屏幕的设置。假设左侧有一台 1680x1050 的大显示器,右侧有一台较旧、较小的显示器,其最高分辨率为 1025x768。
Section "Screen"
Identifier "Default Screen"
DefaultDepth 24
Option "TwinView" "1"
Option "TwinViewXineramaInfoOrder" "CRT-0"
Option "metamodes" "CRT-0: 1680x1050 +0+0, CRT-1: 1024x768 +1680 +0; CRT-0: 1680x1050 +0+0, CRT-1: NULL; CRT-0: 1400x900 +0+0, CRT-1: NULL;"
EndSection
当您可以在游戏中选择分辨率时,您将拥有以下选项:
2704x1050 this refers to the total viewport size of using two monitors
1680x1050 this means the second monitor is off, and you will use a high resolution
1400x900 this also only used the first monitor, but it will run a bit quicker
您可以添加许多元模式。只需确保“结果”视口具有唯一的分辨率。否则游戏将无法理解它。
有趣的是,当您按 alt-tab 退出游戏时,系统将切换回原始元模式,而当您按 alt-tab 返回游戏时,它将返回到为该游戏配置的元模式。
葡萄酒/蒸汽
元模式技巧也适用于 wine。不过,有些游戏不支持更改分辨率。
一个很好的解决方法:
- turn on emulate virtual desktop, in wine-config, and set it to your desktop size
- compiz will automatically turn it into 'fullscreen' mode and hide panels
- the mouse will be captured properly. Your other monitor is still on, and displays whatever is there. You will need to alt=tab to reach it though. Perhaps its a good idea to associate a shortcut to minimize window.
如果您在玩某些游戏时仍遇到鼠标捕捉问题,则可以使用鼠标变形模式:
WINEFORCEMOUSEWARP=yes wine yourapp.exe
Pulseaudio 与 Wine
您可以使用此 PPA 来获取已启用脉冲音频驱动程序的 wine。请确保还使用 wine-config 选择它。
https://launchpad.net/~neil-aldur/+archive/ppa