ГІК III: Інтегровані графічні середовища

Запуск графічного середовища (точніше, «бутерброда» з X Window System, віконного менеджера і графічного середовища) у відкритій операційній системі можна порівняти із запуском Microsoft Windows в MS-DOS10.

Проте, схожість закінчується, не встигнувши початися. MS-DOS — це однозадачна і однокористувацька система, і запущена оболонка захоплює всі її ресурси. Із-за неповноцінності ОС оболонці доводиться брати на себе невластиві їй функції (наприклад, імітацію багатозадачності), з якими вона справляється погано (так, «зависання» однієї програми цілком може привести до непрацездатності всієї системи).

При запуску графічного середовища під повноцінною ОС, вона, з погляду останньої, представляє групу звичайних процесів, управління якими проводиться загальносистемними засобами. Так само, загальносистемними засобами проводиться і управління процесами, що запускаються з-під цього графічного середовища. Більше того, оскільки платформою для запуску конкретного середовища є з народження мережева X Window System, прикладна програма навіть не зобов'язана запускатися на тому ж комп'ютері.

Середовище зовсім не монополізує використання цього комп'ютера; паралельно з його роботою продовжує виконуватися безліч службових системних процесів; з інших терміналів (якщо система багатотермінальна) можуть запускатися інші програми або навіть інші графічні середовища (або додаткові екземпляри того ж середовища). Детальніше про це буде розказано в лекції, присвяченій операційним системам.

Плюси і мінуси інтегрованих середовищ

Однорідність досвіду і пов'язана з нею звичність (що іноді помилково зветься інтуїтивністю, хоча вона не має відношення до філософського і психологічного понять інтуїції) дозволяють при освоєнні нового інструменту-програми зосередитися на її прикладній логіці (аспектами, пов'язаними з конкретним застосуванням ІТ, яке вона реалізує), не замислюючись і спеціально не фокусуючи уваги на аспектах, загальних для різного інструментарію. Це робить «крутішою» горезвісну «криву навчання» нового користувача.

(Зрозуміло, це сильно ідеалізована картина. Іноді прикладна логіка диктує деякі елементи ергономіки; наприклад, інтерфейси більшості систем автоматизованого конструювання і проектування (CAD, САПР) вельми схожі, незалежно від середовища, в якому працюють ці програми.)

