Московский Энергетический Институт

(Технический Университет)

 

 

 

 

 

 

 


Доклад по теме:

«KDE и GNOME»

 

 

Сидорова Н.А.

Группа А6-01

 

 

 

 

 

 

 

 

Москва

2005

Содержание

Определения. 3

История создания. 3

Принципы разработки. 3

Место KDE и GNOME в системе. 4

Основа KDE и GNOME.. 4

Qt 5

Пример Hello World. 6

Gtk. 6

Структура Gtk. 6

Пример Hello World. 7

Содержание KDE и GNOME.. 8

Заключение. 11

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Определения

GNOME (что расшифровывается как GNU Network Object Model Environment -- Сетевая Объектная Среда GNU), KDE (K Desktop Environment -- К-интегрированная рабочая среда) - это рабочие среды для Unix-подобных систем (Linux и др.). С точки зрения пользователя - это в первую очередь графический интерфейс, значительно облегчающий работу с Linux для начинающих пользователей. На самом же деле это набор программ, технологий и документации.

В основе этих сред лежат общие для открытых систем принципы масштабируемости, переносимости, открытости.

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

История создания

1)      История создания KDE

Проект стартовал в октябре 1996 года. Центральная команда разработчиков состоит из нескольких сотен человек. Первая версия KDE 1.0 вышла 12 июля 1998 года, её исходный код содержал приблизительно 800 000 строк кода (для сравнения ядро Linux версии 2.0.31 – около 600 000 строк). К выходу KDE 2.1 это число утроилось. В данный момент разрабатывается версия 3.5.

2)      История создания GNOME

Проект GNOME начался в августе 1997 Мигелем Иказа (Miguel de Icaza) и Федерико Мена (Federico Mena) как попытка создать альтернативу рабочего стола KDE с открытыми исходными кодами для ОС GNU/Linux. В тот момент KDE ещё не была полностью открытой, т.к. создавалась на основе библиотеки Qt фирмы Trolltech, которая не использовала свободную лицензию и была несовместима с лицензией GPL. Важное историческое событие – лицензирование Qt по GPL состоялось только 4 сентября 2000 года. На данный момент последняя версия GNOME 2.6.

Принципы разработки

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

Место KDE и GNOME в системе

Важно не путать просто оконный менеджер или действительно интегрированная среда (graphic environment), называемая также просто десктопом (desktop). Различия между ними очевидны: первый класс программ предоставляет пользователю возможность управления окнами - их открытия, закрытия, масштабирования, сворачивания, перемещения, переключения между открытыми окнами. В качестве дополнительных (обычно присутствующих в оконном менеджере, но отнюдь не обязательных) возможностей, могут иметь место: виртуальные рабочие столы и/или виртуальные разрешения оных, средства запуска приложений - иконки рабочего стола, треи, контекстные меню, строки минитерминала (то, что в KDE называется mini-cli), средства навигации по десктопам и окнам (типа панелей задач), различные дополнительные украшения - фоны, обои и так далее. А также - более или менее автоматизированные средства для конфигурирования всего этого. Однако, все, что выходит за рамки управления окнами, является сугубо опциональным и может отсутствовать в оконном менеджере, а настройка его вполне может осуществляться только прямым редактированием конфигурационного файла.

Рабочая среда, разумеется, включает в себя менеджер окон (window manager): собственные kwm в KDE, sawfish в GNOME, или привлеченные из дружественных (то есть совместимых оконных менеджеров). Понятно, что без управления окнами работа в оконной среде X попросту невозможна. Но тут уже виртуальные десктопы, средства запуска программ и навигации по ним - всякого рода панели, стартовые и контекстные меню, пиктограммы, наборы тем и прочие красивости становятся непременными атрибутами. Плюс - более или менее обширный набор интегрированных в десктоп приложений (почему он и называется интегрированной средой), как минимум - терминал, текстовый редактор, файловый менеджер, браузер и др. Ну и обязательным компонентом десктопа (без чего он не заслуживал бы этого наименования) - средства сквозного конфигурирования его самого и его приложений.

