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

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

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

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

Рабочий стол

Первое, что стоит сделать, начав постоянно использовать Linux -- организовать для себя удобное "рабочее место": подобрать и настроить программы, с которыми приходится работать каждый день. Рабочее место в Linux может выглядеть очень по-разному. Можно вовсе обойтись без графического интерфейса, используя только текстовый терминал для управления системой. Такой выбор будет правильным, если рабочее место находится на сервере, подключённом к сети Internet, доступ к которому осуществляется только при помощи ssh или аналогичных клиентов удалённого доступа. Впрочем, некоторые пользователи предпочитают работать в текстовом интерфейсе по эстетическим, а не прагматическим соображениям.

Если графический интерфейс используется, то и в этом случае есть огромный выбор, как его организовать, прежде всего, нужно решить, нужно ли организовывать "рабочий стол" (для этого подходят GNOME, KDE, XFCE) или можно обойтись возможностями одного из развитых диспетчеров окон (Enlightenment, FVWM2, WindowMaker и многие другие). Помимо функциональности, в выборе графической среды решающее значение могут сыграть и эстетические критерии. Дальше всех в этом направлении продвинулась среда Enlightenment, работа с которой в некоторых вариантах настройки количеством украшений и эффектов напоминает участие в компьютерной игре (скорее всего, сетевой).

Эмулятор терминала

Даже для такой на первый взгляд тривиальной функции, как эмуляция терминала для X Window System, существует целый круг программ. Самая стандартная из них поставляется вместе с X.Org -- xterm. Вариант xterm, поддерживающий отображение шрифтов в кодировке UNICODE, вызывается командой uxterm. Однако каждое приложение, организующее среду рабочего стола, включает собственный эмулятор терминала, внешний вид и поведение которого настраивается централизованно вместе со всеми остальными приложениями рабочего стола. Есть и другие эмуляторы терминала, не связанные с конкретным рабочим столом, к таким относится 9term, повторяющий возможности "окна" системы Plan9, rxvt -- очень нетребовательный к ресурсам эмулятор терминала, или его потомки, наподобие aterm.

Большое количество терминальных окон на рабочем столе может образоваться даже если раскладывать их по разным виртуальным экранам. Некоторые версии xterm (например, konsole), позволяют открывать окна "стопками", переключаясь между ними с помощью "закладок", как в записной книжке. Если основная работа происходит на удалённом компьютере, и каждый xterm соответствует сеансу удалённой работы, можно пойти и другим путём. Устанавливается одно соединение с удалённым компьютером, а там запускается эмулятор терминала screen. Эта программа не взаимодействует с графической средой. Она просто открывает требуемое число псевдотерминалов, и в каждом из них запускает по командному интерпретатору. Ввод со стандартного ввода попадает на тот псевдотерминал ("экран"), который screen считает "видимым", а вывод происходит на всех экранах независимо. С помощью управляющего символа "^A" этой утилите подаются команды -- переключиться на следующий экран ("^A^N", при этом пользователь увидит то, что на этот экран выводилось), открыть новый ("^A^C") и т. п.

Типичное применение screen -- в одном окне запущен текстовый редактор, в другом -- командная строка. Удобство дополняется тем, что от работающего screen можно "отсоединиться" ("^A^D"), при этом пользователь может прервать терминальный сеанс и пойти спать, а интерпретатор командной строки и редактор будут работать на удалённом компьютере, как ни в чём не бывало (но, конечно, не будут проявлять никакой активности). Когда пользователь вернётся, он вновь присоединится к удалённой машине и "подключится" к работающему screen (команда screen -R), и продолжит работать с редактором и командной строкой.

Диспетчеры файлов

Все изменения в файловой системе Мефодий привык производить с помощью стандартных утилит командной строки и находит это весьма удобным. Однако многие пользователи привыкли оперировать с файлами и каталогами как с наглядными штучными объектами (папками и документами), они могут выбрать для себя программу, которая позволяет наглядно и поштучно работать с объектами файловой системы -- диспетчер файлов (file manager). Поскольку представление файлов и каталогов как папок и документов нужно в первую очередь в рамках метафоры рабочего стола, то и диспетчеры файлов для Linux разрабатываются в первую очередь как приложения той или иной среды рабочего стола. В частности, и в KDE, и в GNOME есть свои диспетчеры файлов -- konquеror и nautilus соответственно, которые по совместительству служат www-броузерами. Такое совмещение функций вполне логично, поскольку в среде рабочего стола нужно представлять доступные локальные и удалённые ресурсы как единое пространство, наполненное объектами, которыми можно манипулировать, можно "открывать", т. е. запускать соответствующее приложение для просмотра и/или редактирования.