Як не парадоксально, основний недолік роботи в інтегрованому середовищі є зворотною стороною основної переваги: жорстко закріплені навики заважають при виході за його межі. Кінцевому користувачу, обмеженому досвідом роботи в одному середовищі, бракує «стереоскопічності» бачення, глибини розуміння; елементи ергономічної логіки можуть безпосередньо асоціюватися з певними візуальними елементами і «жестами», за допомогою яких подаються команди. Загальновідомі труднощі, з якими стикаються люди, що кілька років користувались MacOS або Microsoft Windows при необхідності попрацювати в іншому (нехай навіть і вельми схожому) середовищі. Подібна «ригідність» досвіду може формуватися і при роботі в будь-якому з вільних середовищ, хоча як правило користувач в них не обмежений (на відміну від специфічних персонально-комп'ютерних середовищ) прикладними програмами, що спеціально розроблені для даного середовища і ділять з ним набори елементів інтерфейсу («віджетсети»), тому його досвід від початку різноманітніший. У цьому сенсі, украй корисним представляється знайомство учнів з різними середовищами вже на початковому етапі освоєння графічних інтерфейсів. Це не обов'язково повинні бути різні інтегровані середовища, але саме уявлення про те, що один і той же результат може досягатися за допомогою різних інтерфейсних засобів, повинно бути передано обов'язково. У загальному випадку це можливо і в рамках одного інтегрованого середовища з числа тих, що розглядаються нижче — і KDE, і GNOME надзвичайно гнучкі відносно настройки зовнішнього вигляду і «поведінки». Ця гнучкість також вельми корисна для забезпечення доступності і максимально досяжного комфорту учнів з фізіологічними особливостями і фізичними недоліками (дальтонізмом, слабким зором, обмеженою рухливістю або пошкодженою координацією рухів і т.п.).

Загальні риси інтегрованих середовищ

Скільки-небудь послідовної теорії інтегрованих графічних середовищ не існує. Вивчаючи окремі середовища в динаміці їх розвитку, можна, проте, виділити декілька загальних рис:

  • вони спираються на певний інтерфейс розробника (API), що складається з бібліотек, доступних також розробникам прикладних програм (будь то MS Windows API для Microsoft Windows, Motif для CDE, Qt для KDE або GTK+ для GNOME);
  • вони реалізують елементи об'єктної метафори (окремі екземпляри сутностей, таких як файли, процеси (їх потоки вводу-виводу) візуалізуються певним чином, на них можна фокусуватися і виконувати з ними різні дії, їх стани і зміни цих станів також можуть візуалізуватися або озвучуватися). Цілісна об'єктна метафора своєї реалізації не знайшла (і, мабуть, послідовно «об'єктне» середовище було б украй незручним у використанні);
  • вони реалізують одноманітні елементи управління («віджети»), часто не тільки в оформленні окремих вікон, але і в їх «начинці»;
  • вони містять ті або інші елементи управління, не прив'язані до окремих вікон прикладних програм («загальні» меню, «панелі управління», «поверхня столу» і т.п.);
  • вони дозволяють погоджено змінювати властивості інтерфейсу програм, котрі створюють середовище;
  • вони реалізують «буфер (буфери) обміну», що дозволяє передавати типізовані дані від однієї програми до іншої (X Window System містить буфер, що дозволяє передавати лише звичайні текстові дані);
  • вони реалізують можливість «перетягування» (drag'n'drop) об'єктів або даних між вікнами однієї програми або різних програм.

(Із-за обмеженості об'єму «за бортом» залишаються складніші питання, такі, як компонентна об'єктна модель і моделі мережевої взаємодії, так чи інакше «втягувані» в проекти інтегрованих середовищ.) На сьогодні існують і розвиваються дві вільних інтегрованих графічних середовища загального призначення: KDE і GNOME. Вони входять в поставку більшості стандартних (відкритих) ОС, як вільних, так і закритих. Хоча GNOME на півроку молодший KDE, ми почнемо обговорення саме з GNOME.

GNOME (Модельне середовище мережевих об'єктів GNU)

GNOME (GNU Network Object Model Environment — «Середовище GNU, засноване на моделі мережевих об'єктів», але також і «Зразкове середовище для мережевих об'єктів GNU») — один з самих амбітних і масштабних проектів в співтоваристві програмістів.

Окрім реалізації функціонально повного графічного середовища (можливо, доречніше говорити про сенсуальні середовища, враховуючи те, що звук став їх повноправною частиною), «Гном» претендує на те, щоб повністю реалізувати специфікації промислової платформи мережевої взаємодії CORBA і повністю абстрагувати шар «менеджера робочого столу» (або «графічного середовища») від нижчележачого шару управління вікнами («віконного менеджера»).

GNOME підтримує ряд віконних менеджерів, серед яких: Sawfish («штатний» віконний менеджер за замовчуванням), Enlightenment, IceWM, WindowMaker, AfterStep і FVWM2, сумісні з GNOME, втім, різною мірою. Сьогоднішня версія «Гнома» (GNOME 2.1) — повноцінне інтегроване середовище, що включає реалізацію повсякденно необхідних функцій і дозволяє використовувати сторонні рішення для реалізації функціональності, яка в ньому відсутня.

GNOME використовує один з найрозвиненіших інтерфейсних пакетів GTK+, реалізований для різних платформ. Над ним надбудовується маса компонентів і бібліотек, що забезпечують мережеву функціональність, інтерфейси до різних мов програмування, роботу із звуком через механізми ОС і ін. Сам «Гном» прагне залишатися мобільним і доступним у всіх відкритих системах. Він стабільно працює в Linux, BSD, AIX і Solaris; остання обставина сприяла підтримці розробки GNOME, яку надає Sun Microsystems через створений в 2001 р. року Фонд GNOME, серед засновників якого також найбільші постачальники вільних ОС.

З точки зору користувача GNOME є набором базових компонентів інтерфейсу і «аплетів», утиліт і прикладних програм. До базових компонентів відносяться менеджер файлів і поверхні столу Nautilus, панелі управління і меню GNOME Panel і центр управління (Gnome Control Center).

«Наутілус». Менеджер файлів Nautilus дозволяє відображати вміст файлів і каталогів у вікнах і виконувати над файлами звичайні дії (видалення, перейменування, копіювання і переміщення і т.п.), а також здійснювати попередній перегляд багатьох типів даних. «Наутілус» ефектний, але робота з ним не більш ефективна, ніж з іншими браузерами файлів, що включаються звичайно в графічні середовища (менеджер файлів CDE або Microsoft Windows Explorer).

Крім відображення вмісту каталогів у вікнах, «Нау» також може відображати один з каталогів на поверхні «робочого столу»: розміщені на ньому ікони як би приклеєні до монітора, і при зміні поточного екрану залишаються на тому ж місці відносно спостерігача (так само, до речі, поводяться і відкриті вікна, якщо їх «приклеїти»).

Підтримується широкий спектр операцій перенесення мишею (drag'n'drop), причому «перетягуванню» схильні не тільки об'єкти (файли, пункти меню і т.п.), але і деякі їх властивості: так, можна «узяти колір» у вікні вибору кольору і перенести його на панель, яка сприйме його. Є навіть операції, що дозволяють призначити один об'єкт властивістю іншого: наприклад, якщо на панель «перетягнути» не колір, а файл з картинкою, остання стане її фоном. «Тягати» файли між вікнами «Нау», на робочий стіл і панелі можна практично без обмежень.

Панелі і меню. Вже згадані панелі є, поруч з менеджером файлів, найважливішою складовою частиною інтерфейсу GNOME. Панелей може бути необмежена кількість. Панель може відноситися до одного з п'яти типів, але насправді їх два: панель-меню (menu panel) і об'єктна панель. Перша з них містить пункти меню і може містити піктограми, а друга — тільки піктограми. Остання може бути краєвою (edge), що вирівнюється (aligned), що ковзає (sliding) або плаваючій (floating), але це швидше властивість панелі (яке можна міняти «на ходу»), що визначає особливості її поведінки, аніж тип.

Зовнішній вигляд і поведінка панелей є у вищій степені конфігурованими. Користувач може задавати як глобальні налаштування (анімація руху панелей, відображення панельних об'єктів і ін.), так і індивідуальні переваги для кожної з них (її тип і положення на екрані, ширина, можливість автозаховання і примусової мінімізації, колір і фонове зображення і т.п.) Ну і, зрозуміло, користувач може «набивати» панелі тими об'єктами, які йому потрібні.

На панелях можуть бути присутніми об'єкти п'яти типів:

  • пускач (launcher) асоційований із додатком або командою, які виконуються по клацанню на його піктограмі в панелі;
  • висувний ящик (drawer) — це кнопка, що відкриває іншу панель, перпендикулярно першій — якийсь аналог підміню в меню, який можна «набити» всілякими аплетами;
  • аплет (applet, «додаточок») — цікавий тип панельного об'єкту, що демонструє те, що він не зобов'язаний бути представлений статичною картинкою. Це програма, місця в панелі якій достатньо, щоб відображати яку-небудь корисну (або забавну) інформацію або навіть приймати клавіатурне або/чи координатне введення. З GNOME поставляється маса аплетів, що відображають всяку корисну інформацію (стан ресурсів і статус мережі, наприклад) або дозволяють здійснити нетривіальні дії (наприклад, mini commander, що дозволяє набрати команду, не запускаючи терміналу). Важливими «додаточками» є «путівник по столу» (Desktop Guide) і «список завдань» (Task List), що дозволяють перемикатися між віртуальними екранами і активізувати вікна запущених програм, відповідно;
  • спеціальні об'єкти — це ті ж аплети, але що виконують функції, які іншими засобами «дістати» чомусь не можна (замкнути екран, вийти з GNOME або запустити програму вручну). Як «спеціальні об'єкти» виконуються і програми, які не були написані спеціально для GNOME, але можуть, проте, здійснювати вивід в панель — «поглинені програми» (swallowed applications);
  • нарешті, об'єкт-меню розкриває меню.

За роботу системи меню, як і за роботу панелей, відповідає компонент GNOME Panel, і це не випадково: різниця між панеллю і меню більш декоративна, ніж сутнісна: будь-яке меню можна зафіксувати на екрані, і воно перетворитися на подібність панелі-меню (тільки вертикальне, а не горизонтальне, і з меншими можливостями настройки).

У «Гнома» немає єдиної ієрархії меню: окрім головного, що викликається об'єктом-меню з лапою гнома (воно ж, коли викликається клацанням правої кнопки на фоні або натисненням клавіші, чомусь називається глобальним (global)), користувач може створювати «звичайні» (normal) меню, пов'язані з об'єктами-меню на панелях.

Меню настроюються приблизно так само, як і панелі: користувач може додавати, міняти і видаляти пункти, створювати підменю і т.п. При такому створюванні «звичайні» меню спочатку порожні, а головне/глобальне «набивається» при установці всім, що «Гном» знайде в системі, і користувачу залишається тільки прибрати зайве і переставити пункти відповідно до своїх переваг.

Утиліти, аплети і «капплети». Для настройки різних аспектів функціонування системи призначений Центр управління, який представляє собою набір «керуючих аплетів» (capplets), пов'язаних з різними компонентами і прикладними програмами.

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

Важливим «капплетом» є менеджер т.з. «драйверів документів» (Document Handlers), що встановлює відповідність між типом файлу або протоколу і програмою, що виконує різні операції з ними. Набір «капплетов» є розширюваним, їх можна писати не тільки для програм, написаних спеціально для «Гнома», але і для зовнішніх програм. Ще відкритіший набір утиліт, прикладних програм і аплетів, що поставляються з GNOME, — разом з програмами, що входять в більшість дистрибутивів ОС, про які «Гном» «в курсі», їх число перевищує сотню.

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

GNOME забезпечений вбудованою системою допомоги; крім того, його розробниками спільно з Sun Microsystems підготовлено компактний (130 ст.) посібник, доступний в різних форматах на сайті проекту. У його постачання входить система розробки графічних застосувань під GTK+, яка називається Glade і включає специфічні для Gnome елементи. «Гном» і більшість його компонент відповідають угодам про інтернаціоналізацію і, відповідно, підтримують і роботу з кирилицею, і локалізацію, і переклад інтерфейсу. На жаль, локалізація «Гнома» сильно відстає від розробки.

KDE (стільничне середовище K)

Сама назва KDE — явна пародія на CDE — Common Desktop Environment («Загальне стільницеве середовище») — останню спробу галузі стандартизувати графічне середовище на закритій основі, зроблене в кінці дев'яностих років. «K» в KDE нічого не означає.

Не дивлячись на явно грайливий тон, що починається з назви середовища і продовжується у назвах компонент (у KDE люблять грати із словами; наприклад, універсальний браузер, що входить в середовище, називається Konqueror (від Conqueror — «завойовник», «покоритель»), термінал — Konsole (від Console — «консоль), а система допомоги — взагалі Kandalf (від імені Гендальфа, мага з фантазійних творів Дж.Р.Р.Толкиєна)), KDE — дуже серйозний проект. Якщо одноманітність і «суцільність» середовища вважати гідністю, то KDE — безперечний лідер серед всіх (як відкритих так і закритих) інтегрованих графічних середовищ. Основним видимим засобом інтеграції є універсальний браузер Konqueror. Функція Konqueror близька до тієї, яку набув Microsoft Internet Explorer в Microsoft Windows (починаючи з MS Windows 98 в лінійці MS-DOS і MS Windows 2000 в лінійці NT), — він суміщає функції гіпермедийного браузера WWW і браузера локальних ресурсів.

Розробники KDE пішли навіть далі за своїх колег з Microsoft і визначили ряд додаткових протоколів, що дозволило, зокрема, переглядати за допомогою браузера в одноманітному форматі всю різноманітність довідкової інформації, представленої у сьогоднішніх відкритих системах (традиційні сторінки підручника man, гіпертекстову систему Info з проекту GNU, розрізнені файли документації в текстовому і гіпертекстовому форматі). У Konqueror інтегрована також можливість попереднього перегляду вмісту великої кількості типів файлів.

KDE включає систему панелей і меню, що також настроюється, і інтегрований «центр управління», що дозволяє погоджено змінювати параметри середовища. KDE дещо менш гнучка в настройці, аніж GNOME, проте на її гнучкості цілком достатньо для вирішення будь-яких практичних завдань (зокрема, імітації вигляду і поведінки інших середовищ). KDE працює тільки з власним віконним менеджером KWin.

У поставку KDE входить безліч «аксесуарів» і прикладних програм, до того ж поряд з проектом виросла ціла «грибниця» супутніх, орієнтованих на ті або інші наочні додатки, з яких найрозвиненішим є KOffice.

Офісний прикладний пакет KOffice

З проектом KDE тісно пов'язаний проект KOffice, в рамках якого розробляються офісні програми на основі тієї ж основної бібліотеки Qt. KOffice на сьогодні включає наступні основні програми, що знаходяться на різних стадіях готовності:

  • word-процесор (редактор розміченого тексту) KWord. Не дивлячись на позиціонування цієї програми як word-процесора, вона більш нагадує просту настільну видавничу (DTP) систему завдяки концепції «фреймів» (областей друку, що володіють власною геометрією і здатних містити текст або об'єкти, створений в інших програмах, що входять в цей пакет (малюнки, формули і т.п.);
  • програму роботи з електронними таблицями Kspread;
  • програму підготовки мультимедійних презентацій Kpresenter;
  • програму роботи з блок-схемами (flowcharts) Kivio;
  • векторний графічний редактор Karbon14;
  • простій растровий графічний редактор Krita;
  • програму генерації звітів з баз даних Kugar;
  • інтегровану програму підготовки графіків і діаграм Kchart;
  • редактор формул Kformula;
  • пакет управління проектами KPlato (розробка цього проекту тільки почалася).

Власні формати KOffice орієнтовані, як і власні формати більшості сучасних офісних пакетів, на XML, хоча не всі з них є чисто XML-додатками. Заявлена підтримка достатньо велика кількість «чужих» і успадкованих форматів, хоча якість підтримки на сьогодні вельми посередня; останнє особливо стосується підтримки кирилічних текстів. KDE і KOffice достатньо оперативно локалізуються (див. http://www.kde.ru), проте, на жаль, в перекладах на сьогодні ще більше, ніж в оригіналах, «персонально-комп'ютерного» сленгу.

Ресурси

GNOME і KDE входять в постачання практично всіх (відкритих і закритих) систем для всіх апаратних платформ. Про їх стабільні перенесення під альтернативні ОС нам нічого не відомо.

Додаткову інформацію об них можна знайти на сайтах http://www.gnome.org і, відповідно. Російська інформація об KDE періодично оновлюється на http://www.kde.ru (http://www.gnome.ru не оновлюється, поточні локалізаційні ініціативи «скидаються» в основное дерево розробки).

Базову інформацію про обидва інтегровані середовища можна знайти практично в будь-якому «неканонічному» підручнику або посібнику по Linux (наприклад, в ) або в документації по будь-якому дистрибутиву, проте навряд чи ви знайдете там щось таке, чого не було б у вбудованому електронному посібнику. Існує обширна англомовна (для KDE — ще і німецькомовна) література для розробників в обох середовищах, з якої російською поки що нічого не перекладено.