su13@pochta.ru

| Первый | Второй | Третий | Четвёртый | Пятый | Шестой | Седьмой |


Глава 4

Изучаем среду обитания


Тем временем подошла пора начинать работу. Однако работа производится не в безвоздушном пространстве, а в некоей рабочей среде, которую и необходимо изучить.

Традиционная среда обитания пользователя Linux — оболочка командной строки. И обычно с нее-то и начинается, по принципу "от простого — к сложному", рассмотрение использования Linux в большинстве посвященных ему книг.

Однако для пользователя Windows, утратившего (а то и не имевшего никогда) навыки работы в чистом DOS, такое понимание простоты вряд ли покажется приемлемым. И потому я начну с работы в графических средах. Принцип "от простого — к сложному" при этом тоже выдерживается. Только имеется в виду простота не устройства, а использования. Даже не столько простота (это вопрос спорный), сколько — привычность. Тем не менее, поскольку именно командная стока во многом определяет своеобразие Linux, в заключение саги я рассмотрю и эту традиционную среду обитания.

О системе Х Window

Работа в графическом режиме под Linux возможна благодаря системе, именуемой Х Window, разработанной в 80-х годах в Массачусетском Технологическом Институте.

Что такое Х Window? Как ни странно, внятный ответ на этот вопрос найти в книгах по Linux (и Unix вообще) довольно сложно, по крайней мере — в русскоязычных и переведенных. Вероятно, профессиональные разработчики, которые точно знают, что это такое, полагают, что остальным это должно быть интуитивно понятно. Или знать просто не положено...

Наиболее последовательное описание системы Х Window мне удалось обнаружить в статье Алексея Выскубова в журнале "Byte Россия" (декабрьский номер за 1998 г.). Основываясь на ней, а также на своих представлениях, я попытаюсь рассказать об Х Window то, что, думается, необходимо знать конечному пользователю. Не претендуя при этом ни на глубину, ни на детальность изложения. Поскольку интересующийся за подробностями может обратиться к вышеназванной работе.

В большинстве книг по Linux X Window определяется как графический интерфейс пользователя (GUI, Graphical User Interface). Ну а что такое GUI — знает, хотя бы понаслышке, каждый пользователь Windows. Однако, по мнению А. Выскубова, X Window — это, скорее, ядро, над которым может надстраиваться любой графический интерфейс.

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

Один из Х-клиентов — оконный менеджер (или диспетчер окон). Он управляет размещением окон на экране, определяет их вид и характер управляющих элементов. То есть именно он и представляет собой GUI в собственном смысле слова.