Основа KDE и GNOME

Рабочие среды KDE и GNOME основаны на библиотеках Qt и Gtk+ соответственно.

 

 

Qt

Норвежская компания Trolltech AG (изначально называвшаяся Quasar Technologies, откуда, собственно, и пошла аббревиатура Qt) была образована двумя норвежцами Эриком Енгом (Eirik Eng) и Хавардом Нортом (Haavard Nort) в 1994 г. в городе Осло. Само сочетание "Qt" некоторые произносят как "кьют" ака cute — то есть "мило, прикольно". Написана данная библиотека (а точнее, набор классов) на С++.

Qt — это межплатформенная библиотека на С++, у которой имеется также framework, то есть программная оболочка (среда разработки). Под Windows при инсталляции Qt может интегрироваться в Visual Studio, так что возможно добавлять потом новые проекты, формы и т.д. прямо из дополнительной панели. Кроме того, там доступно быстрое переключение на подсказку в QtAssistant — которая, как и вся среда, не зависит от платформы. В результате html’ные "хелпы" от Microsoft тут нет — вместо них используются похожие, но собственного формата и, естественно, с оболочкой на самом Qt. Также существует несколько наборов компонентов для известных сред разработки (для Visual Studio и Borland Builder), упрощающих разработку в Qt,— Qt Solutions.  

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

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

Помимо основной библиотеки, существует основанный на том же коде framework для всяческих мобильных устройств вроде смарт-фонов и PDA под управлением Embedded Linux. Называется это Qtopia. Инструмент для разработки встроенных систем с ограниченной функциональностью называется Qt/Embedded.

Существует также QSA — скриптовый язык, позволяющий управлять готовыми приложениями на Qt/C и расширять их возможности в скриптовом контексте.

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

Как уже говорилось, Qt — это библиотека классов. Классов там более четырехсот.

На рисунке приведен сильно уменьшенный вариант схемы иерархии классов.

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

Что касается графического интерфейса, то он более всего похож на Java Swing — тут тоже существуют схемы стилей, например Windows, CDE, Motif, копирующие известные оболочки. Присутствуют также layout’ы, автоматически размещающие элементы управления; кроме того, есть такие "пружинки", или "спейсеры", которые расталкивают сопредельные компоненты.

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

Пример Hello World

Вот как выглядит для Qt известный всем пример "Привет, мир!":

