Запуск приложений в отдельном X-сервере

тобы запустить приложение в отдельном X-сервере, используется команда вида:

startx /path/to/application -- :1

То есть набрав такую команду в консоли (не эмуляторе терминала, а именно tty1, например), мы попадём во второй X-сервер, где будет работать нужное приложение. Переключаться в него можно сочетанием клавиш Ctrl+Alt+F8 (соответственно, следующие виртуальные дисплеи получим по Ctrl+Alt+F9 и так далее; а самый первый X-сервер запускается на нулевом дисплее и переключаться в него можно по Ctrl+Atl+F7).
Вместо /path/to/application нужно вставить полный путь к исполняемому файлу, например не firefox, а /usr/bin/firefox.

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

Из плюсов — избавление от глюков, возникающих при переключении на другой рабочий стол или сворачивании полноэкранного приложения (если это возможно вообще), а также глюков и просто разных неудобств, возникающих из-за оконного менеджера. Оконного менеджера как такового в отдельном X-сервере просто не будет, а переключаться между дисплеями можно будет безболезненно. Кроме того, перестанут мешать различные всплывающие сообщения.
Этот способ можно использовать и просто чтобы, заметив какую-либо неправильность в работе приложения, исключить из причин именно оконный менеджер (собственно, я по этой причине, попробовала этот способ). Может возрасти производительность в игре, иногда, весьма заметно.
Из минусов — если переключение между полноэкранным окном и другим рабочим столом происходит безболезненно, то в остальном удобнее делать именно так, потому что лично у меня переключение между X-серверами происходит несколько дольше.
Ещё один момент, который может быть как плюсом, так и минусом: лично в конкретно моём случае, при запуске на отдельном рабочем столе и переключении на другой рабочий стол пропадает звук игры. А вот если игру запускать в отдельном X-сервере, то игровые звуки будет слышно и при переключении в другой виртуальный дисплей. Мне это не слишком нравится, но это может быть и хорошо — отвлёкся на переписку в мессенджере, но при этом и слышишь, что на тебя напали в игре и бежишь отбиваться (впрочем, кажется, можно настроить, чтоб и при переключении рабочих столов звук из игры не пропадал).
Применимо к виртуальным машинам плюс, пожалуй, в том, что перезапуск основной X-сессии не затронет запущенную виртуальную машину (кстати, как я понимаю, это и к играм относится, да и к другим приложениям), а вот минус — отсутствие общего буфера обмена.

Теперь конкретно, что касается виртуальных машин VirtualBox: для виртуальной машины с именем, например ubuntu, строка запуска примет следующий вид:

startx /usr/bin/VirtualBox --startvm "ubuntu" --fullscreen -- :1

Что касается игр, то если игра линуксовая, тут всё просто — как с остальными приложениями, подставлять нужно полный путь к исполняемому файлу. С играми под wine, в принципе, должно работать то же самое, но, видимо, есть какие-то тонкости. Зато работает так:
Создаём файл скрипта для запуска подобного содержания:

cd ~/.wine/drive_c/Program\ Files/World\ of\ Warcraft/<br>wine Wow.exe

Называем файл, например, Wow.sh, кладём, например, в ~/.local/bin/ (а вообще куда угодно), и даём ему права на выполнение. Теперь игру можно запускать командой:

startx ~/.local/bin/Wow.sh -- :1

Небольшое примечание — у меня переключение раскладок было настроено только в оконном менеджере, соответственно, в игре, запущенной таким образом, оно не работало. Пришлось, наконец, настроить.
Есть некоторые отличия от описанного ранее: файл /etc/X11/xorg.conf теперь не трогаем, а создаём файл, например, /etc/X11/xorg.conf.d/20-keyboard.conf следующего содержания:

Section "InputClass"
        Identifier "evdev keyboard catchall"
        MatchIsKeyboard "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
        Option "XkbLayout" "us,ru(winkeys)"
        Option "XkbOptions" "grp:caps_toggle,grp_led:scroll,compose:ralt,terminate:ctrl_alt_bksp"
EndSection

Конечно, это пример. Тут — переключение между английской (США) и русской (с win-клавишами, разница, в частности, в расположении запятой) раскладками по CapsLock, с индикацией при этом светодиода на ScrollLock, с перезагрузкой иксов по Ctrl+Alt+Backspace, и назначена compose-клавиша на правый Alt.
Последнего в той старой статье не было, так вот клавишу Compose можно подобным же образом назначить на левый Alt (lalt), правый или левый Ctrl (rctrl, lctrl), правую или левую клавишу Windows (rwin и lwin) и на клавишу контекстного меню (menu).

Запуск приложений в отдельном X-сервере: 2 комментария

  1. прекрасная статья, только вот нужно дополнить её. У меня не желают запускаться иксы на других терминалах.
    Linux shaman888 2.6.38-11-generic #50-Ubuntu SMP Mon Sep 12 21:17:25 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux

    Пишет следующее:
    bad display name»shaman888:0″ in «add» command
    ну и ещё там всякого, но всё сводится к настройкам дисплея. Мне как раз виртуалку запустить нужно на паралельном терминале.

Добавить комментарий