WineОптимизируем работу полноэкранных игр в Wine

Итак
wine game.exe
поехали…

Примерно так чаще всего пользователи запускают win-игры с помощью wine.
А можно и по другому…

Я мало играю в игры из linux, но около года назад наткнулся на интересный способ некоторой оптимизации работы и последующего управления играми (и другими полноэкранными приложениями) в linux, и на всякий случай написал себе скрипт следующего содержания:

#!/bin/bash
X :2 -ac -terminate -config only_one_monitor.conf 
sleep 2
DISPLAY=:2 nice -20 env WINEPREFIX="~/.wine" wine $1


И это все? Да, это все. Всего 2 строчки и море результата.

Подробнее:
#!/bin/bash
Думаю, что все знают, и тем не менее, эта строка указывает на путь к коммандной оболочке или интерпретатору, от которого будет выполняться скрипт.

X :2 -ac -terminate -config only_one_monitor.conf & sleep 2

X — запускаем новый сеанс X-сервера.
:2 — задаем номер X-сервера (:2 обычно свободен).
-ac — разрешаем доступ с любого узла с правами изменять списки управления доступом.
-terminate — закрываем сессию по завершению запущенного в нем приложения.
-config only_one_monitor.conf — запскаем сессию с конфигурацией, указанной в файле only_one_monitor.conf (это версия xorg.conf для одного монитора, для корректной работы приложений, не рассчитанных на несколько мониторов)

sleep 2
— задержка в 2 секунды, обычно более чем достаточная для запуска X-сессии.

DISPLAY=:2 nice -20 env WINEPREFIX="~/.wine" wine $1

DISPLAY=:2 — запускаем команду в терминале, номер которого указали выше.
nice -20 — высокий приоритет для высокой производительности.
env WINEPREFIX="~/.wine" — указываем каталог настроек для wine (по умолчанию в домашнем каталоге)
wine $1 — запускаем wine с параметром, переданным всему скрипту, и являющимся путем к exe-шнику от игры.

Cохраняем, например как fastwine и делаем его исполняемым
chmod +x fastwine

Или средствами файл-браузера через свойства файла.

Осталась одна маленькая деталь — позволить запускать дополнительные Х-сервера. Для этого в /etc/X11/Xwrapper.config меняем
allowed_users=<b>console</b> 
на
allowed_users=<b>anybody</b>


Так же проверьте, что приложения запускаются не в виртуальном рабочем столе windows. Если это так, то запустите winecfg и измените соответствующий пункт настроек.

Ну и для удобства делаем линк в /usr/local/bin (или /usr/bin, или в /bin, в зависимости от ваших предпочтений).

Теперь вместо
wine game.exe

используем
fastwine game.exe


Преимущества метода (если кто еще не осознал):
1) Повышение производительности
2) При зависании и других проблемах падают (или можно уронить) только те иксы, в которых запущена игра.
3) Не все приложения, тем более из иксов, ранее могли корректно переключаться по alt-tab, теперь просто переходим в другой терминал, а потом возвращаемся в терминал с игрой (обычно это терминалы 7, 8 и 9 в зависимости от дистрибутива. проверьте эмпирическим путем по ctrl+alt+FX, где X номер терминала).

P.S. Буду рад комментам и другим интересностям подобного рода.

Комментарии (10)

  • avatar
  • ostin
  • 31 августа 2010, 13:42
  • #
  • 2
Способ замечательный. Особенно он помогает, при работающем компизитном оконном менеджере.

ЗЫ: раньше настраивал по вики ArchLinux-а. Играл в нативный Quake4 (из-за popup-ов quake4 терял фокус, и не хотел получать обратно)
  • avatar
  • ostin
  • 31 августа 2010, 14:01
  • #
  • 1
Есть один недостаток: поскольку игра запускается без wm, то горячие кнопки не работают(банально музыку не сменить, без перехода в основной Х-сервер).
Ну, к сожалению, не панацея :) Как и Wine в целом :( Но если изначально залить нормарный плейлист… :D
  • avatar
  • h31
  • 31 августа 2010, 19:27
  • #
  • 0
Буфер обмена не работает :( Так что не всегда подходит
Дело хорошее. Прикрутить бы это к Steam-играм; но, боюсь, совсем уж затруднительно будет.
  • avatar
  • Stil
  • 01 сентября 2010, 18:08
  • #
  • 2
спасибо большое! выглядит здорово, сейчас затестим )
Ещё один повод, почему Wine всегда останется Wine-ом, и почему нативный ReactOS идеологически лучше :P
Ну никто не спорит, что Wine — это не Windows. При всей моей любви к linux, я считаю, что если есть потребность (если она действительно есть!!!) в той же винде, то стоит ее поставить и вероятно даже купить (или получить лицензию, например, по MSDN подписке для разработчиков или студентов).
Я, например, практически не использую Wine и не играю в игры, мне нравится сам подход в данном методе, со своими плюсами и минусами, но лично для меня в этих 2х строчках скрипта было много нового и интересного.
пользуюсь способом попроще
#!/bin/bash
xinit "" $* — :1
а подробнее и чем лучше?
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.