Назад Вернуться к оглавлению. Далее

7. Графический интерфейс (продолжение 2)

7.4. Запуск системы X Window.
7.5. Выбор и настройка менеджера окон
7.6. Графическая среда KDE
7.7. Использование менеджера дисплея (X Display Manager)

7.4. Запуск системы X Window.

Запустить "иксы" можно несколькими способами. Иногда при инсталляции ОС соглашаются с предложением инсталлятора запускать их автоматически. Если при инсталляции все прошло нормально, то Вы будете сразу после запуска ОС попадать в графический режим. Однако, судя по моему опыту, система X далеко не всегда устанавливается автоматически, поэтому в разделе об инсталляции ОС я советовал отказаться от автоматического запуска. Как же запустить графическую оболочку?
Из предыдущего текста Вы должны знать, что вначале необходимо запустить X-сервер. Это можно сделать, непосредственно запустив на выполнение подходящий сервер из каталога /usr/X11R6/bin. У меня это был, например, XF86_SVGA. Вы уже знаете, что в результате Вы увидите на экране серый прямоугольник с крестиком курсора мыши посередине. Но дальше Вы вряд ли чего-нибудь добьетесь, поскольку не запущен менеджер окон и ни одной программы-клиента. Поэтому просто нажмите комбинацию клавиш [Ctrl]+[Alt]+[BackSpace] для того, чтобы завершить работу X-сервера.

Несколько более успешный (но все еще не самый правильный) способ выхода в графический режим состоит в том, что Вы даете команду xinit.

Программа xinit предназначена для запуска сервера системы X Window и хотя бы одной программы-клиента.

Если в командной строке не указано, какой именно X-сервер запускать, xinit ищет в домашнем каталоге пользователя файл .xserverrc, чтобы выполнить содержащийся в нем скрипт запуска сервера. Если такого файла нет, xinit по умолчанию выполняет следующий скрипт:

        X  :0
то есть запускает программу с именем X на дисплее 0. При этом предполагается, что в одном из каталогов, перечисленных в путях поиска, найдется программа с именем X. Но, как Вы уже знаете, сервера обычно называются XF86_displaytype, где displaytype - это тип графического дисплея, для которого предназначен данный сервер. Администратор сайта, следовательно, должен установить ссылку на подходящий сервер или создать скрипт, который запускает xinit с вызовом соответствующего сервера. Используя скрипт .xserverrc, удостоверьтесь, что по команде "exec" в нем запускается существующий X-сервер:
        exec XF86_displaytype
В противном случае загрузка будет происходить очень медленно и завершится немедленным выходом.

Если в командной строке запуска xinit не указана клиентская программа, которую надо запускать, программа xinit ищет в домашнем каталоге пользователя файл .xinitrc, чтобы выполнить его как скрипт, запускающий клиентские программы(у). Если такого файла не существует, xinit по умолчанию выполняет вместо этого скрипта команду:

        xterm  -geometry  +1+1  -n  login  -display  :0
Если Вы после установки Red Hat Linux еще не создали свой файл .xinitrc, и просто запустите команду xinit из командной строки, Вы увидите почти пустой рабочий стол с единственным окном терминала. Поскольку менеджера окон нет, Вы ничего не можете сделать с этим окном (переместить, изменить размер и т.д.), но Вы можете в этом окне запустить другие программы, в том числе менеджер окон. Перейдите, например, в каталог /usr/X11R6/bin и дайте команду fvwm (этот оконный менеджер обычно по умолчанию установлен). После этого вид экрана существенно изменится, Вы сможете изменять окна (обычным способом, захватывая мышкой границу окна), а по щелчку левой кнопкой по пустому полю рабочего стола получите выход в меню.

Если остановиться на таком способе вызова графического интерфейса, то каждый раз при его запуске придется повторять одну и ту же последовательность команд (не считая других минусов этого метода). Естественно, что пользователю стоит воспользоваться возможностью создания скрипта .xinitrc для автоматизации этой рутинной работы.

Ниже приведен пример скрипта .xinitrc, который запускает часы, несколько терминалов и оставляет менеджер окон в качестве "последнего" клиента.

