
Естественно, статья предназначена для пользователей Linux. Я производил все манипуляции на Ubuntu 10.04, но для других дистрибутивов особых отличий быть не должно.
А о чем собственно речь? Речь о том, что при запуске полноэкранных приложений в Linux (чаще всего речь идет об играх) обычно нет никакой возможности сворачивать/разворачивать это самое полноэкранное приложение. То есть для того, чтобы увидеть свой рабочий стол, вам необходимо полностью закрыть программу. Мало того, если вдруг игра зависла (что к сожалению иногда случается), то завершить ее работу вы сможете только из консоли.
Так вот, это досадное недоразумение можно уладить, если запускать игры и другие полноэкранные программы в отдельном x-сервере. В этом случае оба сервера будут работать независимо друг от друга и между ними можно будет легко переключаться. Настраивается это довольно просто, и ниже я расскажу, как именно.
Скажу честно, идею статьи я позаимствовал на другом сайте. Вот только там были опущены некоторые важные нюансы (настройка звука, права пользователя), о которых я скажу в этой заметке.
Итак, первым делом разрешим запускать 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-сервера также автоматически завершается и вы переключаетесь обратно на рабочий стол.
Приятные бонусы касательно звука:
Во-первых, можно переключившись на основной дисплей использовать глобальный регулятор громкости, во-вторых звук работает в обоих серверах, а это значит, что можно одновременно играть в игры и слушать музыку или подкасты.
Вот и все!
| ← Чиним splash-заставку в Ubuntu 10.04 | Ubuntu 10.04 и устаревшие библиотеки libstdc++5, libopenal.so.0 → |
|---|
Запуск полноэкранных игр и программ в отдельном X-сервере
Пытаюсь подобным образом запустить CoD4, ругается на звук miles, что мол не установлены дрова...
При этом в основном сеансе Хов все вроде работает...
Не подскажете как победить?
Можно ведь просто на кнопке или в меню прописать команду:
startx /usr/games/openarena -- :1
Разве нет?
Цитата:
См. в статье пример для игры «Civilization 4».
startx playonlinux -- :1
Я делаю так и всё пучком
Т.е. например, запускаешь Counter Strike 2D, играешь на каком-нибудь интернет-сервере, переключаешься основной Х-сервер на минуту (например, музыку другую захотелось включить), возвращаешься в игру, а тебя уже на сервере нет.
При этом интернет-соединение для приложений, работающих основном Х-сервере, работает нормально (IRC, ICQ, DC++ - соединения не теряют).
Интернет подключен через VPN (PPTP), Ubuntu 10.04, Gnome. Только у меня такой баг? Это можно как-нибудь вылечить?
при попытке запустить
$startx xterm -- :1
получаем:
(EE) Device USB Device: failed to initialize for relative axes.
аналогично
$ X :1
(EE) Device USB Device: failed to initialize for relative axes.
xorg.conf:
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/input/mice"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection
А такие проблемы только с одной игрой, или со всеми?
А если звук из игры в :1 работает в обоих иксах, это нормально?
У меня тоже так, и меня это не смущает.
Точно так же как не смущает и то, что звук с основного дисплея работает в игре на :1. Наоборот, мне именно такой режим и нужен, поскольку я часто совмещаю игры с прослушиванием подкастов.
Когда я запускаю Team Fortress 2, по центру экрана появляется курсор, и в :0, и в :1.
Подскажите, что делать.
Цитата:
Заранее спасибо
cd ~/.wine/drive_c/Games/Diablo\ II\ -\ Lord\ of\ Destruction
WINEDEBUG=-all wine Diablo\ II.exe -direct
startx ~/.config/bin/Diablo2.sh -- :1
любуюсь черным экраном
Server is already active for display 1
If this server is no longer running, remove /tmp/.X1-lock
and start again.
Please consult the The X.Org Foundation support
at wiki.x.org
for help.
ddxSigGiveUp: Closing log
XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":1"
after 7 requests (7 known processed) with 0 events remaining.
Цитата:
... и о методе ее решения:
Цитата:
Говоря по-русски: удалите файл «/tmp/.X1-lock» и запустите сервер заново.
_XSERVTransSock etINETCreateLis tener: ...SocketCreateLis tener() failed
_XSERVTransMake AllCOTSServerLi steners: server already running
Fatal server error:
Cannot establish any listening sockets - Make sure an X server isn't already running
Please consult the The X.Org Foundation support
at wiki.x.org
for help.
Please also check the log file at "/var/log/Xorg.1.log" for additional information.
[ 96307.192] _XSERVTransSock etINETCreateLis tener: ...SocketCreateLis tener() failed
[ 96307.193] _XSERVTransMake AllCOTSServerLi steners: server already running
[ 96307.193]
Fatal server error:
[ 96307.193] Cannot establish any listening sockets - Make sure an X server isn't already running
[ 96307.194]
Please consult the The X.Org Foundation support
at wiki.x.org
for help.
[ 96307.194] Please also check the log file at "/var/log/Xorg.1.log" for additional information.
[ 96307.194]
[ 96307.194] ddxSigGiveUp: Closing log
ALSA lib pcm_pulse.c:1008:(_snd_pcm_p ulse_open) Unknown field handle_underrun
waiting for X server to shut down XIO: fatal IO error 11 (Ресурс временно недоступен) on X server ":1.0"
after 14 requests (14 known processed) with 0 events remaining.
ddxSigGiveUp: Closing log
Hedgewars - без звука вообще =( правда использую PulseAudio
Steam - CStrike - пытается запуститься в новых иксах, но потом что то идёт не так и она запускается в текущих =(