Глава 8. X

Глава 8. X

Русский перевод: Михаил Сгибнев

8.1. Что такое X?

X Window System является графической средой, доступной для NetBSD и других Unix (и не только Unix)систем. На самом деле, это даже немножко больше, за счет использования протокола X. X Window System является «прозрачной» для сети и позволяет выполнять распределенные (клиент-серверные) приложения. В довольно грубом приближении это означает, что Вы можете запустить приложение на одной машине (клиент), а графический вывод будет производиться на другой машине (сервер), при этом нет необходимости модифицировать само приложение. Разработкой и поддержкой X Window System занимается X Consortium, и текущим релизом является X11R6. X, используемой в NetBSD является XFree86, свободно распространяемая версия X Window System.

Примите во внимание то, что X Window System является только базовой основой для таких современных графических систем управления рабочим столом, как GNOME, KDE или XFCE, не входящих в состав X Windows System, и поэтому в NetBSD они не входят в состав дистрибутива. При необходимости Вы можете легко их добавить, используя систему портов pkgsrc.

Если Вы захотите использовать X, то столкнетесь с множеством непонятных и запутанных на первый взгляд терминов. Вот несколько основных из них, необходимых для понимания и использования Х:

  • Оборудование работы с видеосигналом поддерживаемое XFree86, такое как Ваша видеокарта.

  • X сервер выполняющийся на определенных аппаратных средствах. X server обеспечивает стандартный способ открытия окон, рисования графики (включая шрифты) и обработку ввода от клавиатуры, мыши или прочих устройств. X является программным продуктом, прозрачным для сети, поэтому Вы можете выполнять клиентов Х на одной машине, а сервер Х на другой машине (имея дисплей и видеокарту).

  • Оконный менеджер, запущенный под управлением Х сервера. Оконный менеджер по сути своей - специальный клиент, которому позволяют управлять размещением окон. Также он добавляет такие удобные вещи, как изменение размера окна, перемещение его по рабочему пространству, возможность свернуть, отобразить иконки, закрывать окна и т.д.

  • Менеджер рабочего стола такой, как KDE или GNOME. Такие менеджеры представляют собой набор более или менее интегрированного программного обеспечения, с общим интерфейсом (что тоже весьма условно). Они включают в себя интегрированную справочную систему, замену стандартному xterm, среды программирования, средства проигрывания аудио/видео и т.д.

  • Все прочие приложения, которые Вы используете. Они общаются с сервером Х через оконный менеджер и обычно приложения не оказывают какого-либо влияния на оконный менеджер, хотя, бывают и исключения (Например, GNOME может определить, что Вы установили GIMP, и добавит соответствующий пункт в меню запуска).

