Running program in separate X display (Русский)

From ArchWiki
Jump to: navigation, search

Tango-preferences-desktop-locale.pngЭта страница нуждается в сопроводителеTango-preferences-desktop-locale.png

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков ArchWiki

Преамбула

Описываемый ниже метод подойдет в принципе для любого приложения, но наибольшую пользу он приносит для полноэкранных игр (как нативных, так и запускаемых под wine'ом).

Как известно, в большинстве своём свернуть полноэкранную игру в линуксе нереально — можно, конечно, попробовать переключиться на другой виртуальный рабстол, только большинство игр этого не любят и начинают глючить или вовсе вылетают. Кроме того, многие оконные менеджеры тоже вносят свою лепту в несовместимость (в основном оное касается игр, запускаемых под wine), особенно в этом деле отличается compiz.

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

Требования

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

Подготовка

Для начала создайте файл шелл-скрипта для запуска игры. У меня все такие скрипты хранятся в ~/.config/bin, но дело ваше, где они будут, это не принципиально совершенно. Вот пример для скрипта запуска игры nexuiz:

%>cat ~/.config/bin/nexuiz.sh
/usr/bin/nexuiz-glx-svn

т.е. просто указание бинарника. Вот пример для запуска Civilization 4 под wine:

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

— для некоторых приложений лучше менять текущий каталог на тот, где лежит бинарник.

Y Команда запуска предельно проста:

startx /foo/bar/script -- :1

т.е. для nexuiz из примера выше она будет такой:

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

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

Параметр ":1" указывает на номер виртуального дисплея для создаваемого X-сервера (первый по умолчанию запускается на дисплее ":0").

Теперь можете вешать эту команду на любую кнопку, иконку, алиас в шелле или что вы там предпочитаете и использовать.

Использование утилиты xlaunch

Незадолго после написания статьи в обновлениях AUR'а обнаружил утилитку xlaunchAUR[ссылка недействительна: сохранено в aur-mirror]. Она удобнее описанного мной способа ручной настройки запуска, так как для её использования после установки достаточно команды xlaunch app.

Она сама выберет свободный дисплей для запуска приложения. Кроме способа запуска механизм использования от вышеприведённого способа ничем не отличается.

Как это выглядит

При запуске экран почернеет, создастся новый X-сервер и в нем запустится указанное приложение. Завершение работы приложения будет означать автоматическую остановку этого дополнительного X-сервера. Переключаться между старым и новым можно с помощью хоткеев Ctrl+Alt+F7 для старого, Ctrl+Alt+F8 для нового.

Профит

Что это нам в итоге дает?

  • Большую совместимость — оконный менеджер больше не может помешать работе игры, т.к. на новом X-сервере оконного менеджера нет как такового — игра сама себе оконный менеджер. Другие приложения тоже не будут мешать (скажем попапами), т.к. исполняются на другом дисплее.
  • Большую производительность — во многих ненативных играх прирост заметен безоружным глазом (например в цив4).
  • Возможность переключиться на другие приложения — этот плюс трудно переоценить. Можно, например, вернуться в jabber-клиент для координации действий, скажем — на каком сервере вы с друзьями будете играть. При том безглючность переключения 100% (по крайней мере я не видел проблем ни разу), что оставляет офтопик далеко позади по результативности.

Наслаждайтесь.


Strafer