Starten Sie eine zweite X-Sitzung mit unterschiedlicher Auflösung und unterschiedlichem Sound

7

Ich habe zwei Bildschirme mit Twinview verbunden. Einige Anwendungen behandeln es als ein großes 3840 * 1200-Panel, aber das ist bei Ego-Shootern ziemlich unerwünscht, da Ihre Sicht in der Lücke zwischen den beiden Bildschirmen endet.

Daher führe ich normalerweise Wine-Spiele in einem 1920 * 1200px-Fenster aus. Der Fenstermanager macht es auf einem Bildschirm im Vollbildmodus und das funktioniert bei einigen Spielen hervorragend. Einige Spiele verzögern sich jedoch und das ermöglicht es der Maus, aus der Seite des Weinfensters zu fliegen, was dazu führt, dass sich mein Spieler wie ein Fuchs auf Drogen dreht.

Und dann gibt es eine ganze Menge nativer Spiele (X3, OpenArena, Quake4, QuakeWars usw.), die keinen guten Fenstermodus haben. Die Verwendung des Fenstermodus auf X3 führt dazu, dass die Maus überempfindlich wird.

Wäre es nicht schön, wenn ich einige Spiele in einer neuen X-Sitzung starten könnte, die nur einen Bildschirm verwendet?!

Es würde. Für Steam bin ich so weit gekommen:

#!/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"

Jetzt werden technisch gesehen zwei Bildschirme verwendet, aber wenn Spiele im Vollbildmodus gestartet werden, nachdem sie bereits auf 1920 * 1200 eingestellt wurden, scheinen sie sich anzupassen und einen meiner xorg.conf-Metamoden zu verwenden. Es wäre besser, wenn ich den Modus in dieser ausführbaren Datei explizit angeben könnte. Gibt es eine Möglichkeit, das zu tun?

Es ist auch kein Ton zu hören. Ich habe den WinePulse-Patch, also muss ich PulseAudio nur in diese Sitzung einbinden (oder umgekehrt), und ich denke, ich kann jetzt loslegen.

Edit: Ralf hat ein paar Dinge aufgegriffen, aber einige andere verpasst (oder falsch interpretiert). Dies liegt wahrscheinlich an meiner überaus ausführlichen Frage. Trotz der Länge des Beitrags habe ich nur zwei Probleme.

Hier sind meine Probleme in einer prägnanten Umgebung:

  • Wie kann ich eine neue X-Sitzung mit einer bestimmten Auflösung starten? Ich möchte vorzugsweise einen vorhandenen Metamode oder die genaue Auflösung angeben, wenn ich X aufrufe.

  • Wie kann ich Anwendungen in der neuen X-Sitzung dazu bringen, mit dem richtigen PulseAudio-Server zu kommunizieren? Im Moment scheinen sie nicht in einer Reihe zu stehen. Ich habe dies totemnicht nur mit Wine Apps getestet .

Oli
quelle
Nein, ich verstehe, was Sie versucht haben und warum. --- Mir wurde ein alternativer Weg gegeben. Und versucht, eine Art Mini-Tutorial bereitzustellen, um allgemeine Probleme in Bezug auf Twinview / Wein / Spiele zu lösen. Die Verwendung einer separaten X-Sitzung, obwohl möglich, würde ich niemals als Lösung für ein Mousewarp-Problem empfehlen, das Sie einfach mit WINEFORCEMOUSEWARP = yes wine yourapp.exe
Ralf
Das funktioniert in diesem Fall nicht, weil mein Problem auftritt, wenn Modern Warfare 2 nicht mehr funktioniert (halb bekannter Fehler). Während der Verzögerung kann die Maus den Bildschirm verlassen. Reine Metamoden würden funktionieren, aber ich habe in der Vergangenheit zu viel Zeit damit verschwendet, Panels wieder an der richtigen Stelle zu platzieren, um allein darauf zu vertrauen.
Oli
Funktioniert WINEFORCEMOUSEWARP nicht in Modern Warfare 2?
Ralf
Nicht für mich. Ich glaube nicht, dass es mit Spielen wie Bioshock zusammenhängt, bei denen es funktioniert. Die Maus fühlt sich die meiste Zeit so an, als ob sie im Schlamm steckt, und dann ist WEEEEE auf dem nächsten Bildschirm. Sicher, es ist etwas, das behoben wird, je mehr ich darüber nachdenke;)
Oli

Antworten:

3

Um Ihre Frage genauer zu beantworten. Sie können nvidia-settings verwenden, um den Metamodus zu ändern. Ein Fragment aus 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
Ralf
quelle
4

Für den Sound müssen Sie lediglich ck-launch-sessiondas Skript ausführen :

#!/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"

Der Ton von beiden X-Displays wird zusammengeführt.

