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

Эта страница нуждается в сопроводителе

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков 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

Categories:

- X server (Русский)
- Русский

Hidden category:

- Pages with broken package links