Начните второй сеанс X с другим разрешением и звуком
У меня есть два экрана, подключенных вместе с TwinView. Некоторые приложения рассматривают его как одну большую панель 3840*1200, но это довольно нежелательно в шутерах от первого лица, поскольку ваши прицелы оказываются в промежутке между двумя экранами.
Поэтому я обычно запускаю Wine игры в окне 1920*1200px. Оконный менеджер делает его полноэкранным на одном экране, и это прекрасно работает в некоторых играх. Однако некоторые игры запаздывают, и это позволяет мыши вылетать из окна вина, в результате чего мой игрок крутится, как лиса, на наркотиках.
И еще есть целый ряд нативных игр (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 к этому сеансу (или наоборот), и я думаю, что сейчас все готово.
Изменить: Ральф подобрал несколько вещей, но пропустил (или неправильно истолковал) некоторые другие. Вероятно, это связано с моим слишком многословным вопросом. Несмотря на длину поста, у меня только две проблемы.
Вот мои проблемы в сжатой обстановке:
Как я могу начать новый сеанс X с указанным разрешением? Я бы предпочел указать существующий метамод или точное разрешение при вызове X.
Как я могу получить приложения в новом сеансе X, говорящем с правильным сервером PulseAudio? На данный момент они, похоже, не выстраиваются в очередь. Я проверил это с
totem
, а не только приложения Wine.
3 ответа
Чтобы ответить на ваш вопрос более конкретно. Вы можете использовать nvidia-settings, чтобы изменить мета-режим. Фрагмент из настроек nvidia --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
Для звука все, что вам нужно сделать, это запустить 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 объединяется.
Запуск более одного сеанса X
Я думаю, что это именно то, что вы хотите. А запуск более X сессии возможен, это не значит, что все видеодрайверы позволяют использовать одну и ту же видеокарту. Таким образом, запуск более Xsession означает, что вам потребуется более одной видеокарты.
MetaModes
Игры могут изменять разрешение вашего рабочего стола и настройки вашего экрана с помощью мета-режимов. Скажем, у вас есть большой монитор 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.
Если у вас все еще есть проблемы с захватом мыши в некоторых играх, вы можете использовать режим mousewarp:
WINEFORCEMOUSEWARP=yes wine yourapp.exe
Pulseaudio & Wine
Вы можете использовать этот PPA, чтобы получить вино, в котором включен драйвер аудио-импульса. Не забудьте также выбрать его с помощью wine-config.
https://launchpad.net/~neil-aldur/+archive/ppa