xrdb -load $HOME/.Xresources
xsetroot -solid gray &
xclock -g 50x50-0+0 -bw 0 &
xload -g 50x50-50+0 -bw 0 &
xterm -g 80x24+0+0 &
xterm -g 80x24+0-0 &
twm
Важно отметить, что программы, запускаемые из .xinitrc, должны запускаться в фоновом режиме, если только они не завершаются немедленно. Иначе эти программы будут препятствовать запуску других программ. Однако одна из запущенных программ (обычно менеджер окон или эмулятор терминала) должна выполняться не в фоновом режиме, а на переднем плане, чтобы работа скрипта не завершалась (завершением работы этой программы пользователь сообщает программе xinit, что закончил работу и что сама программа xinit должна завершиться). В приведенном примере, если менеджер окон правильно сконфигурирован, то для завершения работы в X-сессии достаточно выбрать пункт "Exit" в меню менеджера twm.

Аргументы, заданные в командной строке вызова xinit, позволяют обойти выполнение скриптов .xinitrc и .xserverrc. В командной строке может быть указана альтернативная программа-клиент и/или альтернативный сервер. Клиентская программа должна быть первым аргументом в командной строке вызова xinit. Для того, чтобы вызвать конкретный X-сервер, добавьте двойное тире (после указания программы-клиента и ее аргументов), после которого укажите имя нужного сервера.

Имена программы-сервера и программы-клиента должны начинаться со слэша (/) или точки (.). В противном случае они воспринимаются как аргументы, добавляемые в командную строку вызова соответствующей (предыдущей) программы. Таким образом можно добавлять аргументы (например, задавать цвета фона и текста), не вводя заново всю командную строку.

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

Вот несколько примеров командной строки вызова программы xinit.

"xinit"
Этой командой будет запущен сервер, на который указывает ссылка (линк) X, и выполнен пользовательский скрипт .xinitrc, если таковой существует, а иначе просто запущен xterm.
"xinit -- /usr/X11R6/bin/Xqdss :1"
Таким образом можно запустить какой-то конкретный сервер на альтернативном дисплее.
"xinit -geometry =80x65+10+10 -fn 8x13 -j -fg white -bg navy"
По этой команде будет запущен сервер, на который указывает ссылка X, и запускаемой по умолчанию команде xterm будут переданы аргументы, перечисленные в командной строке. Скрипт .xinitrc будет проигнорирован.
"xinit -e widgets -- .Xsun -l -c"
В этом случае для запуска сервера используется команда .Xsun -l -c, а запускаемому по умолчанию программе-клиенту xterm будет переданы аргументы -e widgets.
"xinit /usr/ucb/rsh fasthost cpupig -display ws:1 -- :1 -a 2 -t 5"
Эта команда запускает сервер X на дисплее с номером 1 с аргументами -a 2 -t 5. Затем будет запущена оболочка shell на удаленном компьютере fasthost, в которой будет выполнена команда cpupig, вывод которой будет возвращен на дисплей локального компьютера.

Поскольку пользователю-новичку обычно не хватает квалификации для создания собственного варианта скрипта .xinitrc, администраторы сайтов могут помочь им в вызове графического интерфейса, создав общедоступный скрипт, выполняющий эту функцию. Такие скрипты обычно называются x11, xstart, или startx и являются удобным способом создания простого интерфейса для пользователей-новичков. Вот пример простейшего скрипта такого вида:

#!/bin/sh
xinit /usr/local/lib/site.xinitrc -- /usr/X11R6/bin/X bc
При инсталляции стандартной версии Red Hat Linux создается более сложный вариант скрипта startx, который расположен в каталоге /usr/X11/bin (Вы можете его просмотреть). Для него существует и man-страница, в которой говорится, что этот скрипт создается просто как образец для администраторов сайтов, предназначенный для создания собственных вариантов такого скрипта.

Если просмотреть стандартный вариант скрипта startx, мы увидим, что практически он сводится к выполнению всего-навсего 3-х команд:

xauth add $display . $mcookie
xauth add `hostname -f`$display . $mcookie
xinit $clientargs -- $display $serverargs
То есть, в конечном итоге, startx вызывает уже рассмотренную нами команду xinit, только предварительно формирует нужные значения аргументов командной строки для нее. Первый аргумент - имя файла xinitrc, причем если в домашнем каталоге пользователя есть файл .xinitrc, то берется он (с указанием пути), а если в домашнем каталоге нет такого файла, то берется общесистемный файл /etc/X11/xinit/xinitrc, то есть "clientargs" = "/etc/X11/xinit/xinitrc".
Аналогично формируется значение переменной serverargs: если существует N8файл .xserverrc в домашнем каталоге пользователя, то переменная serverargs будет указывать на него. Если такого файла нет, то serverargs укажет на /etc/X11/xinit/xserverrc. Переменной display присваивается значение :0. Далее в скрипте startx производится анализ аргументов, которые были заданы в командной строке при его вызове (эту часть мы пока не будем детально разбирать, поскольку для начала будем вызывать скрипт без параметров) и, наконец, в конец строки вызова xinit добавляется -auth $HOME/.Xauthority. Таким образом, сразу после установки системы (пока пользователь не создал файлов .xinitrc и .xserverrc в своем домашнем каталоге) будет вызываться в следующем виде:
xinit /etc/X11/xinit/xinitrc -- :0 /etc/X11/xinit/xserverrc -auth $HOME/.Xauthority

