20 июня 2011 г.

Запуск приложений в отдельном 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/
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).

10 комментариев:

  1. как всегда блестяще изложено :)

    ОтветитьУдалить
  2. Спасибо за запуск приложений в отдельных иксах)) Очень проще стало жить=))

    ОтветитьУдалить
  3. Пожалуйста)) Значит, работает ещё… А то у меня последнее время все попытки заканчиваются запуском основного DE в указанном вирт. дисплее.

    ОтветитьУдалить
  4. хм...а у тебя что за менеджер дисплея стоит? Я просто его не использую, у меня запуск через startx настроен https://wiki.archlinux.org/index.php/%D0%97%D0%B0%D0%BF%D1%83%D1%81%D0%BA_X_%D0%BF%D1%80%D0%B8_%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B5 Запуск X выбранным пользователем без логина)) Я чет подумал и решил зачем этот дисплейный менеджер если у меня на нем автовход все равно настроен и компьютером кроме меня никто не пользуется...получается костыль лишний=)

    ОтветитьУдалить
  5. Сорри, не умею я что то ссылки вставлять по-нормальному :-[

    ОтветитьУдалить
  6. А если при этом ctrl+alt+backspace нажать, то в консоль разлогинивает? У меня вход без DM был через startx, но вручную. А как начала гном ковырять, пока gdm.

    ОтветитьУдалить
  7. Да, разлогинивает, но уже надо вручную тогда стратХ делать)) получается тот же вход через startx только в полуавтомате :D

    ОтветитьУдалить
  8. Ну да, нормально так)
    Но мне получается не особо и надо — я очень редко перезагружаюсь, чаще иксы прибиваю.

    ОтветитьУдалить
  9. А я что то и иксы редко прививать стал и перезагружаться с переходом на арч...=))

    ОтветитьУдалить
  10. вопрос! У меня убунту 12.04, видиокарта интегрированна, опер 4Гб, игру поставил Варкрафт 3,в доту чтобы играть ерез гарену.Когда запускаешь через второй хсерв, то тормозит ужасно даже лобби игры... Что делать? Спасет покупка видиокарты? Какую видюху ставить лучше? Ответьте пожалуйста на rtk-gkn@mail.ru

    ОтветитьУдалить