Подведем итоги: для использования графического режима необходимо:

  • XFree86 system

  • Оконный менеджер (в составе XFree86 идет оконный менеджер twm, обеспечивающий начальные функции).

  • Если Вы предпочитаете более сложную среду, возможно Вы захотите установить такой программный продукт, как KDE или GNOME. Системы управления рабочим столом могут быть полезны для тех пользователей, которые привыкли работать с MS Windows или Macintosh (Например, KDE очень похож в использовании на MS Windows.

Замечание

Вы должны себе четко представлять, что в настоящее время ни GNOME ни KDE не содержат в своем составе Х сервер. Данные менеджеры рабочего стола работают под управлением Х сервера от XFree86. KDE и GNOME могут использовать свой собственный оконный менеджер или менеджер стороннего производителя.

Обычно вы можете запустить один оконный менеджер одновременно на одном X-сервере (Конечно, Вы можете запустить несколько серверов X на одном компьютере). Если оконный менеджер не запущен, а Вы стартуете KDE/GNOME, то данные системы запустят оконный менеджер самостоятельно.

8.2. Конфигурирование

Если Вы не выбрали минимальную конфигурацию при инсталляции системы, X уже установлен и готов работать на вашем компьютере. В зависимости от используемой платформы, Вам может потребоваться сконфигурировать X сервер. На некоторых рабочих станциях (sparc, pmax, ...) возможна работа без конфигурации X-сервера, достаточно просто запустить /usr/X11R6/bin/X.

На PC (i386, amd64), Shark и некоторых других платформах, Вам необходимо настроить X-сервер, создав перед первым запуском файл конфигурации /etc/X11/XF86Config. Для того, чтобы получить представление о том, как должен выглядеть этот файл, советуем посмотреть /usr/X11R6/lib/X11/XF86Config.eg. Структура конфигурационного файла формально описана в справке XF86Config(5) и может быть просмотрена командой:

# man XF86Config

Перед конфигурированием системы желательно тщательно прочитать документацию, найденную в /usr/X11R6/lib/X11/doc: там находится довольно много README, связанных с работой видеокарт, мышей и специфических для NetBSD устройств (помечены как (README.NetBSD). Для начала, рекомендуется изучить QuickStart.doc. У вас может возникнуть ощущение, что другие системы позволят Вам получить желаемое, затрачивая меньше усилий, но время, проведенное за изучением документации не будет потрачено впустую: знание X окажется очень полезным в последующем и поднимет Ваш профессиональный уровень на недосягаемую высоту в плане конфигурирования Х.

Вы можете создать /etc/X11/XF86Config вручную, используя текстовый редактор, или сгенерировать в автоматическом режиме, используя интерактивные программы конфигурирования. Самыми лучшими известными программами являются xf86config, XF86Setup (XFree86 3.x) и xf86cfg (XFree86 4.x). xf86config и xf86cfg по умолчанию устанавливаются вместе с X; XF86Setup графическая утилита конфигурирования и может быть установлена с помощью системы портов pkgsrc.

Как Вы сможете заметить, лучше всего окажется смешанный подход: создайте XF86Config с помощью одной из двух утилит, а потом проверьте и отредактируйте с помощью редактора. xf86cfg:

# xf86cfg
# сконфигурируйте и сохраните в /etc/X11/XF86Config
# vi /etc/X11/XF86Config 

или утилита командной строки xf86config:

# xf86config
# сконфигурируйте и сохраните в /etc/X11/XF86Config
# vi /etc/X11/XF86Config 

Интерфейс этих программ отличается, но требует знания следующих параметров:

  • тип мыши и имя используемого устройства

  • раскладку и тип клавиатуры

  • тип видеокарты

  • тип монитора

Перед конфигурированием системы убедитесь, что обладаете всей необходимой информацией.

8.3. Мышь

Сперва проверьте, какой тип мыши у Вас используется (для серийного порта, PS/2 или иной) и устройство (для примера, wsmouse требует другой протокол). Если Вы используете мышь для параллельного порта, то установите требуемый протокол и используемый порт.

для примера, PS/2 и USB мыши добавляют устройство wsmouse и поэтому Вы должны использовать:

Section "Pointer"
 Protocol "wsmouse"
 Device  "/dev/wsmouse0"
EndSection

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

Section "Pointer"
 Protocol "Microsoft"
 Device  "/dev/tty00"
EndSection

/dev/tty00 является первым последовательным портом и /dev/tty01 соответственно вторым. Протокол может быть различен для различных моделей мышей, смотрите файл XF86Config.eg.

8.4. Клавиатура

Даже если Вы уже конфигурировали вашу клавиатуру для wscons, Вы должны сконфигурировать ее для Х, дабы установить раскладку, отличную от американской.

Самое простое решение состоит в том, чтобы использовать протокол XKB для определения раскладки и типа клавиатуры.

Это одно из слабых мест программ конфигурации. Вы можете выбрать стандартную раскладку, а потом отредактировать файл конфигурации вручную:

Section "InputDevice"
	Identifier "Keyboard0"
	Driver  "keyboard"
	Option  "XkbRules" "xfree86"
	Option  "XkbModel" "pc102"
	Option  "XkbLayout" "us,ru"
	Option  "XkbOptions" "ctrl:nocaps"
EndSection 

Если Вы хотите использовать «Windows» клавиши на Вашей клавиатуре, используйте «pc105» вместо «pc102» для XkbModel.

8.5. The monitor

Очень важно правильно определить частоту кадровой и строчной развертки монитора, что позволит уберечь от поломки монитор в следствие выбора неправильного режима. Эта информация может быть найдена в руководстве на монитор. В каталоге документации X есть файл, содержащий параметры настройки многих мониторов; эта информация может использоваться, как отправная точка для настройки индивидуальных параметров.

8.6. Видеокарта

Видеокарта может быть выбрана из базы данных программ конфигурации; программа сама позаботится обо всех необходимых установках. Поддержка видеокарт в XFree86 3.x и 4.x сильно отличается.

XFree86 3.x имеет несколько серверов для работы на различных чипсетах. XFree86 4.x имеет только один сервер. Различные видеокарты поддерживаются за счет платформо-независимых модулей драйверов, находящихся в /usr/X11R6/lib/modules/drivers.

8.6.1. XFree 3.x

Когда Вы выбрали правильную видеокарту, Вы должны выбрать сервер X для платы. Обычно программы конфигурации могут автоматически определить правильный сервер, но некоторые видеокарты могут управляться больше чем одним сервером (например, S3 Virge поддерживается серверами SVGA И S3V); в этом случае изучите документацию серверов, чтобы решить, какой подойдет Вам больше всего: различные серверы обычно имеют различные возможности и различную степень поддержки видеокарты.

8.6.2. XFree86 4.x

После выбора видеокарты из списка, программа конфигурации автоматически выберет соответствующий драйвер. Если Вы не выбрали видеокарту, Вы можете конфигурировать ее, выбрав требуемый модуль.

8.7. Запуск X

Когда Вы выйдете из программы конфигурации, будет создан файл /etc/X11/XF86Config, который в будущем необходимо проверить и модифицировать вручную.

Перед запуском X Вам необходимо:

  • Проверьте, что символическая ссылка /usr/X11R6/bin/X указывает на правильный сервер X:

    # ls -l /usr/X11R6/bin/X
  • Проверьте верность конфигурации. Запустите:

    # X -probeonly

    и тщательно исследуйте вывод.

Теперь можно запускать X следующей командой:

# startx

Если X не запускается, значит есть ошибка в файле конфигурации.

Если Х запустился, но работает совсем не так, как ожидалось (например не работает мышь), то Вы можете выйти с использованием комбинации Ctrl-Alt-Backspace (работает не на всех платформах). Если все сработало правильно, то Вы окажетесь в оконном менеджере, установленном по умолчанию (twm). Несмотря на ограниченные возможности, есть достаточно много пользователей, которым вполне хватает twm для работы. Если Вы хотите больше красоты, настраиваемости и удобства, то в коллекции портов есть достаточный выбор оконных менеджеров, смотрите Раздел 8.9, «Другие менеджеры окон».

В качестве начала настройки X под себя, давайте с помощью xterm изменим цвет фона:

# xsetroot -solid DarkSeaGreen

8.8. Персональная настройка X

Для настройки среды X есть несколько способов. Самый простой метод состоит в том, чтобы копировать файл .xinitrc со значениями по умолчанию в Ваш домашний каталог и изменить его под себя. Для примера:

# cp /usr/X11R6/lib/X11/xinit/xinitrc ~/.xinitrc
# vi .xinitrc

В следующем примере будет использоваться оконный менеджер twm, xclock будут находиться в нижней правой части экрана и будут запущены две xterm консоли. Цвет «Bisque4» используется в качестве фона.

the first part of the file is the same
...
# start some nice programs
twm &
xclock -geometry 50x50-1-1 &
xterm -geometry 80x34-1+1 -bg OldLace &
xsetroot -solid Bisque4 &
exec xterm -geometry 80x44+0+0 -bg AntiqueWhite -name login

В этом примере, для выхода из Х необходимо просто закрыть xterm, обозначенный как «login».

Даже с этой простой конфигурацией X зачительно красивее выглядит. Для облегчения такого рода настроек советуем установить программы из коллекции портов, например:

xcolorsel

отображает все цвета, определенные в файле rgb.txt. Используйте для смены цвета фона или окон.

xpmroot

Позволяет использовать рисунок в качестве фонового.

xscreensaver

Хранители экрана

xdaemon

Ни один рабочий стол не может обойтись без демоненка BSD, шныряющего по экрану :-)

8.9. Другие менеджеры окон

Если Вам не нравится twm, оконный менеджер без излишеств и не очень настраиваемый, то Вы можете выбрать любой другой из коллекции портов. Наиболее популярными являются: fvwm2, olwm/olvwm (Open Look Window Manager), WindowMaker, Enlightenment, AfterStep.

Ниже описана в качестве примера инсталляция WindowMaker. WindowMaker - приятный взору и хорошо конфигурируемый оконный менеджер. Для установки программы будем использовать прекомпилированный пакет windowmaker-0.60.tgz, с установкой всех зависимостей. Как обычно, будем использовать pkg_add и make install для автоматической загрузки зависимостей.

# cd /usr/pkgsrc/x11/windowmaker
# make depends-list
xpm-3.4k
jpeg-6b
pkglibtool-1.2p2
giflib-3.0
libproplist-0.9.1
tiff-3.5.2

Замечание

Также для построения списка зависимостей можно использовать команду:

# pkg_info -f windowmaker-0.61.0.tgz | grep depends

После добавления требуемых пакетов, может быть добавлен WindowMaker и некоторые преконфигурированные темы:

# pkg_add windowmaker-0.61.0.tgz
  wmthemes-0.6x.tgz

WindowMaker установлен; для его запуска необходимо модифицировать файлы .xinitrc и/или .xsession: заменить вызов twm на wmaker. Для примера:

# start some nice programs
# start WindowMaker
wmaker &
xclock -geometry 50x50-1-1 &
xdaemon2 -geometry +0-70 &
...

В этом примере программа xdaemon стартует автоматически.

Перед запуском WindowMaker должна быть запущена конфигурационная программа:

$ wmaker.inst
$ startx

8.10. Графический вход в систему с xdm

Если Вы всегда в работе используете X, и первым делом после входа в систему выполняете startx, то Вы можете установить графический вход в систему для вашей рабочей станции. Это очень просто.

  1. Создайте файл .xsession в Вашем домашнем каталоге. Он подобен ~/.xinitrc и может, фактически, быть ссылкой на него.

    # cd $HOME
    # ln -s .xinitrc .xsession 
  2. Модифицируйте файл /etc/rc.conf:

    xdm=YES  xdm_flags=""  # x11 display manager

    Если Вы предпочитаете, то можете добавить в конец файла /etc/rc.local следующую строку:

    /usr/X11R6/bin/xdm

    Этот метод может использоваться для запуска, например, kdm или gdm вместо xdm.

Конфигурационный файл xdm находится в каталоге /usr/X11R6/lib/X11/xdm. В файле Xservers X указано стартовать на консоли «vt05», попасть на нее Вы можете, нажав «CTRL+ALT+F5»; если есть желание использовать другой терминал - исправьте это значение. Чтобы избежать конфликта между getty и xdm, желательно запустить xdm на виртуальном терминале, где getty заблокирован. Например, если в Xservers установлено:

:0 local /usr/X11R6/bin/X :0 vt04

в /etc/ttys должно быть

ttyE3 "/usr/libexec/getty Pc"   vt220 off secure

(пожалуйста, обратите внимание, что vt04 соответствует ttyE3, потому что символ vt начинается с 1, а ttyE начинается с 0)

Если Вы желаете изменить приглашение xdm, то возможно изменение файла конфигурации. Например, для изменения цвета фона, Вы можете добавить следующую строку в файл Xsetup_0:

xsetroot -solid SeaGreen

Если Вы хотите использовать фоновое изображение, то воспользуйтесь программой xpmroot: Для примера:

xpmroot /path_to_xpm/netbsd.xpm

Если вы начнете экспериментировать с файлом конфигурации, Вы можете достичь впечатляющих результатов и оформить приятный экран входа в систему. Отметьте, что другие оконные менеджеры, такие как gdm и kdm имеют различную конфигурацию.

Обновлено: 16.03.2015