#include < qapplication.h >
#include < qlabel.h >
int main( int argc, char **argv )
{
   QApplication app( argc, argv );
   QLabel *hello = new QLabel( "
Привет
, мир!", 0 );
   app.setMainWidget( hello );
   hello->show();
   return app.exec();
}

Gtk

Gtk это также библиотека классов, только написанная на Си, без использования шаблонов классов и других особенностей Си++. Тем не менее, Gtk — объектно-ориентированная система, основанная на вызовах "методов", обратных вызовах, генерации сигналов и регистрации их обработчиков. Как следствие использования C, Gtk — в некоторой мере более оптимизированная библиотека. Из-за применения "низкоуровневого" C (хоть это и не очевидно), Gtk имеет значительно более низкоуровневый контроль над всеми деталями интерфейса, в особенности это касается графических параметров.  С другой стороны, использование стандартных механизмов C++ в Qt дает более мощный высокоуровневый базис для разработки приложений. Сложно сказать, какая библиотека лучше,— обе нашли широкое применение. Одна из них чуть быстрее — но зато и более сложена в освоении и использовании. Другая более ресурсоёмкая — зато с ней легче управиться.

Единственное, что можно просто констатировать, так это тенденцию, суть которой образно можно свести к следующему: "быстрая разработка превыше оптимизации кода". С этой точки зрения Qt имеет большое преимущество.

Другое отличие между Qt и Gtk и что сразу бросается в глаза — так это их происхождение. Qt разрабатывается фирмой Trolltech в двух вариантах: коммерческом и по GPL. Gtk экстенсивно разрабатывается обширным сообществом разработчиков в соответствии с описанными выше принципами для Open Source. Таким образом, и история Gtk – это перечисление огромного числа фамилий и тех отдельных моментов, которые эти люди привнесли в библиотеку. 

Структура Gtk

Изначальный проект назывался GIMP, что значит GNU Image Manipulation Programm (то есть что-то типа Photoshop 3), откуда, собственно, и выросла Gtk.

Сам Gtk (с плюсом) состоит из трех частей.

·         Glib. Представляет собой низкоуровневый остов всего Gtk и GNOME; в этой библиотеке описаны основные структуры, а также реализованы такие "базисы", как цикл сообщений, потоки, динамическая загрузка модулей и система runtime-вызовов между объектами. GLIB определяет типы данных и обеспечивает функциями для обработки ошибок и работы с памятью.

·         GDK - это платформено зависимый уровень, который находится между API, присущим данной платформе, и GTK+.

Ко всему этому, Gtk имеет привязки (bindings) к 28-ми языкам программирования, начиная от C++/Java/Perl/Python и заканчивая такими экзотическими наречиями, как Erlang и Hasskell.

Поскольку Gtk занимается, в основном, пользовательским интерфейсом, то существует несколько инструментов, позволяющих создавать этот интерфейс визуально. Вероятно, главное такое средство — редактор Glade. Glade может генерировать исходники на C, C++ и Ada, а также работать в gladelib-режиме, когда данные формы сохраняются в виде XML, из которого тексты генерируются на этапе сборки. Второй метод обычно используется для больших проектов.

Пример Hello World

Компилируются Gtk-приложения (а также GDK и так далее) с флагами, поставляемыми утилитой pkg-config:

gcc `pkg-config —cflags —libs gtk+-2.0` hello.c -o hello

 #include
 int main(int argc,char **argv) {
     GtkWidget   *window;
     GtkWidget   *label;
     gtk_init(&argc, &argv);
     window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
     label = gtk_label_new("Hello, World!");
     gtk_container_add (GTK_CONTAINER (window), label);
     gtk_widget_show(label);
     gtk_widget_show(window);
     gtk_main();
     return(0);
}

 

Содержание KDE и GNOME

Теперь, в доказательство того, что KDE и GNOME – это не просто менеджер окон, набор виджетов и язык программирования приложений, а действительно интегрированные рабочие среды, включающие в себя также набор разработанных для них технологий и приложений, рассмотрим в этом смысле состав KDE и GNOME.

1)      Состав KDE (K Desktop Environment -- К-интегрированная рабочая среда)

1.1) Konqueror – браузер и файловый менеджер KDE. Поддерживает все современные стандарты: FTP, SSH, JavaScript, Java, HTML, CSS, SSL, а также все функции IE и Netscape. В качестве основного ядра использует KHTML. Konqueror - это второй Web-браузер, который успешно проходит тест ACID2 CSS. В Konqueror встроена фильтрация рекламного содержимого. Аналог технологии AdBlock

     1.2) aRts: эта аббревиатура расшифровывается как Analog Real-Time Synthesizer (Аналоговый Синтезатор в Реальном Времени) и обозначает специальный медиа-сервер, который может параллельно проигрывать многочисленные аудио-видео потоки, безразлично, локально или же по сети. ARts - полноценная система звукового синтеза, и включает в себя фильтры, модульный синтезатор и миксер. Его архитектура позволяет разработчикам писать и подключать новые модули, например, для обработки аудиопотоков на лету. ARts поддерживает и видео - форматов MPEG 1,2 и 4, а также AVI и DivX.

     1.3)  KHTML - продвинутый движок рендеренга HTML, используемый повсеместно в KDE. Как уже писалось выше, он использует все современные технологии, и может быть использован любым X11 приложением (не обязательно KDE). В свою очередь, KHTML может включать в себя другие компоненты благодаря обьектной технологии KParts.

Другие стандартные пакеты

 

KDevelop – среда разработки приложений

KOfice – аналог, ничем не уступающий MS Office

kdeaccessibility — дополнительные программы для людей с ограниченными способностями (лупа, синтезатор речи и т. д.)

kdeadmin — инструменты графического администрирования.