7.5. Выбор и настройка менеджера окон

Если Вам удалось добиться, что X-ы работают, у Вас имеется масса возможностей для дальнейшей настройки. Конкретный набор этих возможностей зависит от того, какой менеджер окон Вы используете. Менеджеров окон существует много.

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

Очень важно иметь хороший файл .xinitrc. Вот пример:

  #!/bin/sh
  # $HOME/.xinitrc

  usermodmap=$HOME/.Xmodmap
  xmodmap $usermodmap

  xset s noblank  # отключаем хранитель экрана
  xset s 300 2    # screen saver start after 5 min
  xset m 10 5     # set mouse acceleration

  rxvt -cr green -ls -bg black -fg white -fn 7x14 \
    -geometry 80x30+57+0 &

  if [ "$1" = "" ] ; then  # по умолчанию
    WINMGR=wmaker
  else
    WINMGR=$1
  fi

  $WINMGR
 

Хотя это и не обязательно, можно сделать этот файл исполняемым с помощью команды

chmod +x .xinitrc.

Этот вариант .xinitrc позволяет Вам выбрать менеджер окон, попробуйте, например:

       $ startx startkde # или другой менеджер.

Если администратор хочет создать одинаковое начальное окружение для всех пользователей, можно сделать так, чтобы по умолчанию для пользователя создавался скрипт .xinitrc, который ссылается на общий стартовый скрипт:

#!/bin/sh
. /usr/local/lib/site.xinitrc

7.6. Графическая среда KDE

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

Однако имеет смысл вначале просмотреть возможности одной из разработанных в последние годы интегрированных графических сред (для удобства введем сокращение ИГС). ИГС представляет собой уже подобранную и проверенную совокупность программ для работы в графическом режиме, включающую в себя и менеджер окон и набор других программ, обладающих единообразным интерфейсом. Пожалуй можно сказать, что именно единообразие интерфейса является ключевым моментом, определяющим преимущества использования ИГС вместо создания собственной среды.

Существует уже несколько графических сред, как свободно распространяемых, так и коммерческих. Из свободно распространяемых наибольшую известность приобрели KDE и GNOME. Мне лично больше нравится KDE. Возможно, это определяется тем обстоятельством, что именно эта среда была первой, с которой я начал работать, и притом вполне успешно. В то время как первая встреча с GNOME была несколько неудачной. Говорят, что в последнее время коллектив разработчиков GNOME сделал большой шаг вперед, но я пока остаюсь приверженцем KDE.

Одним из немаловажных достоинств KDE является достаточно подробная документация на русском языке. Она была включена в состав дистрибутивного диска Black Cat 5.2, с которого началось мое знакомство с Линукс. Эту документацию Вы можете найти на русской версии сайта KDE. Там есть руководство пользователя (краткий курс и обширный курс), переводы документации по отдельным компонентам KDE, ответы на часто задаваемые вопросы. Мне очень понравился краткий курс, который в очень сжатом виде знакомит Вас с возможностями этой среды. Учитывая, что мне вряд ли удастся создать более качественное описание, я не буду продолжать этот раздел, а просто рекомендую Вам заглянуть на упомянутый выше сайт.

Кроме того, можете посетить сайт http://www.kde.org/ для получения дополнительной информации.

Здесь я только хочу рассказать о том, как добиться того, чтобы ИГС KDE запускалась у Вас по команде startx. Дело в том, что после стандартной инсталляции Black Cat Linux (по крайней мере версии 6.02) по этой команде по умолчанию запускается GNOME, причем сразу же выражает недовольство из-за отсутствия нужного ему оконного менеджера. Справиться с этой проблемой очень просто. Если Вы внимательно прочитали предыдущий подраздел, то знаете, что startx просто вызывает команду xinit с нужными параметрами, одним из которых является файл /etc/X11/xinit/xinitrc (если подобного файла нет в вашем домашнем каталоге). А в файле /etc/X11/xinit/xinitrc производится вызов либо файла Xclients из домашнего каталога пользователя, либо общесистемного файла /etc/X11/xinit/Xclients:

