Configuring Linux
29 April 2008

Linux, ATI, Compiz-Fusion и игры

Практически всем известно, что видеокарты ATI для работы под Linux — далеко не лучший выбор. Но тем не менее, по каким-либо причинам, у многих пользователей видеокарты именно этой фирмы (У меня например ATI X1300 в ноутбуке). Я не буду пересказывать полностью ситуацию с драйверами, опишу лишь свои проблемы (использую проприетарные драйвера): первая — мерцание видео при включенном композитном менеджере окон (в моем случае — compiz fusion), вторая — мерцание 3D приложений, опять же, при включенном Compiz. И если проблема с видео решается практически сразу, то с играми было тяжелее. Приходилось либо писать скрипт, отключающий Compiz на время игры, либо делать это вручную. Что не очень приятно, согласитесь.
Поиски решения навели меня на интересный скрипт — xgame и его оболочку xgame-gtk.

Этот скрипт переносит игры в другую X-сессию и там уже запускает. Соответственно, в другой сессии можно отключить Compiz совсем простыми манипуляциями.

Все, что ниже, частично перевод статьи Xgame on Ubuntu Feisty Fawn

Итак, для начала нам необходимо разрешить себе запуск дополнительных X-сессий.
sudo sed -i -e «s/\(allowed_users=\).*/\1anybody/» \
/etc/X11/Xwrapper.config


Теперь сконфигурируем Xauth так, чтобы он увидел новую сессию
echo «list» | xauth | grep localhost | sed -e «s/.*[ \t]\(.*\)$/add :1.0 MIT-MAGIC-COOKIE-1 \1/» > /tmp/xauth.mine
cat /tmp/xauth.mine | xauth


Делаем копию нашего xorg.conf для всяческих изменений впоследствии
sudo cp /etc/X11/xorg.conf /etc/X11/xorg_games.conf


И редактируем его так, как нам надо
sudo gedit /etc/X11/xorg_games.conf


У себя я выставил
Section «Extensions»
Option «Composite» «Disable»
EndSection


После чего скачиваем сам скрипт xgame и даем ему права на запуск
# GUI версия
wget --output-document=/tmp/xgame-gtk2 www.xs4all.nl/~masterpe/Perl/xgame-gtk2
sudo cp /tmp/xgame-gtk2 /usr/bin/xgame-gtk2
sudo chmod +x /usr/bin/xgame-gtk2

# Консольная версия
wget --output-document=/tmp/xgame www.xs4all.nl/~masterpe/Perl/xgame
sudo cp /tmp/xgame /usr/bin/xgame
sudo chmod +x /usr/bin/xgame


Ну и можно запускать командой
xgame-gtk2


Есть некоторая проблема с играми, запускаемыми в WINE. WINE запускается как фоновый процесс, после чего останавливается. Т.о. необходимо сделать WINE «постоянным» процессом, для чего необходимо выполнить следующее:
sudo sh -c «echo \»#\!/bin/bash
wine \\\"\\\$@\\\"

while [ -n \\\"\\\`ps ax | egrep -v grep | egrep wineserver | sed -e 's/[ ]*\(\d*\)[\t ]*?.*/\1/'\\\`\\\" ]; do
sleep 1s;
done\" \
> /usr/bin/p-wine"
sudo chmod +x /usr/bin/p-wine

Данный скрипт остановится лишь тогда, когда остановится wine-приложение.
Теперь надо просто поменять в строках запуска игр wine на p-wine (но вот только лично у меня на любимой Oni это не заработало).

При запуске самого скрипта xgame необходимо будет в настройках выставить название используемого xorg-файла. После чего «набить» его командами запуска игр. Тестировал я на openarena и warsow — работает идеально. Приятно.
P.S. для любителей qt есть Qgamex.

+15
2.2k 26
Comments 40
Top of the day