web-dev-qa-db-fra.com

Commencer une seconde session X avec une résolution et un son différents

J'ai deux écrans accrochés avec Twinview. Certaines applications le traitent comme un gros panneau 3840 * 1200, mais cela n’est pas souhaitable pour les tireurs à la première personne, car votre vision se retrouve dans l’espace entre les deux écrans.

Je lance donc généralement des jeux Wine dans une fenêtre 1920 * 1200px. Le gestionnaire de fenêtres le rend plein écran sur un écran et cela fonctionne très bien pour certains jeux. Cependant, certains jeux sont à la traîne et permettent à la souris de voler par le côté de la fenêtre Wine, ce qui provoque la rotation de mon lecteur.

Et puis, il y a tout un tas de jeux natifs (X3, OpenArena, Quake4, QuakeWars, etc.) qui n'ont pas un bon mode fenêtré. L'utilisation du mode fenêtré sur X3 rend la souris extrêmement sensible.

Ne serait-il pas agréable si je pouvais lancer des jeux dans une nouvelle session X utilisant seulement un écran?!

Ce serait. J'ai aussi loin que ça pour 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"

Maintenant, cela utilise techniquement deux écrans mais lorsque les jeux démarrent en mode plein écran une fois déjà définis en 1920 * 1200, ils semblent s’adapter et utiliser l’un de mes métamodes xorg.conf. Ce serait mieux si je pouvais indiquer explicitement le mode dans cet exécutable. Y-a-t-il un moyen de faire ça?

Il n'y a pas non plus de son. J'ai le correctif WinePulse et il me faut juste connecter PulseAudio à cette session (ou l'inverse) et je suis prêt à partir pour l'instant, je pense.

Edit: Ralf a ramassé quelques choses mais en a manqué (ou mal interprété) d’autres. Ceci est probablement dû à ma question trop verbeuse. Malgré la longueur du poste, je n’ai que deux problèmes.

Voici mes problèmes dans un contexte succinct:

  • Comment puis-je démarrer une nouvelle session X avec une résolution spécifiée? J'aimerais de préférence spécifier un métamode existant ou la résolution exacte lorsque j'appelle X.

  • Comment faire en sorte que les applications de la nouvelle session X communiquent avec le bon serveur PulseAudio? Pour le moment, ils ne semblent pas s'aligner. J'ai testé cela avec totem, pas seulement les applications Wine.

7
Oli

Pour répondre à votre question plus précisément. Vous pouvez utiliser nvidia-settings pour changer le méta-mode. Un fragment de 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

Pour le son, tout ce que vous avez à faire est d’exécuter ck-launch-session dans le script:

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

Le son des deux écrans X est fusionné.

4
Oli

Exécution de plusieurs sessions X

Je pense que c'est exactement ce que vous voulez. Et exécuter plus d'une session X est possible, cela ne signifie pas que tous les pilotes vidéo vous permettent d'utiliser la même carte vidéo. Si vous utilisez plus de Xsession, cela signifie que vous aurez besoin de plus d’une carte vidéo.

Métamodes

Les jeux peuvent changer la résolution de votre bureau et la configuration de votre écran en utilisant des méta-modes. Supposons que vous ayez un grand moniteur 1680x1050 à gauche et un moniteur plus ancien et plus petit à droite, qui présente une résolution maximale de 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

Lorsque vous pouvez sélectionner la résolution dans un jeu, vous disposez des options suivantes:

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 

Vous pouvez ajouter beaucoup de méta-modes. Assurez-vous simplement que la fenêtre "résultante" a une résolution unique. Sinon, les jeux ne le comprendront pas.

Il est intéressant de noter que lorsque vous quittez le jeu en alt-tab, votre système reviendra au méta-mode original et quand alt-tab reviendra dans un jeu, il reviendra au méta-mode configuré pour le jeu.

Vin/Vapeur

L'astuce meta-mode fonctionnera également avec le vin. Cependant, il y a des jeux qui ne supportent pas de changer la résolution.

Une belle solution de contournement:

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

Si vous rencontrez toujours des problèmes de capture de la souris avec certains jeux, vous pouvez utiliser le mode mousewarp:

WINEFORCEMOUSEWARP=yes wine yourapp.exe

Pulseaudio & Wine

Vous pouvez utiliser ce PPA pour obtenir un vin sur lequel le pilote Pulse-audio est activé. Assurez-vous également de le sélectionner avec wine-config.

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