Для многих пользователей наиболее удобный способ работы с файловой системой -- "классический" двухпанельный диспетчер файлов, работающий в текстовом режиме (в терминале) -- Midnight Commander (название утилиты -- mc)(1). Его функциональность также шире просто операций с файлами -- он позволяет открывать файлы для просмотра и редактирования, вызывать вспомогательные программы для работы с архивами (и даже "заходить" в архивы, как в каталоги), передавать данные по сети и т. п. Midnight Commander имеет также неплохой встроенный текстовый редактор, опять-таки "классического" стиля.

Восторг, охвативший Мефодия при виде старых добрых синих панелек, довольно быстро угас. Далеко не всё, что нужно делать в Linux, в среде mc так же удобно, как и в полноценной командной строке. Кроме того, при работе с графическими файлами сильно не хватает представления этих файлов в виде миниатюр (thumbnails), чтобы выбирать среди них по содержимому, а не только по имени. Такими возможностями обладают многочисленные графические диспетчеры файлов; помимо тех, что включены в среды KDE и GNOMe, есть множество независимых: dfm (похожий на диспетчер файлов OS/2), emelFM2, EZFM и X Northern Captain (двухпанельные, причём автор последнего -- наш человек из Дубны), gentoo и worker (двухпанельные, в стиле диспетчера файлов DirectoryOpus из AmigaOS), FSV и XCruiser (трёхмерные! причём последний похож скорее на космический симулятор). Среди них встречаются и ориентированные специально на просмотр изображений, такие как GQView, endeavour, gview, qiv, xzgv и некоторые другие, -- с возможностями слайд-шоу, автоматического изменения размера, показа картинки на полный экран и т. п.

Сеть

WWW-броузеры

WWW-броузер -- программа для просмотра гипертекста, доступного через Internet -- на сегодня чуть ли не самое важное приложение для персонального компьютера. Сегодняшний www-броузер должен "уметь" гораздо больше, чем просто отображать страницы HTML и переходить по гиперссылкам. Фактически, на него ложится задача работы данными Internet во всём их многообразии, сюда входит и поддержка постоянно развивающихся стандартов, и обеспечение безопасности, и многое другое.

p В Linux есть довольно большой выбор www-броузеров, однако первым действительно современным свободным приложением для работы с Internet во всём его многообразии стал программный продукт Mozilla Suite. Наименование "Mozilla" вскоре отошло компании разработчику Mozilla Corporation и всей линейке программных продуктов, разрабатываемых в ней. Наследник Mozilla Suite -- Mozilla Seamonkey -- до сих пор вполне успешно конкурирует с аналогичными коммерческими программами, несмотря на затрудняющую успешное развитие идеологию "три в одном". Seamonkey -- пакет приложений для работы с Интернетом. Это мощный, насыщенный функциями коммуникационный центр для персонального компьютера. В состав пакета входит броузер, программа для работы с электронной почтой и редактор www-страниц. История Mozilla началась в 1998 году, когда фирма Netscape опубликовала исходные тексты своего броузера Netscape Navigator.

Одно из важных свойств программных продуктов Mozilla -- их принципиальная расширяемость. Программная часть расширений выполняется на языке Java Script, а интерфейсная -- на специально разработанном языке описания интерфейсов XUL. Такое расширение будет работать в любой операционной системе и на любой архитектуре компьютера, лишь бы версия "движка" Mozilla была не слишком старой.

Более современен Firefox, разрабатываемый командой Mozilla на основе исходных кодов, соответствующих только WWW-броузеру. Остальная часть FireFox написана полностью на XUL, поэтому разработка этой программы идёт существенно бодрее и проще, её настройка считается самой гибкой среди www-броузеров, а главное, любой желающий может написать на высокоуровневых языках программирования XUL/JavaScript и опубликовать свой модуль расширения (т. н. add-on). Ко времени выхода Firefox версии 3.0 таких расширений известно более пяти тысяч. По сути, Mozilla FireFox -- однопользовательская операционная система, со своим хранилищем ПО, правилами установки, политикой безопасности и т. п.