Что из этого следует с точки зрения пользователя? То, что в ОС Linux (и любой другой Unix-подобной системе пользователь не привязан к какому-либо одному графическому интерфейсу: таковых, определяемых оконным менеджером, теоретически может быть невообразимое множество. Впрочем, как будет показано в следующих разделах, практика недалеко отстает от теории.

Все сказанное выше относилось к системе X Window вообще. Она существует во многих вариантах. Один из них, именуемый XFree86, представляет свободную (и открытую) реализацию X Window для компьютеров на базе процессоров Intel x86 и их клонов. Именно она и входит в состав дистрибутивов Linux вообще и Linux Mandrake в частности.

В качестве текущих ныне могут рассматриваться версии XFree86 З.х.х и 4.х.х, различающиеся моделью своей серверной части: в версии З.х.х реализовано множество серверов для различных типов аппаратуры, в первую очередь — видеочипов, которые и выступают в качестве их эпонимов. В версии 4.0 существует лишь один Х-сервер (SVGA-сервер), отвечающий за поддержку всех типов видеоаппаратуры.

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

В текущей версии Linux Mandrake 7.0/RE представлена XFree86 версии 3.3.6 (последняя в этой линии, развитие которой прекращено). Однако при наличии Appendix можно установить и версию 4.0. Которая опционально входит в состав оригинального Mandrake 7.1. Последняя же версия XFree86 на момент написания этих строк — 4.0.1.

Что бы не возвращаться более к этому вопросу, вкратце скажу еще об одном существенном элементе X Window — наборах графических библиотек, опре-

деляющих и внешний вид, и функциональность всех Х-клиентов (повторюсь, в понимании пользователя, которое профессиональному программисту может показаться не вполне строгим или нестрогим вообще).

Графические библиотеки — это некий аналог (или, скорее, гомолог) пресловутого Miscrosoft Foundation Classes (MFC), на которых, теоретически, должны бы основываться все Windows-приложения. За исключением приложений фирмы Microsoft, разумеется — в их основе лежат некие недоступные простому смертному библиотеки.

Основных таких библиотек несколько: коммерческий пакет Motif и совместимые с ним открытые и бесплатные OpenMotif и Lesstif, Qt, распространявшаяся до недавнего времени на условиях собственной лицензии, открытая (по лицензии GPL) библиотека Gtk. Наличие установленных в системе таких библиотек — непременное (почти) условие функционирования основанных на них приложений.

Об оконных менеджерах и графических средах

Как уже сказано, то, с чем непосредственно сталкивается пользователь при работе в графическом режиме Linux — это оконный менеджер, именуемый в русскоязычной литературе также диспетчером окон. Недавно в переводной документации по Debian мне встретилась такая трактовка оригинального термина (Window Manager) — манипулятор окон. Пожалуй, по смыслу это наиболее удачный перевод, но он пока не прижился.

Именно оконный менеджер, установленный по умолчанию, возникает перед глазами после запуска Х Window, каковой осуществляется стандартно командой startx, но может выполняться и различными иными способами:

командой xinit или просто исполнимым модулем соответствующего менеджера. Иногда может понадобиться введение дополнительных параметров, но об этом я говорить не буду.

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

Поскольку ни вид, ни функциональность оконных менеджеров не привязаны, как в случае с Windows, к какому-либо GUI (ибо они сами таковыми являются), их внешность ограничивается в Х Window только фантазией авторов, а функциональность — их пониманием баланса между богатством

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

Не возьмусь судить, больше ли оконных менеджеров, чем дистрибутивов Linux, или меньше, но количество — сопоставимо. Оценить его можно по сайту Window Managers for X (http://www.plig.org/xwinman/index.html), где

приведены многие десятки названий оконных менеджеров, сопровождающиеся более или менее подробными характеристиками и ссылками на сайты производителей.

Традиционными оконными менеджерами для XFree86 являются FVWM, OLWM, TWM и их вариации, воспроизводящие внешний вид интерфейсов Motif или OpenLook — стандартных графических интерфейсов мира Unix и Х Window. Есть системы, продолжающие линию развития интерфейса NextStep — Afterstep и WindowMaker. Имеются и оконные менеджеры, с большим или меньшим подобием имитирующие Windows 95 — FVWM95 и IceWM, а также интерфейсы иных настольных платформ — MacOS, Amiga, OS/2.

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

Мне известно три графические среды, претендующие на титул интегрированных — KDE, GNOME и XFce, различающиеся своей структурой, набором приложений и подходом к их интеграции. Кроме того, имеется еще и CDE — это среда многих коммерческих Unix-систем, и о ней не будет речи в этой главе.

Зачем простому пользователю такое изобилие графических интерфейсов, оконных менеджеров, интегрированных сред? Нетрудно ответить — для обеспечения все той же свободы выбора, о которой я столько говорил на этих страницах, и которая определяет притягательную силу Linux.

Оконные менеджеры различаются функционально. И вы, в зависимости от своих задач, долговременных или сиюминутных, можете выбрать любой вариант — обеспечивающий лишь базовые средства GUI или изощренный по своим возможностям.

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

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

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

Поэтому, приведя описание и сравнение нескольких сред и оконных менеджеров, с коими мне довелось работать, я ни в коем случае не ставлю себе задачу выбора наилучшего из них: все они имеют свои особенности, определяющие целесообразность применения в тех или иных ситуациях. И выбор их может определяться даже не вкусами и предпочтениями, а просто настроением или текущими задачами.

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

Кроме того, немаловажным для меня является эстетический момент. Но это, как вы понимаете, критерием быть не может. Руководствуясь принципом "от привычного — к экзотическому", я начну рассмотрение с интегрированных графических сред, знакомых пользователю не только Windows, но и MacOS или OS/2. И первой в их ряду будет KDE.

KDE — наиболее интегрированный выбор

Скорее всего, свое знакомство с работой в графическом режиме под Linux (и с работой в Linux вообще) вы начнете именно с KDE. Во-первых, во многих дистрибутивах она принята как графическая среда по умолчанию. Во-вторых, как внешне, так и функционально она наиболее привычна недавнему Windows-мигранту. И, в-третьих, она располагает большим набором полнофункциональных и стабильно работающих приложений. Но — по порядку.

Итак, KDE — это интегрированная графическая среда, совмещенная с оконным менеджером. Она основана на наборе графических библиотек Qt, разрабатываемом норвежской фирмой Troll Tech (http://www.trolltech.com).

Библиотека Qt распространялась на условиях собственной лицензии, предполагавшей бесплатность при некоммерческом использовании и весьма немалую цену — при использовании в проектах коммерческих. Это служило идеологическим препятствием для включения KDE в ряд распространенных дистрибутивов (Debian и до недавнего времени Red Hat). Однако ныне правила лицензирования Qt изменились: теперь в ряде случаев она подпадает под условия GPL, хотя плата за коммерческое использование библиотеки, по-видимому, сохраняется.

Маленькое отступление: я время от времени чересчур подробно останавливаюсь на условиях распространения программ. Это отнюдь не из врожденной склонности к сутяжничеству. Просто, на мой взгляд, пользователь открытого и бесплатного обеспечения должен понимать, есть ли в рамках существующих норм основания для производителя момент закрыть свои разработки, превратив их в сугубо коммерческий продукт. Дабы в один прекрасный момент не обнаружить, что то программное обеспечение, на котором вы построили свою профессиональную деятельность (особенно это касается узкоспециализированных программ), неожиданно оказалось коммерческим и весьма дорогим. Так вот, распространение на условиях GPL — это почти гарантия, что такого не случится.

Мне могут возразить, что в реалиях нашей страны все это — условности, не имеющие практического значения. Не спорю. Но, черт возьми, будем же мы (или хотя бы наши внуки) когда-нибудь жить в цивилизованном и законопослушном обществе? Хотелось бы, если не верить, то надеяться.

Возвращаясь, однако, к нашим баранам, продолжим разговор о KDE. Текущая, стабильная ее версия — 1.х.х, основана на Qt l.x.x. В настоящее время релиз KDE 2 благополучно вышел в свет на библиотеке Qt 2.х.х. Однако думается, что первая версия будет сохранять актуальность еще некоторое (возможно, значительное) время.

Во-первых, KDE 1 — система устоявшаяся и стабильная, что было бы опрометчиво утверждать про вторую версию. Во-вторых, пройдет еще некоторое время, прежде чем KDE 2 войдет стандартным компонентом в распространенные дистрибутивы. И, в-третьих и главных, еще больший срок потребуется для переписывания ориентированных на первую версию приложений, работоспособность которых в новой системе отнюдь не гарантируется.

Так что отдавая себе отчет в неизбежности сосуществования версий, посмотрим на KDE 1 снаружи. Внешне эта графическая среда имеет немало общего с Windows 9х (рис. 4.1). Хотя спутать их — невозможно. Это, с одной стороны, обеспечивает чувство смутного знакомства (и не обескураживает, как экзотика многих более самобытных графических систем). С другой же — будит здоровое любопытство, не вызывая скуки, появляющейся при взгляде на ярко выраженные Windows-клоны (не для того же, в самом деле, мы ставили Х Window, чтобы лицезреть великую кнопку Start (Пуск)).
Рис. 4.1. Интегрированная графическая среда KDE 1

Правда, и в KDE нечто вроде такой кнопки (называемой К) имеется. Она расположена слева на управляющей панели (каковая по умолчанию располагается вдоль нижнего края экрана, но может помещаться с любой его стороны). Управляющая панель отделена от панели задач и содержит минимизированные значки запущенных приложений; последняя (то есть панель задач) по умолчанию — вдоль верхней кромки экрана. Так что места достаточно для любого разумного количества кнопок и запущенных приложений (а если учесть еще минимум три рабочих стола, то более чем достаточно).

Меню стартовой кнопки К — многоуровневое иерархическое, построенное сходно с главным меню Windows. В основных его пунктах сгруппированы программы различного назначения:
просто приложения (преимущественно текстовые редакторы, процессоры и вьюверы);
игры (в весьма обширном ассортименте, включая множество любимых мной пасьянсов);
средства для работы с графикой (как растровой, так и векторной, а также всякого рода "гляделки");
Интернет-приложения (браузеры, почтовые программы, средства удаленного доступа, модемного подключения и т. д.);
средства мультимедиа (многочисленные аудио- и видеопроигрыватели различного назначения и для различных форматов);
системные утилиты (вход в режиме суперпользователя, средства управления шрифтами и аккаунтами пользователей, настройки оборудования и рабочей среды);
утилиты общего назначения (огромный двухуровневый список, в котором программы — от архиваторов до демонстраторов фаз Луны);
средства разработки — интегрированные среды, отладчики, etc.;

Практически все перечисленные приложения являются специфичными для KDE. Однако и запуск не рассчитанных на эту среду приложений не возбраняется, для чего они собраны в отдельный пункт — GNOME и приложения X. Здесь можно видеть подгруппы — средств администрирования и конфигурирования, Интернет- и мультимедиа-приложений, текстовых и графических редакторов, и прочее, и прочее, и прочее.

В меню кнопки К включены также пункты вызова:
встроенной системы помощи в гипертекстовом формате, очень удобной, но, к сожалению, на русский язык не переведенной (я забыл сказать, что в принципе KDE, по крайней мере в поставке Linux Mandrake 7.0/RE, в очень значительной мере русифицирована);
содержимого домашнего каталога;
поиска файлов;
Центра управления KDE.

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

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

Панель задач в момент запуска KDE пуста. По мере загрузки приложений она заполняется кнопками — их минимизированными значками. В панели задач отображаются приложения со всех виртуальных экранов. Щелчок мышью на некоей задаче вызывает автоматический переход на соответствующий ей виртуальный экран.

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

На рабочем столе — серия значков для вызова приложений, открытия папок (таких, как Автостарт, Ноте (домашний каталог), Корзина (удаленных только средствами KDE) файлов); здесь же — значки Cd-Rom для автоматического монтирования компакт-диска, Floppy для флоппи-диска и других сменных носителей, если они есть. Любое из этих действий происходит при одинарном щелчке левой кнопки мыши.

После этого для просмотра содержимого папок вызывается файловый менеджер KFM (совмещенный с браузером) — неотъемлемая часть всей этой среды; степень его интеграции в систему выше, чем Windows Explorer и Internet Explorer в соответствующей операционной системе, не к ночи будь помянута.

Со всеми перечисленными интерфейсными элементами KDE связаны контекстные меню, доступные по щелчку правой кнопки мыши на соответствующем объекте. Для управляющей панели оно имеет команды: Настройка и Перезапустить. Со значками сопряжены пункты — Открыть с (помощью программы, вводимой вручную или выбираемой из списка). Копировать, Отправить в корзину, Свойства. Содержание их, думаю, понятно без комментариев.

Контекстное меню, вызываемое по щелчку правой кнопкой непосредственно на рабочем столе, содержит команды:
Новый (папка, файл системного устройства, URL, приложение; последнее — для создания значка вызова новой программы);
Закладки (аналог Bookmark в Internet Explorer);
контекстно-зависимая помощь;
Свойства дисплей (для настройки параметров, доступной и через Центр управления);
упорядочения и расположения окон и пиктограмм.

Особенно важен и интересен пункт Запустить. Он вызывает так называемый Minicli (что я перевел бы как минитерминал) — облегченный вариант командной строки терминала или консоли (нечто аналогичное команде Run (Выполнить) из главного меню Windows). С его помощью можно вызвать любую команду или запустить любую программу графического режима, причем с указанием всех необходимых аргументов. Поддерживается история команд: нажатием клавиш <Up> и <Down> можно просмотреть ранее введенные команды, правда, только в рамках текущего сеанса КОЕ.

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

Каждая запущенная программа открывает свое окно на том виртуальном рабочем столе, к которого она была вызвана. Стандартными элементами окна, определяемыми интерфейсом KDE, являются:
вверху строка заголовка, содержащая по умолчанию название программы или имя файла данных (если он открыт) с указанием пути к нему;
в том же ряду управляющие элементы: слева — управление окном (развертывание/свертывание, перемещение, изменение размера, перемещение на иной виртуальный рабочий стол, выбираемый из списка) и прикрепления окна к некоему месту на десктопе (т. н. "шпилька"); справа — минимизации на панели задач, развертывания на полный экран, закрытия;
внизу — строка состояния, содержание которой определяется программой, и горизонтальная полоса прокрутки;
справа — вертикальная полоса прокрутки.

Кроме того, специфичные для KDE приложения имеют обычно строку главного меню и панель инструментов. Обе они стандартизованы в стиле Windows.

Думается, из всего сказанного ясны функциональные возможности KDE. Следует только заметить, что в дополнение к многочисленным способам запуска приложений (из стартового меню, с помощью пиктограмм на управляющей панели или на рабочем столе, из контекстного меню с помощью Minicli), есть и традиционный для Linux (и Unix) способ — из окна эмуляции терминала. Обращение с ним близко к приемам работы в командной строке консольного режима, о чем буду говорить в заключение.

Теперь рассмотрим KDE с точки зрения настраиваемости.

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

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

Штатная терминальная программа для KDE — konsole — также имеет широкий спектр настроек: изменяется цвет фона и текста (в пределах заданных цветовых схем), размер шрифта, исходный размер терминального окна и т. д.

Поддается настройке и управляющая панель. Для этого в стартовом меню предусмотрен специальный пункт Панель, в котором существует команда Добавить приложение. Правда, таким образом на панель можно поместить только то, что встроено в стартовое меню. Впрочем, с любым другим приложением дело обстоит не сложнее: достаточно на рабочем столе создать для него пиктограмму (через контекстное меню Новый ¦ Application), после чего просто перетащить ее мышью на управляющую панель.

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

Не вызывает нареканий и устойчивость KDE. Столь же стабильно работают и его штатные приложения. А вот с точки зрения быстродействия она рассматривается как одна из самых медлительных и ресурсоемких систем. Правда, на машине класса Pentium-III со 128Мбайт оперативной памяти чувства дискомфорта при работе с KDE не возникает. Однако, по сведениям моих корреспондентов, с уменьшением объема оперативной памяти быстродействие ее падает чуть ли не в геометрической прогрессии.

Справедливости ради следует заметить, что многие из существующих недостатков KDE обещают быть ликвидированы во второй версии. Поскольку к моменту, когда вы станете читать эти строки, версия эта с большой вероятностью будет существовать в качестве релиза, логично было бы остановиться на ее особенностях. Основанных на знакомстве с бета-версией, маркированной как KDE 192.

Но для начала я хотел бы предостеречь от немедленного обновления KDE, что называется, "в лоб". В результате можно благополучно развалить старую версию, не получив адекватной замены — в существующем виде KDE 2 для повседневной работы не пригоден и сразу по выходе релиза вряд ли сравнится с первой версией по устойчивости. Кроме того, в KDE 2 гарантированно откажутся работать (по крайней мере, без перекомпиляции) некоторые приложения, например, HTML-редакторы WebMaker и Quanta, базирующиеся на штатных текстовых редакторах из KDE.

Для пристрелочного знакомства с новой системой осторожнее было бы воспользоваться версией, имеющейся на многократно упоминавшемся мной Appendix к Linux Mandrake 7.0/RE или из какого-либо post-appendix с ftp://Iogic.ru. Они собраны в виде бинарных пакетов (rpm) так, чтобы мирно сосуществовать с KDE 1. А прилагаемые файлы README содержат исчерпывающие сведения о порядке установки библиотек, базовых компонентов и приложений.

При загрузке KDE 2 для начала появляется заставка с маленьким зелененьким дракончиком-динозавриком-крокодильчиком (систематическую принадлежность определить затрудняюсь). Стиль KDE сохранен, но исполнение — весьма аккуратное, отвращения не вызывает. Ну а дракончик-..., зверь, одним словом, так даже симпатичным показался.

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

Первое, что бросается в глаза после загрузки — исчезновение отдельной панели задач в верхней части экрана. Она теперь совмещена с управляющей панелью, расположенной внизу. В отличие от предыдущей версии, в этой панели отображаются только приложения, запущенные на текущем виртуальном рабочем столе.

Вид управляющей панели изменился мало: те же кнопки К, Home, Konsole, Help, переключатель виртуальных десктопов. Кнопки от старых внешне отличаются слабо, но стали элегантнее, что ли; во всяком случае они не производят столь топорного впечатления, как в KDE 1.

В структуре стартового К-меню произошли изменения. Они касаются главным образом перераспределения между пунктами System и Settings. Так, управление шрифтами перебралось из первого во второй, причем — еще и в подпункт Settings ¦ LookNFeel. Там же наряду с Font Manager появился пункт Font — для настройки шрифтов рабочего стола, которая раньше осуществлялась через Центр управления или из контекстного меню. Впрочем,

последнее по прежнему появляется при щелчке правой кнопкой мыши и содержит пункты:
Add, служащий для добавления в панель управления кнопок приложений или апплетов (каковыми, нужно заметить, являются все элементы панели);
Configure, предназначенный для конфигурирования панели: изменения размера ее самой и пиктограмм на ней, размещения панели, автоскрытия, ее задержки и скорости анимации, определения фона панели и даже отдельных ее кнопок;
Help и Restart, назначение которых в комментариях не нуждается.

Разумеется, в KDE 2 имеются и средства настройки рабочего стола. Проще всего они осуществляются из контекстного меню по щелчку в его пределах правой кнопки мыши. В отличие от предыдущей версии, настройки дескто-па разнесены на два пункта — настройку фона (Configure Background) и всего прочего (Configure Desktop).

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

Из панели Configure Desktop можно установить вертикальное выравнивание значков на рабочем столе и отображение скрытых файлов, приписать средней и правой кнопке мыши различные контекстные меню (Window List Menu, Desktop Menu, Application Menu), указать пути до каталогов — рабочего стола, автозапуска и Корзины (как и в Windows, в KDE это обычные компоненты дерева каталогов). Здесь же — изменение гарнитуры и размера (в трех градациях) шрифта для подписей к элементам рабочего стола.

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

Судить о функциональности среды по бета-версии было бы опрометчиво. Посему на них я остановлюсь лишь вкратце.

Запуск приложений в KDE 2, как и в предыдущей версии, осуществляется различными способами:
из командной строки терминала, в качестве которого по умолчанию выступает konsole, но может быть определен и любой другой;
непосредственно из стартового К-меню;
помощью пиктограмм панели;
помощью пиктограмм на рабочем столе;
с помощью миникомандной строки (Minicli), вызываемой либо из контекстного, либо из стартового меню.

Функционально изменился лишь последний способ. К истории команд, просматриваемой с помощью клавиш управления курсором, добавилось выпадающее меню. История команд не теряется после завершения сеанса KDE.

Ну а для переключения между приложениями, в том числе и расположенными на разных десктопах, к комбинации <Alt>+<Tab>, через так называемый Pager (переключатель страниц) на панели и контекстному меню (по умолчанию по щелчку средней кнопки мыши), добавилась еще одна возможность:

апплет Kasbar, куда также помещаются все открытые приложения.

Что можно сказать по поводу быстродействия новой версии? Грузится она медленнее, по ощущению, ровно на то время, пока происходит созерцание помянутого ранее динозаврика. Однако после загрузки особенной затормо-женности я не заметил.

Подводя итог, скажу, что возможно, с точки зрения пуристической, KDE — это действительно Windows-подобная среда, противоречащая исконному духу Unix. Однако ведь Linux — не тюрьма народов: нравится KDE или есть в нем потребность — используй, не нравится или не нужен — не используй. На случай чего предусмотрены и другие интегрированные графические среды. Одна из которых — XFce.

XFce — повинуясь импульсу

XFce (The Cholesterol Free Desktop Environment, что применительно к случаю я перевел бы как Настольная Среда для Холериков) — также интегрированная (то есть содержащая специфичные для нее приложения и утилиты) графическая среда со своим собственным оконным менеджером, основанная на библиотеке Gtk. Текущая ее версия —3.6.1, найти ее можно на http://www.xfce.org. Впрочем, она стандартно входит во многие дистрибутивы Linux.

Первый же запуск XFce показывает ее соответствие названию: все работает весьма быстро и производит впечатление импульсивности. Поведение системы определяется ее собственным оконным менеджером, именуемым XFwm. Он включает следующие интерфейсные элементы: переключатель (Pager, в терминологии авторов) виртуальных экранов в верхнем правом углу и главная панель (XFce Main Panel) — внизу по центру.

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

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

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

Среди включенных в главную панель обычных приложений и утилит (терминал, браузер, калькулятор) привлекают внимание специфичные для XFce программы: менеджер фонового оформления (backdrop manager), звуковой менеджер (sound manager), календарь, модуль совместимости с GNOME и весьма своеобразный файловый менеджер XFTree. Который, впрочем, будет рассмотрен в следующей главе.

Все кнопки главной панели легко переопределяются — тем же способом, что и добавляются новые.

Рабочий стол при первом запуске пуст, как карман научного сотрудника. Щелчок на нем левой кнопкой мыши вызывает меню для управления окнами и значками, настройки мыши, фона (backdrop) и звука, а также выхода, правой — список запущенных приложений. Средняя кнопка управляет размерами окон, их минимизацией, перемещением и фиксацией, пересылкой на другой рабочий стол, а также переключением между окнами.

Средств запуска программ с рабочего стола (типа минитерминала KDE) не обнаруживается. Хотя такое средство включено в состав файлового менеджера. Так что, помимо главной панели, для запуска программ можно использовать только какой-либо стандартный эмулятор терминала (по умолчанию в нее включен xterm).

Программы запускаются в окне с управляющими кнопками вызова управляющего меню и "пришпиливания" (вверху слева), минимизации и максимизации (вверху справа). Стандартной кнопки закрытия нет, это можно сделать через управляющее меню или щелчком правой кнопкой на нем.

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

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

Вообще, мне показалось, что самый удобный способ работы с XFce — открывать на каждом экране по одной программе (благо экранов можно создать много), и переключаться между ними через xfwm Pager или с панели кнопок.

Убедившись в работоспособности системы, можно заняться ее эстетическим совершенствованием. Что осуществляется через кнопку Установка на главной панели. Здесь можно определить:
цветовую палитру (выбрав из списка или создав собственную);
основные параметры XFce, как то: перерисовку окон, вид системных часов, количество виртуальных экранов (максимально десять) и кнопок вызова дополнительных меню в главной панели (максимально двенадцать), размер кнопок панели и меню, а также общую шрифтовую гарнитуру, начертание и кегль;
параметры окон, такие как фокус, показ содержимого при перетаскивании и изменении размера и прочее, а также шрифтовое оформление заголовков, пиктограмм и меню;
автозапуск приложений из фиксированного списка.

Выбор фона производится с помощью штатного средства (backdrop manager) с главной панели или из пункта Backdrop контекстного меню. Можно выбрать из достаточно обширного штатного списка, или задать свой собственный, из любого места дерева каталогов и в любом из обычных растровых форматов. Аналогично и со звуковыми сигналами для всяких событий — они выбираются отдельно из того же меню или с главной панели, также штатной утилитой (sound manager). В отличие от KDE, наборов связанных тем для XFce не предусмотрено.

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

В то же время с точки зрения функциональности XFce далеко не дотягивает до KDE. Главный ее недостаток, пожалуй,— не самые удобные средства манипуляции запущенными приложениями. Хотя если число их не превышает десятка-полутора, это практически не мешает, как я говорил. Кроме того, мне она показалась не очень устойчивой, так же как и ее штатный менеджер. Впрочем, возможно, что. Это особенности ее функционирования в моей конфигурации: с приложениями, основанными на библиотеке Gtk, мне вообще не везет.

Несколько слов о GNOME

GNOME — это вторая из полнофункциональных интегрированных графических сред, претендующая на равное место с KDE. Подобно XFce, она основана на библиотеках Gtk. Отличие ее в том, что собственного оконного менеджера она не имеет. До недавнего времени в этом качестве стандартно использовался Enligtenhment. Ныне эта роль перешла к Sawmill, переименованному по сему поводу в Sawfish. Впрочем, GNOME может работать и с некоторыми другими менеджерами окон, например — с описываемым ниже Window Maker.

Подобно KDE, GNOME — по настоящему интегрированная среда с большим количеством специфичных приложений. Среди них текстовые редакторы и процессоры, редакторы HTML-кода и многие другие. Широко известный графический редактор GIMP, хотя и не написан специально для GNOME, основан на той же библиотеке Gtk.

Однако, на мой взгляд (да простят меня приверженцы GNOME), ни одно из этих приложений (за исключением GIMP, но это — отдельная история) не дошло до зрелости и стабильности приложений KDE. Да и сам GNOME как интегрированная среда уступает KDE и в функциональности, и в устойчивости, несущественно превосходя его по быстродействию.

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

Я же заканчиваю с интегрированными графическими средами, переходя к собственно оконным менеджерам. Из которых исторически первым для меня был Window Maker.

Window Maker как наследник NextStep

Возможно, кое-кто еще помнит NextStep — знаменитую систему начала 90-х годов, призванную явить миру графический интерфейс будущего. Попытка эта, в силу ряда причин, не удалась (хотя в некоторых академических учреждениях России эта система до недавнего времени с успехом использовалась на собственной аппаратной платформе), однако дело ее не пропало:

она оказала влияние на многие графические среды Unix-систем, как коммерческих, так и открытых. А в мире XFree86 она получила дальнейшее развитие в виде оконных менеджеров AfterStep и Window Maker.

О последнем-то и пойдет речь в этом разделе. Текущая его версия (О.бх) пребывает на сайте http://www.gnustep.org. Но может быть обнаружен и в составе практически любого дистрибутива Linux. Вид у него, как у истинного наследника NextStep, достаточно необычный, требующий внимательного рассмотрения (рис. 4.2).
Рис. 4.2. Оконный менеджер Window Maker

Перво-наперво, бросаются в глаза крупные трехмерные кнопки вдоль правого края экрана. Это своего рода управляющая панель, именуемая здесь

доком (Dock). Двойной щелчок левой кнопкой мыши на большинстве входящих в панель кнопок запускает приложения либо конфигурационные утилиты.

Правда, верхняя кнопка (именуемая WMDock) по умолчанию ничего не запускает, а служит для управления положением панели на экране: ухватившись за нее (то есть кнопку), панель можно перемещать вверх-вниз или с правой на левую сторону экрана (на верхнюю или нижнюю нельзя). Но к ней можно привязать какое-либо приложение, которое требуется запускать при старте Window Maker.

Вторая сверху кнопка (ASClock) — это просто индикатор времени и даты. Третья (xtenn) запускает одноименный X-терминал xterm (но ей можно приписать и любую другую терминальную программу). А четвертая (WMPefs) служит для конфигурирования Window Maker (как — расскажу чуть ниже).

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

Все остальное пространство экрана свободно и представляет собой рабочий стол. Щелчок на нем правой кнопкой мыши вызывает контекстное меню, а средней — список запущенных приложений, не исчезающих, в отличие от KDE (и Windows) самопроизвольно. Щелчок левой кнопкой никаких действий не оказывает: чтобы закрыть ниспадающие меню, следует щелкнуть ею на заголовке меню и затем на появившемся крестике, либо щелкнуть соответствующей (правой или средней) кнопкой мыши вне меню на рабочем столе.

Из контекстного меню создаются (в любом количестве) и удаляются новые виртуальные экраны (Application ¦ Workspace ¦ Создать). Между которыми потом можно переключаться уголками на кнопке Clip. Переключение экранов сопровождается объемной анимацией их названий в центре экрана. Однако, поскольку название экрана по умолчанию русское (Рабочее место #), а соответствующий шрифт отсутствует, анимируется абракадабра. Впрочем, название экрана легко изменяется щелчком правой кнопкой мыши на кнопке Clip. Открытые приложения по умолчанию не переходят на новый экран.

Для запуска приложений, кроме стандартного терминала и кнопок на панели, используется также контекстное меню рабочего стола, для чего в нем присутствует команда Run (аналог минитерминала KDE).

И о пополнении управляющей панели необходимыми для работы кнопками следует позаботиться самому. Как — a priory не совсем ясно. Но методом "ползучего эмпиризма" можно найти несколько способов. Первый — запустить приложение, выбрав из контекстного меню рабочего стола упомянутый пункт Run. Одновременно с открытием окна приложения на рабочем столе появляется его пиктограмма, внешне аналогичная кнопкам панели. Она захватывается мышью и просто перетягивается в панель, где и остается на веки веков, если вам не придет в голову ее истребить, что также предельно просто: кнопка захватывается мышью и перетягивается за пределы панели на рабочий стол, где она рассыпается в прах.

С KDE-приложениями этот способ не проходит. Чтобы встроить их в Dock, требуется: запустить приложение KDE, затем по щелчку правой кнопки мыши на заголовке его окна вызвать контекстное меню, выбрать в нем пункт Свойства окна. перейти к подпункту Дополнительные параметры и отметить там опцию Эмулировать значок приложения, сохранить эту установку и перезапустить приложение. При следующем его запуске появляется та самая пиктограмма, которую можно перетащить в Dock.

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

Окно запущенного приложения по умолчанию имеет в строке заголовка два управляющих значка: минимизации слева и закрытия справа. По щелчку правой кнопкой мыши на строке заголовка окно можно развернуть на полный экран, свернуть (то есть минимизировать), втянуть (то есть сократить до строки заголовка), выделить, перемасштабировать/переместить, закрыть (нормальное завершение программы) и убить (аварийное завершение программы, то есть команда kill).

Здесь же — доступ к свойствам и параметрам. Свойства — это атрибуты окна, такие, как наличие/отсутствие строки заголовка, кнопок закрытия и минимизации, изменяемость размера и прочее, а также исходное рабочее место (программу можно жестко привязать к любому из существующих виртуальных десктопов). Параметры — это положение на рабочем столе (всегда вверху или внизу), а также присутствие везде (как я уже говорил, по умолчанию .каждое приложение существует только на том виртуальном экране, на котором оно открыто).

Вот и все базовые средства Window Maker. Поскольку он, в отличие от KDE или GNOME, именно и только диспетчер окон, а не интегрированная графическая среда.

Тем не менее, он имеет богатые возможности настройки, осуществляемой тремя взаимодополняемыми способами.

Перво-наперво, базовые настройки осуществляются через уже упоминавшуюся кнопку WMPefs. Она вызывает окно конфигурирования Window Maker, где можно настроить:
позицию открываемых окон (автоматически, случайно, каскадно или ручками);
фокусировку окна (щелчком или вслед за курсором мыши), а также определить время автоматического всплывания окна (от 10 до 800 мсек, по умолчанию — никогда);
выравнивание подменю в стиле Windows, ниспадающим каскадом, или по верхнему краю;
расположение минимизированных окон и их выравнивание, а также размер экранных кнопок и пиктограмм (от 24х24 до 96х96 пикселов);
появление и характер всплывающих подсказок (по умолчанию отключены вообще);
пути поиска графических файлов для пиктограмм и фоновых изображений);
навигацию по виртуальным экранам (циклическую, с возвратом на первый экран после последнего, или с открытием нового экрана после последнего существующего). Здесь же можно отключить WMClip и WMDock (что не советую, включить обратно их можно только ручной правкой одного из конфигурационных файлов).

Имеются также средства настройки внешнего вида значков, окон, горячих клавиш, свойств мыши и прочее. А главное — настройка меню приложений, о чем следует сказать подробнее.

В меню приложений (то есть Applications, вызываемые из контекстного меню рабочего стола правой кнопкой мыши) можно добавить (и, разумеется, удалить) пункты первого уровня, которые могут содержать подменю любого уровня вложенности и с любым количеством пунктов, которым приписываются любые команды — достаточно указать ее имя (или полный путь).

Здесь же кроме выхода из Window Maker и его перезапуска можно (в подпункте Switch to) прописать вызов любого доступного оконного менеджера также с привязкой к горячей клавише. Делается это абсолютно аналогично вызову прикладных программ. При этом переключение в другой оконный менеджер или графическую среду (например, KDE) происходит с сохранением всех открытых приложений. К сожалению, обратная процедура (то есть, скажем, возврат из KDE в Window Maker) невозможна.

Дополнительные настройки внешнего вида Window Maker можно выполнить из всплывающего меню Applications (подменю Appearance, а не Workspaces, как можно было бы ожидать). Здесь можно определить:
тему целиком (из фиксированного набора, который легко пополнить);
стили окон и меню (из списка в более чем две дюжины позиций);
установки пиктограмм;
фоновое оформление — сплошная или градиентная цветовая заливка, изображения в любом распространенном растровом формате. Фон становится общим для всех виртуальных экранов, как существующих, так и создаваемых позднее.

Из комбинации всех этих элементов легко создать собственную тему и сохранить ее в виде файла для дальнейшего использования. Отсутствует только возможность изменения базового шрифта — это делается исключительно вручную.

A Window Maker, как и любой уважающий себя элемент Unix-системы, позволяет осуществлять Точную ручную настройку путем правки конфигурационных файлов. Их, находящихся по адресам /etc/Xll/WindowMaker и в каталоге /SHOME/GNUstep/Defaults — пять. Править, естественно, лучше последние, во избежание неприятностей.

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

В файле WindowMaker указываются стили меню и значков, цветовая палитра, пути для пиктограмм и фоновых рисунков и многие другие параметры, определяемые через кнопку WMPrefs, с помощью которой их и лучше изменять при необходимости. Однако, если вы случайно отключите WMClip и WMDock, единственный способ вернуть их назад — отыскать в этом файле строки

DisableClip = YES;

DisableDock = YES;

и заменить YES на NO. Или просто удалить — значение по умолчанию NO. Только сделать это нужно либо в консольном режиме, либо переключившись в другой оконный менеджер; иначе Window Maker при выходе восстановит значения текущего сеанса.

Файл WMRootMenu описывает содержимое меню Applications, вызываемого с рабочего стола и также определяемого через WMPrefs. Содержание WMWindowAttributes ясно из названия. Ну a WMState — описание панели WMDock и рабочих мест. Именно его легко отредактировать для внесения новых приложений в WMDock.

Каков же вывод из всего рассмотренного? В целом, по моему, сугубо положительный. Конечно, на первый взгляд Window Maker выглядит непривычно для пользователя Windows. Однако этим и пробуждает здоровое любопытство. Тем более что это не связано ни с какими принципиальными сложностями.

Возможных настроек почти достаточно для удовлетворения личных эстетических идеалов. А также — для внесения разнообразия в производственный процесс. Устойчивость — на уровне (я с зависаниями практически не сталкивался). Основные манипуляции с приложениями выполняются (при наличии минимальной привычки и после несложных настроек) легко и быстро.

Вопросы сравнительного быстродействия я рассмотрю позднее. Визуально, однако. Window Maker не производит впечатления "тормознутости". По крайней мере, на машине с процессором класса Pentium-III и 128 Мбайт памяти.

Таким образом. Window Maker может рассматриваться как полноценная альтернатива KDE, позволяя запускать все рассчитанные на последний приложения при более привлекательной внешности. Последнее (впрочем, как и все остальное) — не более чем мое личное мнение. Которое не навязываю, потому что, возможно, кому-то покажется более эстетичным и привычным Windows-подобный оконный менеджер IceWM.

IceWM — для глаз, привычных к окнам, и не только

Внешний вид IceWM — весьма Windows-образный: в нижней части экрана панель запуска приложений, она же — переключатель виртуальных экранов и панель задач (рис. 4.3), имеющая аналог пресловутой кнопки Start (Пуск), правее которой размещаются кнопки для переключения задач и запуска нескольких обычных приложений (терминала, Netscape Navigator и т. д.).
Рис. 4.3. Оконный менеджер IceWM

Затем кнопки переключения виртуальных экранов, коих по умолчанию четыре. С правой стороны панели — процессорный монитор и часы. В общем, достаточно аскетический набор.

Щелчок левой кнопкой мыши на девственно чистом рабочем столе вызывает список запущенных задач и виртуальных экранов, правой — меню, аналогичное по содержанию таковому стартовой кнопки; к средней клавише привязан Windows List., то есть список открытых приложений.

Стартовое меню содержит следующие пункты:
пару терминалов, несколько приложений и системных утилит;
отдельные пункты для приложений KDE и GNOME;
переключатель оконных менеджеров (включающий большинство установленных в системе);
переключатель тем.

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

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

То есть первое впечатление от IceWM — достаточно удручающее. И может и остаться таковым, если не обратиться к каталогу /usr/XllR6/lib/Xll/icewm/, где можно видеть сразу четыре конфигурационных файла — preferences, menu, toolbar и winoptions. Чтобы сделать их доступными для редактирования пользователем, эти файлы должно скопировать в свой домашний каталог (сами по себе они там не образуются). Зато потом настройке поддается практически все.

В файле preferences все пункты (а их там чуть ли не две сотни) по умолчанию отключены. Снимая значок комментария и устанавливая переключатели (1/0) в соответствующие значения, можно настроить:
массу параметров активизации окон;
определить шрифты и цвета всех интерфейсных элементов;
установить автоскрытие панели задач и состав пиктограмм на ней (таких, как часы, мониторинг загрузки процессора и т. д.);
и многое, многое другое.

Очень интересная опция — возможность установки двойной высоты управляющей панели. В этом случае панель разбивается на две части по вертикали. В верхней половине — стартовая кнопка, кнопки запуска приложений и часы. Между ними появляется своего рода командная строка (аналог мини-терминала из KDE). В нижней части — кнопки переключения виртуальных экранов (которых можно установить вплоть до двенадцати) и значки запущенных приложений; последние могут отображаться также и на рабочем столе. И в том, и в другом случае они представлены только на родительском виртуальном экране.

Не могу не отметить чрезвычайно удобную работу с командной строкой (даже не смотря на отсутствие истории команд и поддержки автоматического дополнения табулятором). В нее можно вставить выделенный фрагмент (стандартным способом, средней кнопкой мыши) или фрагмент, предварительно скопированный (сочетанием клавиш <Ctrl>+<V>). Разумеется, можно и просто набрать команду с клавиатуры, по буковкам.

В файле menu, как не сложно догадаться, можно настроить состав стартового меню, вызываемого по кнопке Linux. Делается это достаточно просто:

пункт для запуска программы определяется словом prog, после чего следуют название приложения, имя пиктограммы и исполняемого файла. А чтобы объединить несколько программ в одну папку (то есть сделать иерархическое меню), указывается слово menu, после которого, в фигурных скобках, перечисляются все необходимые "рго@'и", как это показано ниже:

prog xterm xterm xterm

prog fte fte fte

prog Netscape netscape netscape

prog Gimp gimp gimp

separator

    menu Mandrake magic (

        prog "Mandrake Update" updates-mdk MandrakeUpdate

        prog "Rpmdrake" Rpmdrake Rpmdrake

        prog "DrakConf" DrakConf DrakConf 

    } 

separator

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

prog FTE fte fte

prog Netscape netscape netscape

prog WebMaker /home/alf/.icewm/icons/webmaker.xpm webmaker

prog Kedit /home/alf/.icewm/icons/kedit.xpm kedit

prog Kwrite /home/alf/.icewm/icons/kwrite.xpm kwrite

prog Gimp gimp gimp

Наконец, в файле winoptions можно настроить параметры всяческих приложений.

Поддаются ручной настройке и темы рабочего стола. Для этого в каждой из них имеется файл default.theme (где задаются цвета, бордюры и прочее) и множество графических файлов для интерфейсных элементов. Все это совершенно элементарно поддается ручному редактированию. В частности, не составляет труда изменить цвета любых элементов, шрифты и тому подобное. Можно также определить фоновое изображение, причем оно отнюдь не обязано быть в формате ХРМ.

Для сохранения темы после окончания текущего сеанса путь к соответствующему файлу default.theme нужно прописать в preferences. Там же, при необходимости, можно разрешить/запретить центрирование фонового рисунка и его размножение. Дополнительные (помимо входящих в состав дистрибутива) темы для IceWM можно скачать по адресу http://icewm.tux.nu.

Все изложенное не могло не повлиять на мои выводы о IceWM в целом. А именно: это очень гибкая и настраиваемая система. Разумеется, ручная правка конфигурационных файлов занимает несколько больше времени, чем, скажем, перетаскивание значков загруженных приложений в Window Maker. Однако никаких принципиальных сложностей не представляет — все параметры конфигурации предельно прозрачны. Конечно, при эпизодическом применении IceWM она может быть неоправданна. Однако, если предполагается постоянное использование этой среды, затратить полчаса на ручную доводку не сложно.

Поскольку IceWM сочетает в себе:
эффективные средства запуска программ как из удобной и компактной панели, так и из командной строки минитерминала, без необходимости вызова терминального окна;
удобную и разнообразную манипуляцию запущенными приложениями;
достаточное количество виртуальных экранов с удобными способами перемещения между ними;
с эстетической точки зрения среда может быть обустроена как угодно, вплоть до вида, не имеющего ничего общего с исходным "Windows-образием".

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

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

FLWM — выбор аскета

FLWM — оконный менеджер, построенный с поистине спартанской простотой.

После запуска через доли секунды появляется стерильно чистый экран ядовитого синего цвета. Ни пиктограмм, ни кнопок, ни какой-либо панели задач — ничего. На щелчок левой (а также правой, да и средней тоже) кнопкой мыши этот экран реагирует появлением меню со столь же аскетическим набором функций — создания нового десктопа, нового терминала и выхода. Запуск программ — из командной строки терминала. Что, соответственно, при нескольких запущенных приложениях быстро загромождает экран, если забывать ставить знак амперсанда (запуска в фоновом режиме). Зато виртуальных экранов (то есть desktop) можно создать сколько угодно. И переключаться между ними из того же меню по щелчку кнопкой мыши.

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

Однако "все не так суицидально, если в корень посмотреть". Вернее, в файл документации к FLWM, обнаруживаемый в каталоге /usr/doc/flwm-x.xx. В котором его автор, некто Bill Spitzak (не возьмусь транслитерировать фамилию на русский), уверяет, что настраивать его можно. И даже рассказывает, как это сделать. В пользовательском каталоге находится /.wmx/, содержащий подкаталоги, соответствующие пунктам меню, с файлами, отвечающими командам. И в итоге для настройки контекстного меню достаточно создать подкаталоги любой желаемой структуры (до десяти уровней вложенности) и поместить в них символические ссылки необходимых приложений или коротенькие скрипты для запуска последних.

Что оказывается чрезвычайно удобно: любое приложение вызывается щелчком на любом пустом месте любого из открытых виртуальных экранов. В результате я пришел к выводу, что FLWM может быть очень полезен, особенно при ограниченных ресурсах. Да и быстродействие его — вне конкуренции.

Однако FLWM — не самое простое, что может быть. Потому что можно обойтись, в сущности, и вообще без оконного менеджера, для чего предназначен FailSafe.

FailSafe — заместитель при супербедности

Если интерфейс FLWM можно назвать спартанским, то в FailSafe даже анахорет Фиваиды не нашел бы ничего излишнего. Просто экран (не реагирующий ни на какие кнопки мыши) с окном терминала в верхнем правом углу — и более ничего.

Окно не масштабируемо, не перемещаемо и не закрываемо. Открыть второе такое же (не говоря о втором виртуальном экране) — тоже не удается. Единственное, что можно — запустить в командной строке этого терминала какое-либо приложение. Правда, надо отдать должное — именно любое. Кроме второго терминала — он перекрывает первый, и получить доступ к тому не удается.

Ввиду этого единственный способ запускать два и более приложений — это использовать фоновый режим запуска программы в командной строке.

В общем, FailSafe, конечно, оконным менеджером не является. Поскольку никакими окнами, в сущности, не управляет. Давая только доступ к самому по себе графическому режиму. Впрочем, как ни странно, для запуска графических программ этого оказывается достаточно. Другое дело, что манипулировать запущенными задачами, если их больше двух, практически невозможно.

Так что, видимо, назначение FailSafe расшифровывается его названием: использование в критических ситуациях, когда все прочие графические среды отказывают, а запустить что-то графическое необходимо. То есть это отдаленный аналог Safe mode в Windows.

Однако и он может быть использован в мирных целях. Как будет показано в соответствующей главе, офисный комплект StarOffice располагает полным набором средств для управления интерфейсными элементами (как, впрочем, и многим другим). Являясь, к тому же, чрезвычайно ресурсоемким по масштабам Linux пакетом. И если аппаратные ваши возможности ограничены, а потребности исчерпываются офисными приложениями, имеющимися в StarOffice, — не вижу причин, почему бы благородному дону не использовать и FailSafe.

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

Очень кратко о прочих оконных менеджерах

За чертой рассмотрения остались такие оконные менеджеры, как широко используемые Enlightenment, BlackBox, AfterStep, FVWM в обоих своих видах, twm, не говоря уже о множестве менее известных. Надеюсь, что когда-нибудь вернусь к этой теме. Это отнюдь не значит, что они плохи или не заслуживают внимания. Просто мне ознакомиться с ними не удалось, в оправдание чего могу только еще раз вспомнить высказывание Козьмы Пруткова об объятии необъятного. Правда, боюсь, что, ввиду необъятности Linux, вспоминать его мне придется все чаще и чаще.

А по существу вопроса добавлю, что об оконных менеджерах из прошлого абзаца писалось неоднократно, как в Интернете, так и на бумаге. Источники можно найти в соответствующих приложениях. Однако надеюсь, что некоторый материал для выбора среды обитания я дал.

Как этот выбор осуществить в реальности? Да загружать все среды и менеджеры по очереди и проверить на собственной шкуре. В чем весьма поможет чрезвычайно удобная программа wmselect (автор — Петр Новодворский). Она входит в состав Linux Mandrake 7.0/RE, запускаясь по умолчанию командой startx в режиме любого обычного пользователя (не администратора). И она позволяет, не меняя никаких настроек, выбрать оконный менеджер для текущего сеанса работы в Xfree86.

После чего можно перефразировать сакраментальный вопрос русской интеллигенции — что выбрать?

Что выбрать? Сравнительный анализ

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

Поскольку a priory можно было бы ожидать, что основанные на библиотеке Qt приложения должны бы лучше (быстрее и стабильнее) работать в средах, основанных на той же библиотеке (то есть в KDE), a Gtk-приложения - в средах на Gtk (то есть GNOME или XFce). Интересно было также проверить, как ведут себя приложения, не использующие ни той, ни другой библиотеки. Например, StarOffice, основанный на библиотеках фирменных. И медлительность которого уже стала притчей во языцех.

Однако оказалось, что время первого в сеансе (Linux, а не Х Window) запуска StarOffice и последующих различается более чем на порядок. Поэтому измерения без перезагрузки системы отражали не быстродействие программы, а только эффективность ее кэширования. Ну а перезапускать Linux по тридцать раз на дню — увольте, не для того Windows стирали...

Измерения производились в следующей конфигурации: Pentium-111/533 (Katmai, 133 МГц шина, 512 Кбайт кэша второго уровня), системная плата MSI-6163 (Intel BX), 128 Мбайт ОЗУ (один модуль PC-133, неизвестного

происхождения), Matrox G-400 с 16 Мбайт памяти, диск Quantum Fireball 8,4 Гбайт (АТА/66, 5400 об/с); прочие компоненты полагаю несущественными. Видеорежим — 1024х768 при 16-битном цвете.

Сначала измерялось время запуска оконной среды из программы wmselect по щелчку на соответствующей пиктограмме; фон — по умолчанию в каждой среде, за исключением GNOME, без использования фоновых рисунков. Для GNOME оказалось, что время его запуска очень зависит от настроек Enlightenment, используемого в моей версии в качестве оконного менеджера. Потому для последнего была подобрана достаточно типичная тема, без архитектурных излишеств — в противном случае результат был бы много хуже.

Затем в каждой из сред измерялось время запуска прикладных программ, основанных на библиотеке Qt (Webmaker и Klyx) и на библиотеке Gtk (Bluefish и GIMP). Результаты измерений приведены в табл. 4.1.

Таблица 4.1. Сравнение быстродействия графических сред

Среда

КОЕ, с

GNOME, с

WindowMaker, с

XFce, с

IceWM, с

FLWM, с

Запуск

15,60

4,00

1,09

1,78

2,09

1,00

WebMaker

2,37

1,63

1,25

1,28

1,03

1,03

Klyx

2,03

2,03

1,50

1,10

0,82

0,97

Bluefish

2,56

2,31

2,10

1,59

1,50

1,66

GIMP

5,69

3,30

2,31

2,20

2,07

1,90

Среднее (из пяти измерений)

5,65

2,65

1,65

1,59

1,50

1,31

Ср,для Qt

2,20

1,83

1,38

1,19

0,93

1,00

Ср,для Gtk

4,13

2,81

2,21

1,90

1,79

1,78


Разумеется, к приведенным цифрам нельзя относиться вполне серьезно. Поскольку в ряде случаев оно вполне сопоставимо со временем нажатия на кнопку секундомера и определялось моей личной реакцией. Однако некоторые качественные выводы из таблицы вполне можно сделать.

Так, вполне подтверждается широко распространенное мнение об особой медлительности KDE: время ее загрузки во много раз (4—15) превышает аналогичные показатели для всех остальных сред. Для остальных приложений разница не столь значительна (2—3 раза), но именно потому, что абсолютные значения много меньше, и разница эта сглаживается латентностью человеческой реакции. К тому же предположение о более быстрой работе Qt-приложений в основанной на этой библиотеке среде не подтверждается.

GNOME стабильно занимает вторую (снизу) позицию по быстродействию. И, опять-таки, это верно и для Qt-„ и для Gtk-приложений. Все прочие среды следует считать практически равными по быстродействию. Хотя функционально они весьма различны: среди них представлены как весьма насыщенные опциями среды (Window Maker и XFce, в меньшей степени IceWM), так и системы, обеспечивающие лишь базовые функции управления интерфейсными элементами (FLWM).

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

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

Командная строка, как традиционная среда обитания

Один Максим отрицал величие философии марксизма. Когда же его вызывали куда следует, он отрицал там свое отрицание. Так Максим на практике понял всю силу закона отрицания отрицания.

А. Шинкарев, "Максим и Федор"

Чтобы, подобно Максиму, понять все величие системы Linux и овладеть ей со страшной силой, совсем не нужно быть вызванным куда следует. Достаточно запустить так называемую оболочку командной строки (Shell). Вернее, она вызовется сама после загрузки системы и авторизации в ней.

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

Оболочка командной строки, иначе именуемая командной оболочкой или командной строкой (а по английски просто Shell, в дальнейшем я буду использовать термин "оболочка")— это интерфейс к операционной системе (в данном случае — Linux, но понятие это свойственно любой Unix-системе), обеспечивающим интерпретацию команд, вводимых пользователем. То есть, в рамках терминологии DOS/Windows, это аналог command.com, правда, достаточно отдаленный.

Кроме того, неотъемлемым атрибутом оболочки является .интерпретатор собственного языка сценариев (или, по простому, скриптов — о эта неискоренимая привычка подменять исконно русские выражения, типа "сценарий", всякой иностранщиной!), собранных из единичных ее команд по определенным правилам (то есть в соответствии с синтаксисом языка). Подобно тому, как в DOS из ее внутренних и внешних команд собираются bat-файлы (однако и эта аналогия достаточно далекая).

В отличие от DOS, где command.com единственен в своем роде, в Linux (и Unix вообще) оболочек существует достаточно много. В соответствии с синтаксисом используемого языка и поддерживаемыми дополнительными возможностями, они разделяются на две линии — линию Bourne Shell (оболочки Борна, в старых книгах по Unix называемой просто Shell) и линию С Shell (основанную на С-подобном языке).

В состав дистрибутивов Linux обычно входит несколько оболочек, представляющих обе линии. И имеющих, как всегда, свои достоинства и недостатки. Однако по умолчанию используется так называемая оболочка bash (Bourne Again Shell, то есть "Еще одна оболочка Борна"), классификационная принадлежность которой ясна из названия, являющаяся бесплатной и открытой. Кроме того, в процессе установки, например, Slackware, а также при загрузке с rescue-дискеты, используется оболочка ash — облегченный вариант bash, не требующий больших ресурсов.

Поскольку предполагается, что мой читатель не имеет предшествующего опыта работы в Unix-подобных системах, никаких личных предпочтений у него по поводу оболочек не сложилось. А потому следует руководствоваться известным Дальстроевским принципом, "когда не знаешь, что делать — делай, что приказано". В данном случае — то, что рекомендовано по умолчанию, то есть используй оболочку bash. И все сказанное ниже к ней и относится, хотя в общем приемы работы с оболочками на уровне пользователя достаточно сходны.

Итак, после загрузки системы и авторизации в ней мы видим приглашение командной строки, имеющее по умолчанию вид типа

[alv@localhost aiv]$

для обычного пользователя и

[root@localhost /root]#

для администратора. Это и есть пользовательский интерфейс оболочки. После рассмотренных выше развитых графических сред он может показаться аскетичным, архаичным и даже примитивным. Но если с первыми определениями еще можно согласиться, то последнее заведомо неверно. Так как оболочка предоставляет множество возможностей, иногда недостижимых другими средствами или достигаемыми куда менее эффективными средствами.

Что умеет оболочка? Во-первых, понимать и исполнять команды, вводимые пользователем с клавиатуры. Конечно, если эти команды существуют в природе (то есть системе Linux) и оболочка знает, где они расположены. Для этого она должна быть должным образом настроена, что обычно происходит при установке системы.

В Саге о файлах будет рассказываться о структуре каталогов Linux. Так вот, общесистемные команды, то есть исполнимые файлы, всегда имеют строго определенное место в этой структуре. И пути (path) к ним внесены в конфигурационный файл оболочки в виде переменной окружения PATH, подобно тому, как в DOS пути к исполнимым файлам вносятся в файл autoexec.bat. Посмотреть эти пути можно с помощью команды

echo $PATH

Ответом на нее будет срока вроде

/sbin: /usr/sbin: /bin: /usr/bin: /usr/XHR6/bin

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

Этот файл (.bash_profile) находится по адресу $НОМЕ (это сокращенное обозначение домашнего каталога пользователя, эквивалентное /поте/имя_пользователя). Прошу обратить внимание на точку в имени файла: она означает, что файл этот — скрытый, то есть может быть не виден при обычном режиме просмотра в каком-либо файловом менеджере. Сделав его видимым и вызвав с помощью любого текстового редактора, нужно внести в строку

РАТН=$РАТН

соответствующие значения (например, $HOME/bin), разделяя их двоеточиями без пробелов. Кроме того, для удобства бывшего пользователя DOS в конец строки можно добавить точку:

PATH=$PATH:$HOME/bin:.

Это будет указывать оболочке на необходимость поиска команды в текущем каталоге; в отличие от DOS, Linux (вернее, большинство оболочек) по умолчанию и не думает просматривать его на предмет исполнимых файлов. Что поначалу несколько обескураживает. К слову сказать, точка (.) в указании пути в командной строке всегда символизирует текущий каталог, тогда как .. / — каталог родительский, а / — корневой.

Большинство базовых программ Linux коротки и представляют собой прозрачные сокращения английских слов, означающих соответствующие действия; Например: ср (от англ. copy) — копирование файлов, is (от англ. list) — просмотр содержимого каталога, cd (от англ. change directory) — смена каталога, mkdir (от англ. make directory) — создание нового каталога и т. д.

Однако это отнюдь не обязательно: команды могут быть и весьма длинными и трудно запоминаемыми. В этом случае на помощь приходит могучее свойство оболочки, именуемое дополнением команд (напомню, что речь идет о bash; в других оболочках это свойство может и не поддерживаться, например, в той же ash).

Как им пользоваться? Вы набираете в командной строке несколько (сколько помните заведомо, или сколько не лень) первых знаков команды и нажимаете клавишу <ТаЬ>. Если вам повезло, и это сочетание уникально для требуемой команды — она волшебным образом возникнет перед глазами в командной строке. Если же нет, будет предложено несколько вариантов, из которых можно выбрать подходящий. Чем-то это напоминает поиск по шаблону, но не нужно даже напрягаться указанием масок типа * или ?.

Свойством дополнения можно пользоваться и при указании путей как к командам, так и к файлам данных, которые могут быть весьма длинными и трудно запоминаемыми.

Команды в Linux, как и в DOS, могут иметь (и, как правило, имеют) параметры (или опции) и аргументы. Например, в команде

ср -R $HOME /mnt/floppy

два аргумента $НОМЕ и /mnt/floppy указывают, что домашний каталог пользователя $НОМЕ должен быть скопирован на дискету /mnt/floppy (которая, как будет показано в следующей главе, тоже не более чем элемент дерева каталогов), а опция -R предписывает сделать это рекурсивно (то есть со всеми содержащимися файлами и вложенными подкаталогами). Опции и аргументы обязательно разделяются пробелами.

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

Оборотной стороной мощи команд оболочки является изобилие возможных параметров, запомнить которые поначалу нелегко. Да и не всегда нужно, если помнить, что с помощью опции -h или --help после имени команды всегда можно получить полный их список. Обратите внимание, что перед сокращенным указанием опции стоит одиночный дефис, а перед полным, синонимичным первому— сдвоенный: это — общее правило, как и положено, имеющее подтверждающие его исключения. В некоторых командах (например, программа архивации tar) дефис перед опцией не ставится вообще. А в ряде команд краткую справку по их использованию можно получить при запуске без опций и аргументов.

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

Видимо, авторам оболочки bash так и показалось. И потому они ввели в нее еще одно свойство — историю команд. То есть, если при пустом приглашении командной строки нажать клавишу <Up>, в ней возникнет последняя из введенных команд. Повторное нажатие вызовет появление предпоследней команды, и т. д. А нажимая клавишу <Down>, можно пролистать всю историю ввода в обратном порядке. И выбрав нужную команду (в нашем примере ср -R $HOME /mnt/floppy), просто нажать клавишу <Enter> для ее исполнения. Причем история команд не исчезает при перезагрузке и, хотя глубина ее не безгранична, но вполне достаточна, составляет многие сотни.

Есть и другой способ, на выбор (ведь возможность выбора — это основа философии Linux): просто ввести в командной строке команду hystory — и перед вами возникнет нумерованный по возрастанию список введенных ранее команд. Чтобы выполнить нужную — просто введите ! # (где # — номер команды в списке) и нажмите клавишу <Enter>.

Возможно, что список команд будет столь длинен, что его начало уйдет за пределы видимости. В Linux, в отличие от DOS, это не доставит никаких сложностей: нажимая клавишу <PageUp> при нажатой <Shift>, вы можете пролистывать экраны назад (нажимая <PageDown> — соответственно, вперед). Правда, глубина пролистыванйя ограничена 1000 строк.

Наконец, есть и третий способ: нужная команда из списка выделяется мышью (обычным способом, как и в Windows, при нажатой левой кнопке мыши) и вставляется в командную строку щелчком средней кнопки — команда исполнится тут же, не нужно даже утруждаться поисками клавиши <Enter>. Правда, этот способ обусловлен не особенностями оболочки, а определяется одним из стартовых сервисов— дрт, о чем вскользь упоминалось при описании инсталляций.

Слово "наконец" из предыдущего абзаца было преждевременным. Потому что и четвертый способ — тоже есть. Более, того, именно он-то и главный, обуславливающий декларируемое величие системы. А именно: выуживаем нужную нам команду со всеми ее опциями и аргументами из исторического списка, выделяем ее мышью, щелчком средней кнопки вставляем в текстовый редактор (как — чуть ниже) и сохраняем в текстовом файле. После чего приписываем ему право на исполнение — и имеем готовый скрипт, то есть исполнимую программу на языке сценариев оболочки. Замечательно просто, не так ли?

А что делать, если сегодня нам нужно скопировать на дискету файл_1, завтра — файл_2, и так далее? Ведь сохраненная в истории команд строка предусматривает только первый способ. Ничего страшного, обращаемся к еще одному свойству оболочки — возможности редактирования командной строки. То есть вызываем команду с предыдущим аргументом, с помощью клавиш управления курсором (обычно можно использовать также клавиши <Ноте> и <End>) перемещаемся к нужному месту командной строки, клавишами <Backspace> или <Delete> стираем устаревший аргумент или его часть, и самым обычным способом вписываем новый. Не правда ли, это именно то, чего нам так не хватало в командной строке DOS?

А в сохраненном скрипте на этот случай можно (в текстовом редакторе) предусмотреть соответствующие условия, точно так же, как мы это делали в старину при написании bat-файловю...

Впрочем, сценарии оболочки — тема длинная и совершенно отдельная. Увлекшимся могу посоветовать древнюю, но не устаревшую ("выйдет на битву король-следопыт — древний не значит старый", помните ведь?) книгу Брайана Кернигана и Роба Пайка "Unix — универсальная среда программирования" (точная ссылка — в Приложении 1). Где этому вопросу уделена почти половина внимания авторов.

Я же коснусь еще одного кита, на котором зиждется могущество командной строки (многовато китов получается, целый океанариум). Это возможность перенаправления ввода/вывода. Что это такое и зачем нужно? Попробую рассказать, в меру своего разумения.

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

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

А можно в командной строке набрать команду cat (от слова concatenation, смысл чего станет ясен через несколько строк) следующим образом:

cat > file_l

где > — символ перенаправления, нажать клавишу <Enter>, ввести

Line 1

снова нажать <Enter>, ввести

Line 2 

опять-таки нажать <Enter>, а затем — <Ctrl>+<D> (в Linux — обозначение конца файла, подобно нажатию комбинации клавиш <Ctrl>+<Z> в DOS). После чего новый файл создан. Чтобы убедиться в этом, можно снова прибегнуть к команде cat:

cat file_l которая должна вывести на экран следующее:

Line 1 Line 2

Файл этот может быть дополнен:

cat » file_l

где » указывает, что вновь вводимые данные должны быть добавлены к уже существующему файлу, после чего нужно ввести

Линия 3 

Линия 4

и еще раз нажать <Ctrl>+<D>. Теперь в ответ на команду

cat file_l

на экран будет выведено:

Line 1 

Line 2 

Линия 3 

Линия 4

Не правда ли, элементарно, как говаривал Шерлок Холмс? А еще с помощью все той же команды cat и операции перенаправления можно объединить (отсюда и название команды) любое количество сколь угодно длинных текстовых файлов (например, собрать книгу из отдельных глав):

cat file_l file_2 > file_3

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

Операции перенаправления можно объединять в конструкции. В приведенном ниже примере мы сначала просматриваем содержимое каталога test с помощью команды is, перенаправляя ее вывод в файл:

[alv@localhost test]$ Is > listi

и, просматривая его содержимое командой cat, видим:

[alv@localhost test]$ cat < listi filel file2 file3 listi

поскольку без параметров команда is сортирует список файлов в порядке возрастания. Затем с помощью команды sort с соответствующим параметром -г (от англ. reverse, то есть в обратном порядке) мы пересортируем этот список, получив данные из файла listi и перенаправив их в файл list2.

[alv@localhost test]$ sort -r < listi > list2

 После чего в ответ на команду cat получаем:

[alv@localhost test]$ cat < list2 listi file3 file2 filel

То есть перенаправление ввода/вывода — могучее орудие для производства простых (а также и очень сложных) операций. Однако это еще не все: перенаправление может быть осуществлено и с вывода одной программы на ввод другой. Для этого используется так называемый канал. Простейший пример — распечатка текстового файла или их серии:

cat filel file2 file3 | 1рг

где ¦ — символ канала (называемого также конвейером), a ipr — программа печати, получающая на вводе содержимое последовательности указанных файлов.

Каналы также могут объединяться в конструкции как друг с другом, так и с операциями перенаправления. Например, конструкция

ls > list | lpr

создает файл, немедленно направляемый на печать, а конструкция

ls | sort -r | lpr

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

Разумеется, приведенные примеры совершенно элементарны и могут показаться искусственными. Хотя пример с объединением глав книги и их печатью — абсолютно жизненный: приведенные конструкции позволяют выполнить эту операцию максимально быстро и просто (прикиньте, сколько времени вы затратите на это в MS Word, считая и его загрузку?). Уже ради этого можно было бы уделить некоторое время изучению работы в командной строке. Что, конечно, далеко не предел ее возможностей.

Предвижу резонный вопрос: а многозадачность, о которой столь много говорят пользователи Linux? Ведь если в графической среде использование многозадачности понятно для пользователя Windows (открываем каждую задачу в своем окне — и все), то как быть в командной строке?

Разумеется, многозадачность, как исконное свойство Linux, никуда не делась. И может быть реализована разными способами. Например, запуском программы в фоновом режиме. Что осуществляется вводом знака & после команды с ее опциями и аргументами (через пробел). Например:

sort -r listi > list2 &

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

Однако фоновое выполнение команд не дает психологического ощущения настоящей многозадачности. Ибо в консольном режиме Linux большинство операций осуществляется настолько быстро, что их параллельное выполнение просто не успеваешь заметить.

То ли дело Windows. Поставишь, бывало, копироваться на сменный винт пяток каталогов мегабайт на 500, запустишь "Солитер" и, с натугой перетаскивая карты под визг винчестеров, понимаешь: вот она, многозадачность в действии.

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

Обычно же требуется совершенно другой аспект многозадачности: например, одновременное открытие двух (и более) текстовых документов и обмен фрагментами между ними. Для этого существует несколько методов. Один из них — механизм job control, основанный на приостановке (непрерывании или выходе) текущей задачи, запуска новой, а затем возврата к прежней.

Осуществляется все это руками гораздо проще, чем говорится языком:
запускается некая программа, например, текстовый редактор;
в нем набирается какой-то текст;
в один прекрасный момент требуется Запустить другую программу, для чего нажимается комбинация клавиш <Ctrl>+<Z>, символизирующая приостановку текущей задачи;
в появившемся приглашении командной строки запускается новая требуемая программа;
процесс повторяется столько раз, сколько вам это нужно.

Возврат к первой (или любой другой) задаче осуществляется набором в командной строке

fg #

где # — номер требуемой задачи в порядке запуска. Номер этот, естественно, будет тут же благополучно забыт. Что не страшно — набрав предварительно jobs, вы получаете пронумерованный список всех приостановленных заданий.

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

Если, загрузив систему и авторизовавшись в ней, вы нажмете комбинацию клавиш <Alt>+<F2> (или любую другую в диапазоне <F2>—<F6>), перед глазами опять возникнет предложение ввести login. Проделав это, вкупе с вводом пароля, вы получаете в свое распоряжение второй текстовый экран, где вольны делать то же, что и на первом. При этом, если на первом экране был использован один пользовательский аккаунт, то на втором он может быть и другим; можно авторизоваться и как суперпользователь.

Таких виртуальных консолей по умолчанию может быть создано до шести. Седьмая консоль (вызываемая комбинацией клавиш <Alt>+<F7>) зарезервирована для работы в графическом режиме. То есть, если на первой консоли был запущен Х Window, можно использовать пять текстовых консолей. Следует только помнить, что переход из Х Window в какую-либо текстовую консоль осуществляется комбинацией <Alt>+<Cti-l>+<Fn>, где <Fn> — соответствующая нужной консоли функциональная клавиша. А возврат к графическому режиму — не клавишами <Alt>+<Fl> (там вы увидите невразумительные текстовые сообщения), a <Alt>+<F7>.

Между текстовыми консолями можно обмениваться данными, и очень просто: в консоли 1 обычным образом выделяем мышью фрагмент текста, переходим в консоль 2 и в нужном месте вставляем его щелчком средней кнопки (не нужно только предварительно фиксировать курсор — подвели к нужному месту и "хлоп" по средней кнопке). Не правда ли, гораздо проще, чем стандартная операция в Windows: выделить фрагмент, правой кнопкой мыши вызвать контекстное меню, выбрать из него пункт Copy, зафиксировать курсор на новом место, опять щелкнуть правой кнопкой, из контекстного меню выбрать пункт Paste.

Вообще следует помнить, что любое выделение фрагмента мышью (но не клавишами управления курсором) в Linux приводит к автоматическому помещению его в буфер. Причем как в текстовом режиме, так и в графическом. В последнем, правда, во многих оконных менеджерах и прикладных программах поддерживаются функции Copy и Paste для выделенного любым способом (как мышью, так и стрелками курсора при нажатой клавише <Shift>) фрагмента. Осуществляемые стандартным для Windows способом, то есть через комбинации клавиш <Ctrl>+<0 и <Ctrl>+<V> соответственно, через главное или контекстное меню. Но они не всегда эквивалентны просто выделению мышью и вставке ее средней клавишей, особенно при переносе данных между разными окнами.

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

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

Разумеется, использование терминала не ограничивается целями обмена данных. При необходимости обращения к программам текстового режима обычно проще вызвать терминал, чем переходить в виртуальную текстовую консоль. Кроме того, терминал позволяет запускать любые программы графического режима. Иногда, при использовании всякого рода параметров, это просто необходимость. Пример чему будет показан при рассказе о StarOffice, реализация ряда функций которого в русифицированной версии возможна только при запуске из командной строки с довольно сложными параметрами.

И, наконец, запуск из командной строки терминала — самый разумный способ для только что установленной программы: если сна не загрузится, по крайней мере, можно будет прочитать сообщение об ошибках и, возможно, даже определить их (ошибок) причину.

На этом я закончу разговор о командной строке. Если мне удалось убедить вас в полезности этого инструмента, можно обратиться к вышеупомянутой книге Кернигана и Пайка. Или к любой толстой книге про Linux. И даже — про Unix вообще. При этом особенно не смущаясь годом издания: ни одна из них не будет безнадежно устаревшей.

GNU OCXE GNU LINUX
Hosted by uCoz