Использование Xephyr

From awesome
Jump to: navigation, search


На этой странице приведено краткое руководство по запуску вложенных X-серверов (т.е. запуск X-сессии в клиентском окне другой X-сессии) при помощи Xephyr. Это может оказаться полезным для тестирования, например, конфигурационных файлов, не затрагивая работающий Awesome.

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

Установка Xephyr[edit]

Archlinux[edit]

/usr/bin/Xephyr находится в пакете xorg-server.

Gentoo[edit]

/usr/bin/Xephyr находится в пакете x11-base/xorg-server. Для успешной сборки Xephyr в списке USE-флагов должен присутствовать kdrive.

Debian/Ubuntu[edit]

/usr/bin/Xephyr находится в пакете xserver-xephyr. Его можно установить командой:

 # apt-get install xserver-xephyr

Запуск Xephyr[edit]

Следующая команда запускает новый X-сервер в клиентском окне текущего:

 $ Xephyr -ac -br -noreset -screen 800x600 :1
-ac 
disable access control restrictions
-br 
create root window with black background
-noreset 
don't reset after last client exists
-screen 800x600 
Specify screen characteristics

Тепеь можно запускать приложения внутри клиентской X-сессии, изменяя значение переменной окружения DISPLAY на :1.0:

 $ DISPLAY=:1.0
 $ xterm

Новое окно xterm появится внутри клиентской X-сессии.

Запуск Awesome в Xephyr[edit]

Установите переменную DISPLAY:

 $ DISPLAY=:1.0

И запустите Awesome в клиентской X-сессии:

 $ awesome -c ~/.config/awesome/rc.lua.new

Это хорошо подходит для тестирования изменений в rc.lua. В случае наличия каких-либо ошибок Вы не испортите работающий Awesome и не останетесь перед пустым корневым окном, не реагирующим на нажатия каких-либо клавиш.

Пример: 2009-02-21-004454_1280x800_scrot.png

Дополнительно[edit]

Удалённый перезапуск Awesome[edit]

Получите идентификатор процесса (pid) клиентского Awesome и отправьте ему сигнал SIGHUP:

 $ pgrep awesome
 $ kill -s SIGHUP <идентификатор_awesome_в_xephyr>

Или, если Вы предпочитаете использовать awesome-client:

 $ export DISPLAY=:1.0
 $ echo 'awesome.restart()' | awesome-client

Скрипт для отладки rc.lua[edit]

#!/bin/bash
# script xepyhr-awesome
# author: dante4d <dante4d@gmail.com>
Xephyr -ac -br -noreset -screen 800x600 :1 &
sleep 1
DISPLAY=:1.0 awesome -c ~/.config/awesome/rc.lua.new

Еще один скрипт[edit]

Этот скрипт базируется на работе dante4d. Он содержит дополнительную функциональность для запуска нескольких экземпляров Xephyr с помощью флага -D, использования нескольких конфигураций (-C) и размеров окон (-S). Вы также можете использовать его для смены тем, но корректность работы не гарантируется.

Скрипт находится здесь: https://github.com/mikar/awmtt