web-dev-qa-db-ja.com

異なる解像度とサウンドで2番目のXセッションを開始します

Twinviewで2つのスクリーンをつなぎ合わせています。一部のアプリケーションは、それを1つの大きな3840 * 1200パネルとして扱いますが、2人のスクリーンの隙間に視界が入るので、ファーストパーソンシューティングではそれはかなり望ましくありません。

だから私は通常1920 * 1200pxのウィンドウでWineゲームを実行します。ウィンドウマネージャーは、1つの画面で全画面表示するため、一部のゲームに最適です。ただし、ゲームによっては遅れが生じ、マウスがワインウィンドウの横から飛び出し、プレイヤーがドラッグのキツネのように回転することがあります。

そして、ウィンドウモードが適切でないネイティブゲーム(X3、OpenArena、Quake4、QuakeWarsなど)が大量にあります。 X3でウィンドウモードを使用すると、マウスが非常に敏感になります。

1つの画面を使用するだけの新しい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"

現在、これは技術的に2つの画面を使用していますが、1920 * 1200に設定されているゲームがフルスクリーンモードで起動すると、xorg.confメタモードのいずれかを適応して使用しているようです。この実行可能ファイルでモードを明示的に指定できればより良いでしょう。それを行う方法はありますか?

音もありません。 WinePulseパッチを入手したので、PulseAudioをこのセッションにフックする(またはその逆)必要があり、今のところ行ってよいと思います。

編集:ラルフはいくつかのことに気づいたが、他のいくつかを逃した(または誤解した)。これはおそらく、私の冗長な質問によるものです。投稿の長さにもかかわらず、私には2つの問題しかありません。

簡潔な設定での私の問題は次のとおりです。

  • 指定した解像度で新しいXセッションを開始するにはどうすればよいですか? Xを呼び出すときに、既存のメタモードまたは正確な解像度を指定したいと思います。

  • 適切なPulseAudioサーバーと通信する新しいXセッションでアプリケーションを取得するにはどうすればよいですか?現時点では、彼らは並んでいないようです。私はこれをWineアプリだけでなくtotemでテストしました。

7
Oli

より具体的に質問に答えるため。 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
Ralf

サウンドについては、スクリプトで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ディスプレイからのサウンドがマージされます。

4
Oli

複数の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キーを押してゲームに戻ると、設定されたゲームのメタモードに戻ります。

ワイン/スチーム

メタモードのトリックはワインでも機能します。ただし、解像度の変更をサポートしていないゲームがあります。

素敵な回避策:

- 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を使用して、Pulseオーディオドライバーが有効になっているワインを取得できます。 wine-configを使用して選択してください。

 https://launchpad.net/~neil-aldur/+archive/ppa
3
Ralf