Запуск полноэкранных игр и программ в отдельном X-сервере

  •   09.05.2010
  •   31 комментарий
  •   Linux, Игры

О чем собственно речь? Речь о том, что при запуске полноэкранных приложений в Linux (чаще всего речь идет об играх) обычно нет никакой возможности сворачивать/разворачивать это самое полноэкранное приложение. То есть для того, чтобы увидеть свой рабочий стол, вам необходимо полностью закрыть программу. Мало того, если вдруг игра зависла (что к сожалению иногда случается), то завершить ее работу вы сможете только из консоли.

Так вот, это досадное недоразумение можно уладить, если запускать игры и другие полноэкранные программы в отдельном x-сервере.

Запуск полноэкранных игр и программ в отдельном X-сервере

В этом случае оба сервера будут работать независимо друг от друга и между ними можно будет легко переключаться. Настраивается это довольно просто, и ниже я расскажу, как именно. Я производил все манипуляции на Ubuntu 10.04, но для других дистрибутивов особых отличий быть не должно.

Скажу честно, идею статьи я позаимствовал на другом сайте. Вот только там были опущены некоторые важные нюансы (настройка звука, права пользователя), о которых я скажу в этой заметке.

Итак, первым делом разрешим запускать x-сервер не только суперпользователю (иначе в игры нам придется играть из-под рута, что никак не правильно). Сделать это проще простого. Hаберите в консоли следующую команду:

sudo dpkg-reconfigure x11-common

Вы увидите настройки пакета x11-common, в которых по-умолчанию разрешено запускать X сервер только пользователям из консоли. Изменим эту опцию на вариант «Кто угодно».

Теперь настроим звук. Если не сделать нижеописанной операции, то ваши игры будут запускаться без звука, что вас вряд-ли устроит. Итак, добавим вашего пользователя в группу аудио, выполнив в консоли следующую команду (замените username на имя вашего пользователя):

sudo gpasswd -a username audio

Сделали? Очень хорошо, подготовительные работы окончены. Теперь приступаем к основному действу.

Для каждой игры (программы), которую вы хотите запустить в отдельном X сервере, нужно создать отдельный скрипт. Сделать это также очень просто. В исходной статье предлагается хранить скрипты в каталоге ~/.config/bin. Я последовал этим рекомендациям, хотя вы можете хранить их где вам захочется. Итак, создаем в текстовом редакторе пустой файл и добавляем в него что-то вроде этого (пример для игры «Open Arena»):

%>cat ~/.config/bin/openarena.sh
	/usr/games/openarena

Точно также можно запускать игры из-под Wine, в этом случае файл будет выглядеть примерно так (пример для игры «Civilization 4»):

%>cat ~/.config/bin/civ4.sh
	cd ~/.wine/drive_c/games/Civilization\ 4/Beyond\ the\ Sword
	WINEDEBUG=-all wine Civ4BeyondSword.exe

Сохраните этот файл (в моем примере — в каталог ~/.config/bin).

Наш скрипт готов, теперь осталось запустить его. Команда запуска будет выглядеть следующим образом (опять пример для «Open Arena»):

startx ~/.config/bin/openarena.sh -- :1

Эту команду можно прописывать куда угодно, например на кнопку, ярлык в меню и т.д. Правда если прописать ее в меню Gnome, то система не определить, что под ~ имеется ввиду домашний каталог пользователя, поэтому для гномовского меню нужно прописывать полный путь (замените username на имя вашего пользователя):

startx /home/username/.config/bin/openarena.sh -- :1

Параметр :1 указывает, что наше приложение должно запускаться на виртуальном дисплее под номером «1» (система по-умолчанию загружается на нулевом дисплее).

В некоторых играх после таких переключений между X-серверами по центру дисплея начинает отображаться курсор. В этом случае поможет добавление в строку запуска параметра -nocursor.

В принципе, можно было бы обойтись одной командой без запуска дополнительного скрипта, но я читал, что такой вариант работает не со всеми играми. В любом случае, создать скрипт из двух строчек не такая уж сложная задача.

По аналогии можно повторить те же операции для любой другой игры или программы.

Все, после запуска игры она автоматически загрузится в новом X-сервере. Для того, чтобы переключиться обратно на основной дисплей, достаточно нажать комбинацию клавиш Ctrl+Alt+F7. Обратно в игру — комбинацией Ctrl+Alt+F8. Комбинации привожу для Ubuntu Linux, возможно в некоторых других дистрибутивах будут незначительные отличия.

После выхода из игры работа X-сервера также автоматически завершается и вы переключаетесь обратно на рабочий стол.

Приятные бонусы касательно звука:
Во-первых, можно переключившись на основной дисплей использовать глобальный регулятор громкости, во-вторых звук работает в обоих серверах, а это значит, что можно одновременно играть в игры и слушать музыку или подкасты.

Вот и все!