Oli
quelle
Es hat anfangs funktioniert, aber ich kann keinen Weg finden, es in ein Skript einzufügen, das ich danach jwm und xscreensaver aufrufe (beide werden ignoriert oder überhaupt nicht ausgeführt ...). Außerdem starte ich zum Testen ck-launch-sessionvor X und bekomme jetzt Folgendes: xterm: Xt error: Can't open display: :1Vermutlich muss ich neu starten ?; Wie auch immer, gibt es einen Tipp, wonach Sie suchen sollten, wo Sie sich befinden sleep 10? 10 ist zu viel ... wenn wir etwas durchverfolgen könnten qdbus, würde es viel helfen!
Wassermann Power
ok, ich habe es auf diese Weise behoben, xterm -display :1 -e "ck-launch-session"&damit es die anderen Terminals nicht stört und trotzdem den Sound funktioniert! Es gibt auch wenig Dokumentation darüber ck-launch-session, ich verstehe nicht ganz, was ich getan habe, ich weiß nur, dass es funktioniert hat :)
Aquarius Power
Bei diesem Fehler xterm: Xt error: Can't open display: :1müssen Sie nur das Terminal verlassen und es wird bereinigt. versuchen Sie es ck-list-sessionsvorher und nachher.
Wassermann Macht
3

Ausführen von mehr als einer X-Sitzung

Ich denke, das ist genau das, was du willst. Wenn mehr als eine X-Sitzung ausgeführt werden kann, bedeutet dies nicht, dass Sie bei allen Videotreibern dieselbe Grafikkarte verwenden können. Wenn Sie also mehr als Xsession ausführen, benötigen Sie mehr als eine Grafikkarte.

Metamoden

Spiele können die Auflösung Ihres Desktops und die Einrichtung Ihres Bildschirms mithilfe von Metamodi ändern. Angenommen, Sie haben links einen großen 1680 x 1050-Monitor und rechts einen älteren, kleineren Monitor mit 1025 x 768 als höchster Auflösung.

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

Wenn Sie die Auflösung in einem Spiel auswählen können, haben Sie folgende Möglichkeiten:

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 

Sie können viele Metamodi hinzufügen. Stellen Sie einfach sicher, dass das "resultierende" Ansichtsfenster eine eindeutige Auflösung hat. Sonst verstehen die Spiele es nicht.

Interessanterweise wechselt Ihr System beim Alt-Tab aus einem Spiel zurück in den ursprünglichen Metamodus, und wenn Sie Alt-Tab wieder in ein Spiel einbinden, kehrt es zum konfigurierten Metamodus für das Spiel zurück.

Wein / Dampf

Der Meta-Modus-Trick funktioniert auch mit Wein. Es gibt jedoch Spiele, die das Ändern der Auflösung nicht unterstützen.

Eine schöne Problemumgehung:

- 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. 

Wenn Sie bei bestimmten Spielen immer noch Probleme mit der Mauserfassung haben, können Sie den Mousewarp-Modus verwenden:

WINEFORCEMOUSEWARP=yes wine yourapp.exe

Pulseaudio & Wein

Mit dieser PPA können Sie einen Wein erhalten, für den der Puls-Audio-Treiber aktiviert ist. Stellen Sie sicher, dass Sie es auch mit wine-config auswählen.

 https://launchpad.net/~neil-aldur/+archive/ppa
Ralf
quelle
Multiple X: Sie können mehr als eine auf einer Karte haben. Es klappt. Der Start ist kein Problem. Metamoden: Auch für mich kein Problem, diese sind bereits gut definiert. Ich mag es nicht, Metamoden auf meinem realen Display (: 0) zu verwenden, weil dadurch der Desktop beschädigt und Anwendungen ausgeführt werden. Deshalb möchte ich dies auf: 2 Wine + PA: Wie ich in der Post sagte, führe ich bereits die WinePulse-Patches aus. Mein Problem liegt zwischen der neuen X-Sitzung und PA.
Oli
(Ich versuche nicht gemein zu sein. Ich schätze die Mühe wirklich. Ich erkläre nur, dass dies die Probleme, die ich habe, nicht wirklich beantwortet , so dass ich es nicht als Antwort akzeptieren kann. Aber lass es hier, wie andere Leute es vielleicht finden nützlich.)
Oli
Cool zu hören, dass mehrere X tatsächlich funktionieren. Sie sind dort jedoch etwas rauer. - Ich hatte noch nie ein Problem, bei dem Metamoden meinen Desktop beschädigen. Außer wenn ein Spiel beim Herunterfahren abstürzt und die Auflösung nicht wiederhergestellt wird. In diesem Fall sollten Sie Ihre Probleme beheben, indem Sie das Spiel in ein Skript einbinden, das die Auflösung wiederherstellt.
Ralf