О www-броузерах, разработанных специально для той или иной среды рабочего стола уже шла речь выше (они, вдобавок, превосходно справляются с ролью файловых диспетчеров). Важная разновидность www-броузеров -- текстовые броузеры, т. е. те, которые могут быть запущены в любом текстовом терминале Linux. Самый старый и известный из них, один из прототипов современных www-броузеров -- Lynx. Он не имеет возможности отображать графическую информацию, но отлично поддерживает HTML, формы и таблицы. Современные версии поддерживают также соединения, защищённые при помощи SSL. Links -- это текстовый броузер, на первый взгляд очень похожий на Lynx, но все же несколько отличающийся от него:

Помимо возможности просмотра WWW-страниц часто выпадает необходимость их "скачивания", т. е. записи в файл. Это же относится и к ресурсам, доступным по протоколу FTP. Все описанные выше броузеры способны записывать HTTP- и FTP-ресурс в файл. Имеются несколько расширений для FireFox, добавляющие очень ценные возможности (параллельное скачивание, скачивание по частям, расписание и т. п.). Для работы в командной строке, кроме старой и весьма простой утилиты ftp, имеются два её мощных "наследника": lftp и wget. Обе утилиты поддерживают как FTP, так и HTTP, причём lftp может работать, как и ftp, в режиме "оболочки". Если при получении файлов с какого-то сервера или группы серверов необходимо описывать множество исключений (чтобы не скачать лишнего), выполнять какие-то действия (например, заполнять формы или выполнять java-сценарии), можно воспользоваться более сложными программами pavuk или httrack.

Почтовые программы

Подобно тому, как Firefox возрождает WWW-ипостась Mozilla, Thunderbird повторяет -- и расширяет -- почтовую составляющую Mozilla. Большинство сказанного о Thunderbird на сегодня справедливо и для MozillaMail. Так же, как и в Firefox, в Thunderbird используется часть исходного кода Mozilla, которая работает с сетью (на этот раз -- с отсылкой почты и доступом к почтовым ящикам), а интерфейс и архитектура приложения в целом -- переделаны для того, чтобы избавиться от стародавних частей Netscape и облегчить дальнейшую разработку. Thunderbird (как и MozillaMail) обладает самым мощным на сегодняшний день встроенным антиспам-фильтром. Если непрошеная почта всё-таки попадает в ваш почтовый ящик, просто показывайте её Thunderbird со словами "это -- спам!". Через некоторое время программа сама научится отличать непрошеную почту от полезной. Как и Firefox, Thunderbird легко расширять собственными модулями, написанными на высокоуровневых языках и можно очень гибко настраивать.

Ещё один почтовый клиент, несколько уступающий Thunderbird по возможностям, но превосходящий его по быстродействию, называется Sylpheed. Интерфейс этой программы весьма похож на стандартную почтовую программу для Windows, Outlook Express, что может помочь избежать лишних хлопот при смене операционной системы. Автор этой программы, Хироюки Ямамото, человек аккуратный и пунктуальный, так что некоторый недостаток возможностей (эта программа умеет столько же, сколько и Outlook Express) компенсируется безотказной работой. Отпочковавшийся от Sylpheed проект Claws Mail имеет больше возможностей и снабжён собственной системой создания дополнений. Дополнения Claws позволяют гибко интегрировать его с другими утилитами системы (антивирусом, антиспам-фильтром и т. п.), встраивать в структуру рабочего стола и изменять внешний вид.

Поскольку управление электронной перепиской -- одна из задач рабочего стола, в каждой среде рабочего стола есть свой собственный почтовый клиент. Почтовый клиент для KDE называется KMail, он поддерживает как локальную доставку почты, так и множество почтовых протоколов (POP3, IMAP, SMTP). Почтовый клиент для GNOME называется Evolution. Эти программы интегрированы с другими приложениями, работающими с личными данными (т. н. PIM): календарём, адресной книгой и т. п.

Электронная переписка сама по себе не требует графического интерфейса, для чтения и написания электронных писем вполне достаточно возможностей терминала и текстового редактора. Среди текстовых почтовых клиентов для Linux наиболее известны Mutt и Pine, оба очень функциональны, поддерживают множество протоколов и форматов почтовых ящиков, хорошо настраиваются. Требовательным пользователям, которые хотят иметь возможность изменять внешний вид и способ работы почтового клиента, дополнять его сценариями и получать от почтовых служб всё, что те могут дать, рекомендуется Mutt. Тем же, кому главное -- просто получать, читать и отправлять почту (со всеми полагающимися удобствами), стоит начать с Pine. Любители Emacs используют встроенный в него модуль GNUS, весьма богатый функциями.

