Сага о среде обитания -
графических средах, оконных менеджерах и немного о камандной строке


Linux RSP Web Site


Содержание


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

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

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

Об Xwindow


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

Меню стартовой кнопки K - многоуровневое иерархическое, построенное сходно со стартовым меню Windows. В главных его пунктах сгруппированы программы различного назначения:

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

В меню кнопки K включены также пункты вызова:

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

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

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

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

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

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

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

Контекстное меню, вызываемое по щелчку правой клавишей непосредственно на рабочем столе, содержит пункты:

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

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

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

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

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

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

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

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

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

В общем, возможности настройки 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://logic.ru. Они собраны в виде бинарных пакетов (*.rpm) так, чтобы мирно сосуществовать с KDE 1. А прилагаемые файлы README содержат исчерпывающие сведения о порядке установки библиотек, базовых компонентов и приложений.

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

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

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

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

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

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

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

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

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

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

Запуск приложений в KDE2, как и в предыдущей версии, осуществляется различными способами:

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

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

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

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

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


XFce (The Cholesterol Free Desktop Environment, что применительно к случаю я перевел бы как Настольная Среда для Холериков) - также интегрированная (то есть содержащая специфичные для нее приложения и утилиты) графическая среда со своим собственным оконным менеджером, основанная на библиотеке Gtk. Текущая ее версия - 3.3.6, найти ее можно на 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 или с панели кнопок.

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

Здесь можно определить:

Выбор фона производится с помощью штатного средства (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, но это - отдельная история) не дошло до зрелости и стабильности ghприложений KDE. Да и сам GNOME, как интегрированная среда, уступает KDE и в функциональности, и в устойчивости, несущественно превосходя его по быстродействию.

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

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

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


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

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

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

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

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

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

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

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

Для запуска приложений, кроме кнопок на панели и стандартного терминала (кнопка для запуска xterm по умолчанию включена в панель), используется также контекстное меню рабочего стола. Для чего в нем присутствует пункт Run (аналог минитерминала KDE). Кнопки вверху справа оказались чем-то вроде панели запуска приложений. Осуществляемого двойным щелчком левой клавишей мыши или из выпадающего по одинарному щелчку правой клавишей меню (пункт "Запуск").

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

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

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

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

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

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

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

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

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

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

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

Дополнительные настройки внешнего вида Window Maker можно выполнить из всплывающего меню Applications (подменю Appearance, а не Workspaces, как можно было бы ожидать). Здесь можно определить:

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

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

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

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

	DisableClip = YES;
	DisableDock = YES;

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

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

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

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

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

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

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


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

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

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

Стартовое меню содержит следующие пункты:

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

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

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

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

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

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

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

     
	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 (где задаются цвета, бордюры и прочее) и множество графических файлов для интерфейсных элементов. Все это соврешенно элементарно поддается ручному редактированию. В частности, не составляет труда изменить цвета любых элементов, шрифты и тому подобное. Можно также определить фоновое изображение, причем оно отнюдь не обязано быть в формате XPM.

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

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

Поскольку IceWM сочетает в себе:

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

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

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


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

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

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

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

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

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

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 в режиме любого обычного пользователя (не администратора). И она позволяет, не меняя никаких настроек, выбрать оконный менеджер для текущего сеанса работы в XFree.

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

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


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

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

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

Измерения производились в следующей конфигурации: P-III/533 (не Coppermine, 133Mhz шина, 512 Кбайт кэша), системная плата MSI-6163 (Intel BX), 128 Мбайт памяти (один модуль PC-133, неизвестного происхождения), Matrox G-400 c 16 Мбайт памяти, диск Quantum Fireball 8,4 Гбайт (ATA-66, 5400 об./с); прочие компоненты полагаю несущественными. Видеорежим - 1024*768 при 16-битном цвете.

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

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

Таблица. Сравнение быстродействия графических сред
Среда KDE 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-приложений. Все прочие среды следует считать практически равными по быстродействию. Хотя функционально они весьма различны: среди них представлены как весьма насыщенные опциями среды (WindowMaker и XFce, в меньшей степени IceWM), так и системы, обеспечивающие лишь базовые функции управления интерфейсными элементами (FLWM).

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

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

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


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

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

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

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

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

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

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

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

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

[alv@localhost alv]$

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

[root@localhost /root]#

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

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

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

echo $PATH

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

/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin   

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

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

PATH=$PATH

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

PATH=$PATH:$HOME/bin:.

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

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

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

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

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

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

cp -R $HOME /mnt/floppy

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

cat > file_1

где > - символ перенаправления, нажать Enter, ввести

Line 1

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

Line 2

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

cat file1

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

Line 1
Line 2

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

cat >> file1

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

Линия 3
Линия 4

и еще раз нажать Control+d. Теперь в ответ на команду

cat file1

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

Line 1
Line 2
Линия 3
Линия 4

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

cat  file1 file2 > file3

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

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

[alv@localhost test]$ ls > list1

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

[alv@localhost test]$ cat < list1
file1
file2
file3
list1

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

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

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

[alv@localhost test]$ cat < list2
list1
file3
file2
file1

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

cat file1 file2 file3 | lpr

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

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

ls > list | lpr

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

ls | sort -r | lpr

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

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

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

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

sort -r list1 > list2 &

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

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

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

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

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

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

Таких виртуальных консолей по умолчанию может быть создано до шести. Седьмая консоль (вызываемая комбинацией Alt+F7) зарезервирована для работы в графическом режиме. То есть, если на первой консоли был запущен X Window, можно использовать пять текстовых консолей. Следует только помнить, что переход из X Window в какую-либо текстовую консоль осуществляется комбинацией Alt+Control+Fn, где Fn - соответствующая нужной консоли функциональная клавиша. А возврат к графическому режиму - не клавишами Alt+F1 (там вы увидете невразумительные текстовые сообщения), а Alt+F7.

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

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

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

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

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

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

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

Copyleft by
Alex Fedorchuk
LinuxSaga