kdeartwork — дополнительные украшения (стили, заставки, обои и т. д.).

kdeedu — образовательное ПО.

kdegames — игры

kdegraphics — ПО для работы с графикой

kde-i18n — интернационализация, пакет для пользователей которые хотят использовать языки отличные от английского.

kdemultimedia — мультимедиа ПО

kdenetwork — инструменты для работы с сетью

kdepim — персональный органайзер

2) Особенности и технологии KDE

2.1) KIO - KDE Input/Output - класс функций, используемых для прозрачной поддержки операций ввода/вывода в приложениях. Он обеспечивает, например, прозрачность при работе в сетях, не делая различий для операций ввода/вывода, реализуемых с помощью протоколов HTTP, FTP, POP, IMAP, SMTP, NFS, SMB, LDAP или же происходящих на уровне локальной файловой системы. Более того, его модульный дизайн позволяет разработчикам безболезненно добавлять новые протоколы, такие, как WebDAV, которые благодаря KIO сразу становятся доступными всем приложениям KDE.

 

2.2)      Настраиваемость - затрагивает буквально все аспекты KDE. Поддержка тем - самое малое, что может предложить вам эта рабочая среда. С KDE поставляется 14 различных тем, которые эмулируют внешний вид различных операционных систем, и вы, вдобавок, с легкостью сможете создавать собственные. Не хотите тратить время? Импортируйте существующие темы из Gtk/GNOME. В числе других настроек: возможность с помощью простого перетаскивания сменить весь набор системных иконок, звуков; конфигурирование клавиатурных раскладок; выбор из 30 доступных языков; свободное конфигурирование панелей меню; возможность использовать клавиатуру вместо мыши для навигации в системе; и многое-многое другое. Более того, KDE включает полную поддержку UNICODE, а KHTML - единственный в Linux/X11 движок рендеренга HTML, который обеспечивает поддержку двунаправленного вывода, что очень важно для таких языков, как Арабский и Иврит.

2.3)           Соответствие стандартам - как было упомянуто выше, KDE поддерживает множество доступных протоколов соединения и разделения ресурсов. Помимо этого, система совместима с большинством известных стандартов. Так, kwin, переписанный в KDE 2 практически с нуля менеджер окон KDE, соответствует Спецификациям Менеджера Окон X11. KDE поддерживает протокол Drag`n`Drop X-Window (XDnD) и протокол управления сессиями X11R6 (XSMP).

2.4)      Поддержка KParts: эта новая обьектная модель компонентов, представленная в KDE 2, позволяет одному приложению встраиваться в другое. Технология затрагивает все аспекты, вплоть до позиционирования панелей инструментов и вставки необходимых меню при активации/деактивации встроенного компонента. KParts может взаимодействовать с KIO (KDE Input/Output), предоставляя обработчики для различных типов данных и служб или протоколов. Эта технология интенсивно используется в таких приложениях, как Konqueror и KOffice.

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

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

3) Cостав GNOME

 

GNOME состоит их большого числа разных программ. Некоторые наиболее важные из них:

 

Abiword — текстовый процессор.

Epiphany — браузер, сменивший Galeon с версии GNOME 2.4. Теперь, когда появилась возможность выбора, он пал на Epiphany потому, что этот браузер стремится соответствовать HIG (руководство по созданию интерфейса пользователя). По своим функциям этот браузер стремится походить на  Firefox. Конечно, один из основных недостатков – невозможно отключить загрузку картинок в Epiphany. В этом вопросе он проигрывает браузеру KDE Konqueror. Однако, можно найти, сконфигурировать и подключить соответствующее расширение. Несколько других важных возможностей не реализованы пока в Epiphany, например, отсутствует возможность просмотра сертификатов. В целом, браузер оценивают как удовлетворительный.

Evolution — программа управленя контактами/временем и электронной почтой.

Gaim — программа обмена мгновенными сообщениями.

