Автор – Димитрий Бойчев (Dimitar Boichev)
Приходилось ли вам играть в оконном режиме из-за того, что не могли переключиться по alt-tab в другое окно, в котором вас ждал вызов Skype/Jabber/и т.д.? Приходилось ли вам вообще отказываться от игры из-за крайне низкой скорости прорисовки (FPS)? А не бывало ли вам обидно, когда в двухмониторной системе мышка убегала на другой монитор вместо того, чтобы прокрутить карту в StarCraft? Если бывало что-то похожее, то самое время освоить новую технологию: запуск игр в отдельном сеансе (X-session)!
Я попытался выяснить, как решить три вышеописанных проблемы, и обнаружил, что игры, запущенные в новом сеансе, работают быстрее. Counter Strike Source 640×480 с качеством LOW тормозил так, словно был запущен c NORMAL, но когда я запустил его в отдельном сеансе, он «летал» в режиме 1024×748 NORMAL. Слишком хорошо, чтобы быть правдой? Отнюдь! Позвольте объясниться.
Первое, что надо сделать, это запустить новый сеанс Х-сервера, для чего надо открыть терминал, запустить nano от имени администратора (посредством sudo) и поправить файл Xwrapper.config:
sudo nano /etc/X11/Xwrapper.config
nano – это простой текстовый редактор, работающий в консоли.
Чтобы узнать больше о /etc/X11/Xwrapper.config, откройте консоль и выполните:
man Xwrapper.config
Открыв Xwrapper.config, найдите строку «allowed_users=console» и измените ее на «allowed_users=anybody». Чтобы сохранить изменения, нажмите Ctrl+X; nano спросит, действительно ли вы хотите сохранить внесённые изменения, нажмите Y, далее редактор выведет имя файла, в который будет сохранён текст, в этой строке просто нажмите Enter – мы же хотим заменить старый файл.
Теперь мы можем запускать дополнительные Х-серверы из-под уже работающего X-сервера, но для этого не помешает перезапустить уже запущенный сервер. Я не уверен, что этот шаг необходим, но он не повредит. После перезапуска сервера настроим игры для запуска в отдельном сеансе. Сначала убедитесь, что игры запускаются не в «виртуальном рабочем столе»: запустите winecfg или откройте
Программы — Wine — Configure Wine.
Если на закладке «Приложения» упомянут EXE-файл вашей игры, щелкните по нему и откройте закладку «Графика», там не должно быть галочки в пункте «Эмулировать виртуальный рабочий стол». Если она там есть, то игра будет запущена в верхнем правом углу монитора, а это совсем не то, что нам нужно.
После этого я написал несколько сценариев для запуска нужных мне игр в отдельном сеансе. То есть я могу запустить их как в основном, так и в отдельном Х-сервере. Если вы не знаете, как писать сценарии оболочки, вот пример (для игры StarCraft и пользователя cherva. Не забудьте исправить параметры под свою обстановку):
Откройте текстовый редактор, например GEdit для GNOME или KWrite для KDE, и наберите:
#!/bin/bash X :2 -ac -terminate -config only_one_monitor.conf & sleep 2 DISPLAY=:2 nice -20 env WINEPREFIX="/home/cherva/.wine" wine "C:\Games\Starcraft\Starcraft.exe"
Х — это команда запуска нового сеанса Х-сервера.
-ac — запрещает контроль доступа на уровне узлов, разрешая доступ с любого узла и позволяя любому узлу изменять список управления доступом. Используйте очень осторожно! Этот параметр обычно используется для проведения дистанционного тестирования.
-terminate — заставляет сервер отключиться после завершения запущенной в нем программы.
-config — использовать отдельный файл конфигурации для Х-сервера (помните проблемы с прокруткой в StarCraft?). Файл only_one_monitor.conf — по сути тот же самый /etc/X11/xorg.conf, из которого удалены настройки для второго монитора, так что мышка, подведённая к краю монитора, останется в пределах этого монитора, и игровое поле StarCraft будет прокручиваться. Остальные подробности можно прочесть по адресу: http://linux.die.net/man/1/xserver
Далее команда sleep 2 задерживает выполнение сценария на 2 секунды, чтобы дать новому Х-серверу достаточно времени для запуска.
DISPLAY=:2 — запустить следующую команду в нашем новом Х-сервере, а не в основном.
nice -20 — запустить процесс с наивысшим приоритетом (для большей производительности), далее указан запускаемый процесс: обычная команда, которую Wine формирует при создании ярлыка для программы в меню или на рабочем столе.
env WINEPREFIX — каталог настроек wine.
wine — собственно команда запуска эмулятора Wine. «C:\Games\Starcraft\Starcraft.exe» — запускаемая игра.
Набрав сценарий, сохраните его в какой-нибудь каталог. Затем откройте этот каталог в файловом менеджере (Nautilus или еще каком). Найдите сохранённый файл: нам надо сделать его исполняемым, для чего щёлкните по нему правой кнопкой мышки и выберите «Свойства». Перейдите на вкладку «Права» и поставьте галочку в строке «Позволять выполнение файла как программы». Закройте окно «Свойства» и откройте сценарий двойным щелчком. На Ubuntu вам будет предложено выбрать желаемое действие:
«Запустить в терминале / Показать / Отменить / Запустить».
Выбирайте «Запустить» и наслаждайтесь FPS >20, прокруткой в стратегиях и отсутствием проблем с переключением между окнами. Если вам понадобится вернуться в изначальный Х-сервер, нажмите Ctrl+Alt+F7, а оттуда в игру — Ctrl+Alt+F9 (или иногда — Ctrl+Alt+F8). Имейте в виду: я не бог весть какой знаток Linux, так что могут быть и другие способы сделать то же самое, но у меня и так работает, чему я очень рад.