Обмен сообщениями

Если компьютер подключён к Internet постоянно, бывает удобно пользоваться службами, передающими сообщения в реальном времени (instant messaging service). Таких служб довольно много, самая популярная из них -- ICQ. Множественность объясняется тем, что в большинстве случаев этот сервис предоставляется централизованно, какой-нибудь крупной корпорацией. Во многих случаях серверы этих служб не доступны под свободной лицензией. Исключение в ряду "собственников" -- служба Jabber, основанная на полностью открытом протоколе XMPP. Jabber позволяет любому сообществу создавать собственные сервера, управляемые собственными администраторами. Сам Jabber-сервер имеет возможность соединять своих клиентов не только с другими Jabber-серверами, но и со службами ICQ, MSN, Yahoo и AIM. В Linux есть несколько клиентских программ для обмена мгновенными сообщениями. Особняком стоят клиенты IRC (Internet Relay Chat), службы с более долгой историей и сложным протоколом (имеется в виду и сетевой протокол, и протокол работы пользователя в IRC).

Psi -- удобный графический клиент сети быстрого обмена сообщениями Jabber (а значит, по всем протоколам, которые поддерживает выбранный Jabber-сервер). Psi поддерживает такие возможности Jabber, как одновременная работа с несколькими серверами, конференции, криптозащиту передаваемой информации (через SSL и GnuPG), работу через HTTP (S) прокси-сервер и т. д. SIM -- многопротокольный клиент обмена мгновенными сообщениями. Поддерживаются протоколы ICQ, Jabber, MSN, AIM, YIM, а также LiveJournal. Кроме того, имеется множество модулей, реализующих дополнительные возможности. Есть вариант SIM, ориентированный на среду KDE. "Прицельно" на среду KDE ориентирован и другой мощный клиент, имеющий поддержку также и IRC, -- Kopete. На среду Gnome ориентирован Gaim -- наиболее мощный и наиболее гибко настраиваемый клиент. Имеет модули доступа почти ко всем мыслимым протоколам, позволяет писать сценарии на Perl и TCL. Для IRC есть и специальные клиенты: ChatZilla (как можно догадаться из названия, он "встроен" в Mozilla, но доступен и как дополнение к Firefox) или X-Chat -- весьма мощная программа, ориентированная на "хитрости" IRC.


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


Не обойдён стороной и интерфейс текстовой консоли: CenterICQ, поддерживающий несколько протоколов (среди них Jabber и IRC); licq, обладающий как текстовым, так и графическим интерфейсами (следовательно, им можно пользоваться и находясь за рабочей станцией, и дистанционно); irssi, нацеленный на службы типа IRC (на сегодняшний день поддерживаются IRC, SILC и ICB), и т. д.

Офисные программы

Важной частью современной рабочей станции являются так называемые офисные средства обработки информации. Под офисными приложениями обычно понимают стандартный набор из словарного процессора, средства работы с электронными таблицами, средства создания презентаций, средства для работы с базами данных. Все перечисленные офисные приложения входят в пакет OpenOffice.org -- свободный набор офисных программ, не уступающий по возможностям несвободному Microsoft Office, а кое в чём даже превосходящий его. Например, частность, которая может иметь очень важное значение: компонент OpenOffice.org Writer позволяет экспортировать документы непосредственно в формат PDF. Интерфейс OpenOffice.org устроен принципиально так же, как и у аналогичных продуктов Microsoft, так что пользователю, привыкшему к Microsoft Office, не составит большого труда перейти к работе в OpenOffice.org. Кроме того, OpenOffice.org позволяет работать со всеми форматами файлов Microsoft Office.

История OpenOffice.org напоминает историю Mozilla: поначалу проект (под именем StarOffice) развивался закрыто, без доступа мирового программистского сообщества к исходным текстам. Однако в 2000-м году компания Sun Microsystems открыла исходные тексты программного продукта, образовав OpenOffice.org. Так же, как и в случае Netscape/Mozilla, пара StarOffice/OpenOffice.org использует двойное лицензирование, дающее право как свободного доступа к исходным текстам, так и использования их в закрытых коммерческих продуктах.