GEdit — текстовый редактор. GEdit всегда был поводом для критики противников GNOME. С одной стороны, этот редактор немного сложноват для простого редактора текстов, с другой стороны, он не очень удобен для программирования. В последней версии была сделана попытка устранить этот недостаток с помощью использования библиотеки gtksourceview, которая позволяет редактировать текст с подстветкой синтаксиста. Gtksourceview используется и в других средствах разработки, как monodevelop, поэтому подсветка синтактсиса вполне прилично работает. Поддерживаются основые языки программирования, а также некоторые другие форматы текстовых файлов. Тем не менее, GEdit остается вполне простым текстовым редактором.

 

Gnucash — учёт средств.

Gnumeric — табличный редактор.

GnomeMeeting — программа IP-телефонии.

Gnome Speech — для голосового управления и чтения печатного текста.

Inkscape — векторный графический редактор.

Nautilus — файловый менеджер. каждая папка теперь является объектом. То есть у нее есть некоторый связанный с ней набор атрибутов, которые пользователь задает "на лету".

Pan — программа чтения новостей.

Rhythmbox — программа управления музыкальными файлами.

Totem — медиа-проигрыватель

File-roller - это приложение в GNOME для работы с архивами. File-roller может создавать архивы, извлекать файлы и модифицировать архивы несколькких типов. Как и все приложения GNOME 2.6, в File-roller используется GTK 2.4. В этой версии появилась новая возможность извлекать содержимое файлов формата RPM.

GNOME Keyring — система безопасности. Он отвечает за аутентификацию и позволяет сохранять информацию о паролях на некоторый период (на сегодняшний день, в течении сеанса) в памяти или в базе данных. Прошли те времена, когда пароль в открытую приходилось набирать каждый раз, для того чтобы посмотреть содержимое директории по протоколу smb. Хотя, нужно отметить, что разработка этого модуля началась совсем недавно, поэтому многие полезные возможности отсутствуют, а, иногда, и просто не предусмотрены. Например, на данный момент невозможно вводить пароль для любого ftp сайта, поэтому ftp придется просматривать старыми средствами, например gftp. Но нужно надеяться, что в скором времени можно будет с удобством использовать для этого nautilus.

GNOME Print — система печати из приложений GNOME.

GNOME Translation Project — перевод документации и приложений на различные языки.

GStreamer — для работы с мультимедиа из приложений GNOME.

 

Аналог технологий KParts, т.е. CORBA в GNOME: ORBit — CORBA ORB (брокер управления объектами) для программной компоновки.  

Заключение

Существуют 2 конкурирующие рабочие среды: KDE и GNME, в основе которых две различных библиотеки классов – виджетов: Qt на C++ и Gtk на С. У обоих десктопов есть свои пользователи, называющие в качестве достоинств KDE: хорошую документацию, большое разнообразие и функциональность написанных приложений (вытекает из использования С++), в качестве достоинств GNOME: полную открытость Gtk, хорошо развитый инструментарий рисования в GDK, более высокое быстродействие приложений.    

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

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

Использованные источники

 

Статья по Qt (содержит ссылку на структуру классов): http://citforum.ru/programming/qt/

 

Статья – сравнение Qt и Gtk: http://citforum.ru/open_source/qt_gtk/

 

GNOME, Gtk: http://gazette.linux.ru.net/lg70/articles/rus-ghosh.html#What%20is%20GNOME%20all%20about?%20An%20Introduction.

 

KDE: http://citforum.ru/open_source/kde/kde_select/

 

Википедия – это такая интернет-энциклопедия, которая пишется по принципам, в докладе упомянутым: любой человек заходит на сайт и пишет или редактирует, возможно анонимно, любые статьи о чём и как ему хочется. Пользоваться можно, но только очень осторожно…: http://ru.wikipedia.org/wiki/GNOME

 

GNOME: http://www.gnome.org.ru/

http://www.gnome.ru/gnome-office/go.shtml

 

Огромное количество скриншотов, призентаций, слайдов и всего такого по теме и около неё: http://shots.osdir.com/

 

Qt: http://www.trolltech.com/company/index.html

 

Это самое важное, есть ещё много другого, похожего и хуже.

 

 

 

 

 

 

Hosted by uCoz