Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #46, СЕНТЯБРЬ 2004 г.

Тюнинг в стиле X

Alexander S. Salieff

Спецвыпуск Xakep, номер #046, стр. 046-014-3


В этом случае придет на помощь технология расширения X-сервера на несколько экранов. Каждый экран будет представлять собой отдельный и полностью независимый десктоп со своим идентификатором (то есть это будут X-дисплеи :0.0, :0.1, :0.2 и т.д.), причем при правильно настроенном xinitrc на каждом дисплее запустится своя копия оконного менеджера. Итак, сначала нам нужно создать два монитора, CRT-дисплей и телевизор. Потом обманем X-сервер и создадим "две" видеокарты; у них будет одинаковый адрес на PCI-шине (который можно узнать с помощью утилиты lspci, однако, скорее всего, он будет таким же, как и приведенный мной), но одна будет смотреть в VGA-выход, а другая - в TV-Out. Теперь, когда у нас есть две видеокарты и два монитора, создадим два дисплея, каждый на своей паре карта-монитор, и - заключительный штрих - сообщим X-серверу (в секции ServerLayout), что у нас два X-дисплея, совместно использующих мышку и клавиатуру.

Теперь можно запускать приложения на разных дисплеях, но таскать их с одного на другой, как в TwinView, уже нельзя. Приложения можно запускать непосредственно на нужном дисплее, уведя туда мышку, либо адресовать с помощью переменной окружения DISPLAY:

localhost$ DISPLAY=:0.0 mplayer Film.avi - смотрим кино на мониторе

localhost$ DISPLAY=:0.1 mplayer -fs Film.avi - смотрим кино на телевизоре

Теперь ты можешь сидеть в интернете, программировать или заниматься другими своими делами, параллельно развлекая подругу показом DivX'сов на телевизоре.

Хорошо писать по-русски

Людям, использующим среду KDE, хорошо знаком своей глючностью встроенный в эту DE селектор раскладки клавиатуры. Во многих других WM/DE он вообще отсутствует. Так и мучаются некоторые, не подозревая, что уровнем ниже - непосредственно в X-сервере - есть стабильно работающий, многофункциональный селектор раскладок. Этот модуль зовется XKb (X11-Keyboard) и имеет широкие возможности для настройки. Из понятий, которыми он оперирует, нас интересуют правила (XkbRules), раскладки (XkbLayout), карты раскладок и некоторые дополнительные опции (XkbOptions). Настраивается вся эта красота в том же файле настроек X-сервера, в секции InputDevice:

Section "InputDevice"

I dentifier "Keyboard0"

Driver "keyboard"

Без лишней надобности фокусничать с правилами поведения модуля не рекомендуется, поэтому обычно ставят стандартные:

Option "XkbRules" "xfree86"

Мы будем использовать две раскладки - английскую по умолчанию и русскую. Карта русской раскладки будет такая же, как в MS Windows (то есть "?" и "7" на одной клавише и т.д.):

Option "XkbLayout" "us,ru(winkeys)"

Переключение раскладки будет производиться с помощью сочетания Ctrl+Shift, а индикатором альтернативной (в нашем случае русской) раскладки будет горящая лампочка ScrollLock:

Option "XkbOptions" "grp:ctrl_shift_toggle,grp_led:scroll"

EndSection

Как видишь, все настраивается очень просто и при этом, как ты убедишься, прекрасно работает. Есть только один неприятный момент - модуль Xkb не умеет запоминать раскладку для каждого окна отдельно. В этой ситуации нам поможет замечательная программа, написанная нашим соотечественником Иваном Паскалем, - xxkb. Будучи просто запущенной после старта X-сервера, она начинает работать вместе с модулем XKb, запоминает раскладку каждого окна и восстанавливает нужную при переключении между окнами. Ее настройки хранятся в стандартном файле инициализации X11-приложения по имени XXkb (скорее всего, он будет лежать в /usr/X11R6/lib/X11/app-defaults). Поглядим, что в нем есть интересного. Главное окно приложения, отображающее иконку текущей раскладки (иконки и размеры окна можно менять, а можно окно вообще убрать):

Назад на стр. 046-014-2  Содержание  Вперед на стр. 046-014-4