По возможностям OpenOffice.org остаётся самым развитым и полным офисным пакетом для Linux, однако есть и другие офисные средства. В частности, офисный пакет Koffice, ориентированный на среду KDE, в котором есть примерно тот же набор офисных приложений, что и в OpenOffice.org. Кроме того, есть отдельные офисные приложения, не составляющие пакетов -- словарный процессор Abiword и электронные таблицы GNUmeric.

Графика

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

Векторная графика

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

Работа с PostScript и PDF

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

PDF (Portable Document Format, переносимый формат документов) -- модификация языка PostScript, разработанная для того, чтобы обмениваться полиграфическими документами через Internet. В PDF есть специальные возможности для публикации документов в Сети, в частности, поддержка гиперссылок, а некоторые возможности языка PostScript оттуда, наоборот, исключены.

Ghostscript -- интерпретатор языка описания страниц PostScript и файлов в формате PDF (формат переносимых документов). Ghostscript преобразует PostScript во многие растровые форматы, подходящие для вывода данных на экран или на принтер, не поддерживающий PostScript. Обычно Ghostscript используется для просмотра файлов PostScript и для печати на принтерах, не поддерживающих язык PostScript, GhostScript используется множеством приложений для вывода данных на печать. Графический интерфейс для GhostScript предоставляет программа GhostView (команда gv), она позволяет отображать документы в форматах PostScript и PDF в графической среде X Window System. Для различных манипуляций с файлами в формате PostScript предназначен пакет утилит командной строки psutils, с их помощью можно выбрать, переупорядочивать, масштабировать страницы в PostScript-файлах, изменять параметры текста и делать многое другое.

Специально для просмотра PDF-файлов предназначена программа xpdf, она позволяет переходить по гиперссылкам в документе, просматривать структуру документа, производить поиск и поддерживает сглаживание шрифтов. Для KDE и GNOME имеются свои аналоги: kpdf и evince. Альтернативой им может быть Acroread -- версия известного приложения Adobe Acrobat Reader для Linux, которое, однако, является несвободным программным продуктом.

Диаграммы

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

Самая старая из подобных утилит, xfig, и по сей день активно используется, формат её диаграмм распознают многие средства работы с векторной графикой. Более мощной является ориентированная на среду Gnome утилита Dia, возможности которой продолжают расти (есть даже проект перевода диаграмм в нотации языка моделирования программных продуктов UML непосредственно в текст на C++). Аналогом Dia для KDE является встроенная в пакет KOffice утилита Kivio.

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

Плакатная графика

Что же касается собственно векторной (плакатной) графики, то и здесь есть из чего выбирать. Например, Inkscape -- программа векторного рисования общего назначения, реализующая стандарт W3C SVG. Применяется новейшее программное ядро для отображения, со сглаживанием, альфа-каналом и векторными шрифтами. Ещё мощнее -- Xara Xtreme, продукт, также сменивший лицензию на свободную; помимо прочего, он умеет импортировать файлы в некоторых несвободных форматах. Подаёт надежды также и проект SK1, под эгидой которого, в частности, разрабатывает универсальный преобразователь векторных файлов в свободных и несвободных форматах uniconvertor.

Растровая графика

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

В GNU/Linux есть развитые средства для редактирования растровой графики. Самым мощным из них является GIMP (GNU Image Manipulation Program). С её помощью пользователь сможет редактировать изображения, создавать логотипы и другие графические элементы особенно полезные при создании Web-страниц. GIMP включает много инструментов и фильтров, аналогичных тем, которые можно найти в коммерческих графических редакторах, а также несколько возможностей, эксклюзивных для этой программы. GIMP предоставляет возможность работать с цветовыми каналами, уровнями изображения, накладывать эффекты, сглаживать шрифты и конвертировать изображения в разные форматы. В GIMP имеется собственный язык программирования сценариев (на основе Scheme), на котором можно создавать довольно замысловатые дополнения к основной программе.

Очень полезен набор утилит для обработки графики из командной строки -- ImageMagick. В этот набор входят утилиты для отображения (display), преобразования (convert) изображений, захвата изображений с экрана (import) и даже собственный интерпретируемый язык программирования, Magick Scripting Language. Для полуавтоматического перевода из растрового представления в векторное существует несколько специальных утилит, например, autotrace/autofig или potrace.

