Inicia uma segunda sessão X com resolução e som diferentes

7

Eu tenho duas telas conectadas com a visão dupla. Alguns aplicativos o tratam como um grande painel de 3840 x 1200, mas isso é bastante indesejável em jogos de tiro em primeira pessoa, já que suas vistas acabam no espaço entre as duas telas.

Então, normalmente, executo jogos de vinho em uma janela de 1920 * 1200px. O gerenciador de janelas torna a tela cheia em uma tela e isso funciona muito bem para alguns jogos. No entanto, alguns jogos ficam atrasados e isso permite que o rato voe para o lado da janela do Wine, fazendo com que o meu jogador gire como uma raposa com drogas.

E, em seguida, há toda uma carga de jogos nativos (X3, OpenArena, Quake4, QuakeWars, etc) que não têm um bom modo de janela. Usando o modo de janela no X3 resulta no mouse se tornar sensível ao uber.

Não seria legal se eu pudesse lançar alguns jogos em uma nova sessão X que usasse apenas uma tela ?!

Seria. Eu tenho tanto quanto isso para o 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"

Agora, isso tecnicamente usa duas telas, mas quando os jogos são iniciados no modo de tela cheia, uma vez que já foram definidos para 1920 * 1200, eles parecem se adaptar e usar um dos meus metamodos xorg.conf. Seria melhor se eu pudesse declarar explicitamente o modo neste executável. Existe uma maneira de fazer isso?

Também não há som. Eu tenho o patch WinePulse, então eu só preciso conectar o PulseAudio nesta sessão (ou vice-versa) e eu estou pronto para ir agora, eu acho.

Editar: Ralf percebeu algumas coisas, mas errou (ou interpretou erroneamente) algumas outras. Isso provavelmente se deve à minha pergunta excessivamente detalhada. Apesar da duração do post, só tenho dois problemas.

Aqui estão meus problemas em um cenário sucinto:

  • Como posso iniciar uma nova sessão X com uma resolução especificada? De preferência, gostaria de especificar um metamodo existente ou a resolução exata quando eu chamo X.

  • Como posso obter aplicativos na nova sessão X falando com o servidor PulseAudio correto? No momento, eles não parecem se alinhar. Eu testei isso com totem , não apenas aplicativos Wine.

por Oli 10.09.2010 / 15:12

3 respostas

3

Para responder à sua pergunta mais especificamente. Você pode usar nvidia-settings para mudar o meta-modo. Um fragmento da 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
    
por Ralf 10.09.2010 / 18:01
4

Para som, tudo o que você precisa fazer é executar ck-launch-session no 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"

O som dos dois monitores X é mesclado.

    
por Oli 10.09.2010 / 18:10
3

Executando mais de uma sessão X

Eu acho que isso é exatamente o que você quer. E a execução de mais de uma sessão X é possível, isso não significa que todos os drivers de vídeo permitem que você use a mesma placa de vídeo. Portanto, executar mais do que Xsession significa que você precisará de mais de uma placa de vídeo.

Metamodes

Os jogos podem alterar a resolução da sua área de trabalho e a configuração da sua tela usando meta-modos. Digamos que você tenha um monitor grande de 1680x1050 à esquerda e um monitor menor e antigo à direita que tenha 1025x768 como a resolução mais alta.

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

Quando você pode selecionar a resolução em um jogo, você terá estas opções:

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 

Você pode adicionar muitos meta-modos. Apenas certifique-se de que a porta de visualização 'resultante' tenha uma resolução exclusiva. Caso contrário, os jogos não entenderão.

Curiosamente, quando você faz tabulação alternativa de um jogo, seu sistema voltará para o meta-modo original, e quando o alt-tab voltar para um jogo, ele retornará ao meta-modo configurado para o jogo .

Vinho / vapor

O truque do meta-modo também funcionará com o vinho. No entanto, existem jogos que não suportam a alteração da resolução.

Uma boa solução alternativa:

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

Se você ainda tiver problemas com a captura de mouse com determinados jogos, poderá usar o modo mousewarp:

WINEFORCEMOUSEWARP=yes wine yourapp.exe

Pulseaudio & amp; Vinho

Você pode usar este PPA para obter um vinho que tenha o driver de áudio de pulso ativado. Certifique-se de também selecioná-lo usando wine-config.

 https://launchpad.net/~neil-aldur/+archive/ppa
    
por Ralf 10.09.2010 / 17:25