if [ -f $HOME/.Xclients ]; then
    exec $HOME/.Xclients
elif [ -f /etc/X11/xinit/Xclients ]; then
    exec /etc/X11/xinit/Xclients
Просмотрев, в свою очередь, файл /etc/X11/xinit/Xclients, Вы увидите, что выбор графической среды определяется тем, что прописано в файле /etc/sysconfig/desktop.

При установке такой файл не создается, так что создайте его сами и запишите в него одно слово: KDE
(создать такой файл можно командой cat > /etc/sysconfig/desktop).

После перезапуска графической оболочки Вы получите желаемый результат: будет запущена ГИС KDE. А уж о том, как настроить ее, читайте на упомянутом выше русской версии сайта KDE. Некоторые рекомендации (исходя из моего личного опыта) приводятся также в разделе "Создание удобной рабочей среды".

7.7. Использование менеджера дисплея (X Display Manager)

Систему X Window можно запускать автоматически при включении компьютера, используя программу, которая называется менеджером дисплея (X Display Manager - xdm). В этом случае пользователь сразу видит привлекательную графическую среду и нет необходимости специально запускать графический интерфейс командой startx. При этом сохраняется возможность переключиться в текстовую консоль, набрав <Ctrl>-<Alt>-<F1>, а потом вернуться обратно в графическую среду, используя комбинацию <Alt>-<F7>.

Для того, чтобы запускать xdm при загрузке ОС, надо отредактировать файл /etc/inittab заменив в нем строку "id:3:initdefault:" на строку следующего вида:

 id:5:initdefault:

Такое изменение заставляет Linux при запуске переходить на 5-ый уровень и по умолчанию запускать xdm. Запускаемый по умолчанию менеджер дисплея определяется тоже строкой в /etc/inittab, которая располагается обычно где-то в конце этого файла и имеет примерно такой вид:

 x:5:respawn:/usr/bin/X11/xdm -nodaemon

Если Вы решили запускать xdm при старте и хотите использовать, например, глубину цвета 24 бита на пиксел вместо применяемой по умолчанию 8 bpp (и Ваша видеокарта и монитор поддерживают ее), Вы должны изменить файл /etc/X11/xdm/Xservers (в нем всего одна строка) следующим образом:

 :0 local /usr/X11R6/bin/X -bpp 24

Если Вы установили KDE, то вместо xdm, вероятно, запускается kdm. У меня, например, строка в /etc/inittab, определяющая менеджер дисплея, имеет вид:

 x:5:respawn:/etc/X11/prefdm -nodaemon

а /etc/X11/prefdm есть ссылка на /usr/bin/kdm.

Очень важное примечание: Имейте в виду, что команда respawn в только что приведенной строке означает, что при попытках перезапуска системы будет происходить перезапуск менеджера дисплея. В частности, нажатие "магической" комбинации [Ctrl-Alt-Del] будет повторно запускать систему в той же конфигурации. Поэтому если Вы после установки xdm будете как-то менять системные настройки и в результате ошибочных действий нарушите хрупкое равновесие системы X Window, Вы попадете в очень затруднительную ситуацию. У меня, например, после одного из опытов с редактированием файла /etc/X11/XF86Config экран после загрузки стал черным и дальше компьютер ни на что не реагировал, кроме [Ctrl-Alt-Del], а по этой комбинации происходила просто перезагрузка и выход в ту же ситуацию.

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

LILO boot:

ввести

linux single root=/dev/hda1.

Вместо /dev/hda1 надо подставить имя раздела с корневой файловой системой. Эта команда подключит корневой раздел и переведет систему в однопользовательский режим. Будет запрошен пароль пользователя root и Вы сможете отменить те правки, которые привели к краху. Этот совет я нашел в книге Д.Такета и С.Барнета (смотри ссылки), где сказано, что этот способ не работает, если корневой раздел находится на диске SCSI. Я при этом запускался с загрузочной дискеты (может быть это поможет и в случае SCSI-дисков, не знаю), так что позаботьтесь о том, чтобы такая дискета у Вас была.


Назад Вернуться к оглавлению. Далее

В.А.Костромин
Последние изменения
в содержание файла внесены
25 февраля 2000 г.