Трёхмерная графика

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

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

Для выполнения задач, совмещаемых Blender, есть и отдельные программные средства. Например, популярный пакет трассировки лучей (трёхмерного проектирования и сценографии) POV-Ray, с помощью которого создаются проекты удивительной сложности и красоты (например, перевод картины Уильяма Марлоу "Каприччо" в трёхмерное представление -- с тем только, чтобы из определённой точки повторить её). Многие графические редакторы имеют встроенные средства анимации, а иные (как, например, CinePaint, называвшийся ранее FilmGimp) специально разрабатываются для мультипликаторов.

Не стоит забывать, что популярный нынче стандарт OpenGL -- открытый; он разрабатывался для UNIX-подобных систем и используется большим числом программ для Linux (в том числе и Blender). К сожалению, производители аппаратного обеспечения (видеокарт), как правило, скрывают не только устройство своих карт, но даже и способ их низкоуровнего использования. Поэтому в открытом доступе оказываются лишь готовые драйверы (без исходных текстов) к некоторым версиям ядра Linux и определённым сборкам XFree86. Отображение трёхмерных объектов с пересчётом на программном уровне пока работает существенно медленнее, хотя ничуть не хуже, поэтому используя OpenGL для игр и прочих программ, требующих действительно быстрой работы графической подсистемы, нужно всегда помнить о необходимости получить -- возможно, несвободный -- драйвер.

Мультимедиа

Музыкальные шкатулки

Программ-проигрывателей звуковых файлов в Linux не перечесть. Очевидный лидер по популярности среди них -- XMMS (X Multi Media System) -- стремительно сдаёт позиции, сказывается слишком жёсткая привязка к устаревшей интерфейсной библиотеке. У XMMS много "наследников" -- XMMS2, BMPx, Audacious. Помимо основной функции -- играть музыку (поддерживается множество форматов) -- в каждой из них реализовано немало звуковых и визуальных эффектов благодаря большому количеству расширений. Интерфейс этих программ аналогичен интерфейсу не менее популярного в системах Windows приложения WinAMP (как правило, они умеют использовать "шкурки" WinAMP2). Обычно каждая среда рабочего стола реализует собственный проигрыватель звуковых файлов, хотя бы для того, чтобы воспроизводить собственные звуковые эффекты, связанные с различными системными событиями, однако с их помощью прослушивать файлы может и пользователь.

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

Очевидно, что для прослушивания звука совсем не обязательно использовать графический интерфейс, поэтому в Linux есть большое количество терминальных утилит для воспроизведения звука. Некоторые из них, например, mpg123, mpg321, ogg123 или splay, предназначены для проигрывания оцифрованного звука (возможно, в сжатых форматах), другие, такие как lazy или cd-console, управляют музыкальными лазерными дисками, есть утилиты, играющие музыку в нотном (midi) и других форматах -- timidity (она отличается тем, что преобразует ноты, записанные для инструментов в оцифрованное звучание этих инструментов, а значит, не требует MIDI-устройства), mikmod (распознаёт множество форматов: MOD, STM, S3M, XM и т.д.), sidplay и прочие. Чтобы пользователь не запутался, специальные оболочки, например mpfc или cplay, предоставляют общий интерфейс ко всем консольным проигрывателям.

Музыкальные редакторы

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

Нотные редакторы

В операционных системах, основанных на GNU/Linux, также присутствуют мощные программы для редактирования музыки и звука. Пожалуй, самым известным из них является Rosegarden. Программа изначально разрабатывалась для профессиональных мультимедиа-станций от Silicon Graphics и работала на операционной системе IRIX, потом она была перенесена на Linux, а исходные тексты программы были открыты. Сегодня Rosegarden представляет из себя развитый MIDI- и аудиосеквенцер, нотный редактор, а также редактор общего назначения для сочинения и редактирования музыки. Он прост в изучении и идеально подходит для композиторов, музыкантов или студентов музыкальных специальностей, работающих в маленькой студии или записывающихся дома.

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

MusE -- это MIDI-секвенсер в стиле Cubase/Logic Audio, поддерживающий ввод MIDI-событий с клавиатуры и последующее их редактирование в нотном редакторе, матричном редакторе, редакторе списка событий и редакторе ударных инструментов.

Редакторы и фильтры оцифрованного звука

Популярный свободный редактор звука -- это Audacity. Он умеет записывать звук сразу в форматы WAV, AIFF, AU, IRCAM или MP3. В нём есть всевозможные инструменты для редактирования записанного звука, в том числе встроенный редактор амплитуды, настраиваемый режим отображения спектрограммы и средства частотного анализа звуковых дорожек. Встроенные простейшие аудиоэффекты включают усиление баса, WahWah, удаление шума и т.д. Audacity поддерживает модульные дополнения, в которых обычно поставляются более сложные аудиоэффекты. В список поддерживаемых форматов модулей входят VST, LADSPA и Nyquist.

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

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

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

Основные форматы с потерей качества -- это MP3 (с ним работают упаковщики lame/toolame, bladeenc) и OGG Vorbis (утилита oggenc). Эти форматы (особенно OGG) хорошо подходят для упаковки качественной музыки. Файлы в формате OGG, упакованные семикратно (192 kbp/s), почти неотличимы на слух от исходных. Если необходимо сжать звук с ощутимой потерей качества (но без потери членораздельности и раз в двадцать), можно использовать другие форматы -- gsm, aiff, adpcm, speex (сжатие речи) или bonk. Последний формат -- нестандартный, он поддерживается одноимённой утилитой и отличается большой гибкостью, так как может работать и в режиме "сжатие без потерь". Для сжатия без потерь разработан специальный формат -- FLAC, его распознают многие программы (в том числе и утилиты от авторов этого формата -- flac и metaflac) и даже аудиоустройства.

Видеопроигрыватели

Весьма мощным видеопроигрывателем для Linux является запускаемая из командной строки программ mplayer. Проект MPlayer "носит с собой" несколько библиотек, позволяющих использовать для декодирования видео несвободные кодеки, в том числе оформленные как динамические библиотеки Windows. Кроме того, mplayer-ом можно управлять из специально созданных графических оболочек, таких, как smplayer. Очень неплох видеопроигрыватель Kaffeine, встроенный в KDE. Он пользуется ещё одним видео-"движком", Xine, у которого есть также и собственный графический интерфейс. Активно развивается VLC (Video Lan Client), изначально предназначавшийся для просмотра сетевого потокового вещания. VLC интересен ещё и тем, что может выступать "ретранслятором" видеопотока (направляя его нескольким пользователям), и имеет, в числе прочих, HTTP-интерфейс, что позволяет управлять им с удалённого компьютера посредством броузера. Все эти программы поддерживают как свободные, так и множество несвободных видео- и аудиоформатов, таких, как OGG, MPEG, DivX/XviD, DVD, формат контейнера VMW и др.

Существует даже программный продукт MythTV, превращающий компьютер в полноценный мультимедийный центр, с телевидением, радио, проигрыванием и показом дисков и управлением с помощью дистанционного пульта. Что касается аппаратных видеоустройств (вроде платы видеозахвата или камеры), на низком уровне с ними взаимодействует комплект программ Video4Linux (v4l), предоставляя проигрывателям уровня vlc унифицированный программный интерфейс.

Видеоредакторы и конвертеры

В Linux есть выбор средств для преобразования и обработки видео.

GStreamer представляет собой библиотеку для обработки медиапотоков, основанное на идее объединённых в графы фильтров, обрабатывающих медиаданные. Приложения, использующие эту библиотеку, смогут производить любую обработку медиаданных от обработки звука до проигрывания видео. Модульная архитектура позволяет реализовать поддержку любого нового формата данных, просто установив соответствующее расширение.

Kino -- это нелинейный редактор цифрового видео (DV) для GNU/Linux. Он хорошо интегрирован с IEEE 1394 и позволяет захватывать изображение, управлять VTR, и записывать на камеру. Этот редактор записывает видео на диск в формате AVI в кодировках type-1 DV и type-2 DV.

Другими примерами редакторов цифрового видео являются Cinelerra (полнофункциональная система нелинейного видеомонтажа и аудиопроцессинга) и PiTiVi (видеоредактор попроще).

Существуют терминальные утилиты для обработки видеопотока, например, пакет transcode. Кодирование и декодирование видеопотока осуществляется с помощью загружаемых модулей. Также поддерживается загрузка внешних фильтров. В число модулей входят: модули импортирования из DVD, элементарных MPEG (ES) и программных потоков (VOB), видео в формате MPEG, цифрового видео (DV), потоков YUV4MPEG, поддержка формата файлов NuppelVideo и необработанных потоков видео; модули для записи DivX;-), OpenDivX, DivX 4.xx или несжатых файлов AVI с MPEG, звука в форматах AC3 или PCM; дополнительные модули для записи отдельных кадров (PPM) или потоков YUV4MPEG. Пакет transcode содержит набор утилит для демультиплексировани (tcdemux), выделения (tcextract) и декодирования (tcdecode) видеопотока, исследования (tcprobe) и сканирования (tcscan) ваших файлов и пост-обработки файлов AVI, изменения заголовков файлов AVI (avifix), соединения нескольких файлов в один (avimerge) или разделения большого файла на несколько AVI-файлов меньшего размера (avisplit) для размещения на CD.

Ffmpeg -- это "сверхзвуковой" кодировщик/декодировщик видео и звука, работающий в режиме реального времени, а также потоковый сервер и преобразователь различных звуковых и видеоформатов. Ffmpeg умеет захватывать видеосигнал из источника Video4Linux и преобразовывать его в файлы различных форматов на основе компенсирующего кодирования DCT/motion. Звук при этом сжимается по алгоритму MPEG-2 или алгоритму, совместимому с AC3.

Запись CD и DVD

Для записи дисков и сопровождающих запись задач в Linux есть как минимум два приложения с графическим интерфейсом: входящее в комплект приложений для KDE k3b и написанное на GTK xcdroast. Фактически, оба этих приложения -- это графические оболочки над терминальными утилитами для записи CD и DVD, в первую очередь cdrecord и cdrdao, которыми можно пользоваться и непосредственно из командной оболочки. cdrecord -- утилита для записи дисков с цифровыми данными, в нём реализована полная поддержка аудио-, смешанных, мультисессионных и CD+ дисков. cdrdao -- программа записи аудиодисков в одну сессию позволяет управлять областями в начале дорожек данных (длиной до 0, ненулевые аудиоданные) и, например, международными стандартными кодами записи. Все данные, которые будут записаны на диск, должны быть описаны в текстовом файле. Аудиоданные могут быть в форматах WAVE или raw.

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

Издательские системы

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

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

LyX -- это современных подход к написанию документов, разрывающий с устаревшей парадигмой использования компьютеров как пишущих машинок, применяемой в большинстве других систем подготовки документов. Он разработан для тех, кто хочет получить профессиональное качество документа при печати, не тратя при этом много времени и усилий, и не становясь специалистом по полиграфическому оформлению. Основное новшество в LyX -- это WYSIWYM (What You See Is What You Mean -- Вы видите то, что вы имели в виду), которое означает, что автор сосредотачивается над своей работой, а не над деталями оформления документа. Это позволяет продуктивно работать, оставляя заключительное оформление специальному движку (такому как LaTeX), который специально разработан для подобных задач. С LyX автор может сконцентрироваться на содержании своей работы и позволить компьютеру взять большинство забот об оформлении на себя.

В Linux есть по крайней мере одна программа для визуальной подготовки оригинал-макетов, аналогичная издательским системам Adobe PageMaker, QuarkXPress и подобным -- Scribus. Возможности его могут быть более ограничены, чем у перечисленных коммерческих аналогов с сегодняшнем их виде, однако он распространяется свободно и в настоящее время активно разрабатывается.

Нельзя объять необъятного

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

Напоследок повторим: главной целью приведённого обзора приложений для Linux было показать, что приложения есть и их много, нужно только достаточно внимательно искать -- и нужное обязательно найдётся. Мефодию для поиска доступен очень удобный инструмент, описанный в лекции Управление пакетами, менеджер пакетов APT и команда apt-cache search. Поскольку в современные дистрибутивы Linux входят тысячи пакетов, почти наверняка среди них найдётся нужное приложение. Кроме того, любому пользователю Internet доступен поисковый сайт http://google.com, наиболее подходящий для поиска чего бы то ни было, а для поиска существующих приложений для Linux можно воспользоваться специализированными сайтами -- http://rpmfind.net, http://freshmeat.net, http://rpm.pbone.net или сайтом, посвящённым выбранному дистрибутиву.

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


(1) Пользователи, знакомые с MS-DOS, вспомнят Norton Commander, а пользователи помоложе -- Far Manager.

Books/LinuxIntro/17ChapterApplication (последним исправлял пользователь eSyr 2009-09-23 09:25:26)