ГІК II: «Легкі» графічні середовища

В той час, як сама графічна платформа X Window System багато років є фактичним галузевим стандартом, шари графічного середовища, що знаходяться над нею не стандартизованими.

Яку-небудь класифікацію графічних середовищ дати доволі важко, проте найгрубішим чином їх можна розділити на «інтегровані» і «легкі».

Навіщо потрібні «легкі» середовища?

Оборотною стороною інтегрованості є достатньо висока вимогливість до ресурсів. Комфортна робота з KDE або GNOME «свіжого розливу» починається приблизно від продуктивності, еквівалентній продуктивності 800 Мгц процесора Celeron, відмова від деяких ресурсоємних властивостей (анімація змін в середовищі і т.п.) дозволяє «понизити планку» приблизно до 500 Мгц при об'ємі оперативної пам'яті від 128 МБ. Зрозуміло, ці цифри навіть нижче характерних для комп'ютерів «стартового рівня», що поставляються сьогодні виробниками, проте парк машин, що знаходяться в експлутації, як в офісах, так і вдома і в школі, включає і комп'ютери з нижчими характеристиками.

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

Обговорювані сьогодні IceWM, BlackBox і FluxBox (а також трохи вимогливіший до ресурсів WindowMaker)88 дозволяють достатньо комфортно працювати з графікою на машинах продуктивністю (у еквіваленті Intel Pentium) приблизно від 100 Мгц і з пам'яттю від 32М (текст однієї з попередніх «лекцій» набирався в потягу, з одночасною «зйомкою» зображень з його екрану графічним редактором GIMP (див. «лекцію» 3) на ноутбуку з процесором Intel Pentium MMX 166 і ОЗУ об'ємом 64МБ).

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

(Якщо необхідно задіювати наявний парк слабкої техніки для таких завдань, а також, якщо необхідно зберігати в експлуатації ще менш продуктивні машини (наприклад, старші моделі IBM PC-сумісних комп'ютерів на базі процесорів Intel 486 або AMD 586 або «Макінтоші» на процесорах Motorola 68K), слід подумати про використання такої техніки в режимі графічних терміналів або, принаймні, варіанті запуску найбільш «важких» прикладних програм на сервері. Про це у нас буде можливість поговорити в «лекції», присвяченій устаткуванню під вільно-програмні рішення.)

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

Базова функціональність віконного менеджера

Як мовилося в минулій лекції, ключовий компонент графічної платформи — X Window Server:

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

У «голому» середовищі, що утворюється X Window Server без віконного менеджера, вікно, що виділяється клієнту, є фіксованим: його геометрія (місцеположення на екрані і розмір) задається при запуску клієнта і зберігається протягом всього сеансу роботи з цим клієнтом. Це цілком відповідає меті створення спеціалізованих систем з графічним інтерфейсом користувача (таких, як мультимедійні кіоски і т.п.), але абсолютно недостатньо для універсального «настільного» застосування.

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

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

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

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

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

«Віджети»

Базова (а також розширена) функціональність віконних менеджерів доступна користувачу перш за все за рахунок введення в інтерфейс так званих «віджетів» (widgets = window gadgets, «віконні пристрої») — таких візуальних елементів, як рамки, кнопки, меню і ін., які служать «органами керування» вікна. Технічно віджети є окремими вікнами (в термінах X Window System), що примикають до вікна прикладної програми і, як правило, переміщаються разом з ним.

З користувацької точки зору віджети, складові обрамлення вікна, часто сприймаються як його частина. Проте не слід забувати, що всередині вікна (вмістом якого управляє прикладна програма) часто теж є свої віджети: кнопки, смуги прокрутки, перемикачі, меню і т.п. У загальному випадку, використовувані віконним менеджером і прикладною програмою бібліотеки віджетів можуть і не співпадати.

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

Обрамлення вікна звичайно включає:

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

Деталі реалізації обрамлення вікна можуть бути вельми різними залежно від конкретного віконного менеджера і його настройок.

Розширена функціональність віконного менеджера

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

  • мінімізацію/згортання вікон і управління згорнутими вікнами. Робота на столі, захаращеному десятком різних вікон, може бути дискомфортною, і вкрай корисною є можливість «скрутити» або «мінімізувати» вікно з програмою, що тимчасово не використовується. Для того, щоб засобами графічного середовища можна було вікно потім розгорнути, воно і в згорнутому стані повинно якимсь чином візуалізуватися. Існує декілька відносно поширених способів візуалізації згорнутих вікон. Наприклад, «на столі» може залишатися смуга заголовку згорнутого вікна після клацання на якій воно знов розгортається. Згорнутим вікнам можуть відповідати піктограми («іконки», «значки») на поверхні «робочого столу» або в спеціально відведеному для цього вікні («панелі управління»). Згорнуті вікна можуть візуалізуватися як пункти загального або спеціального меню (див. нижче);
  • управління декількома «столами». Практика показує, що для багатьох досвідчених користувачів, для яких освоєння стандартних систем йде після освоєнням специфічних персонально-комп'ютерних, саме можливість працювати на декількох «столах» виявляється першим важливим додатком X Window System. Дійсно, перемикання між віртуальними «столами» дозволяє організувати комфортну роботу безліччю програм навіть на моніторах з відносно низьким розширенням (1024х728, 800х600) і фізичними розмірами (17, 15-дюймовими). У інших умовах комфортність роботи істотно знизилася б, або ж крайньою необхідністю стало б придбання крупнішого монітора (що часто спричиняє за собою необхідність зміни графічної карти і інших недешевих заходів). Всі сучасні віконні менеджери підтримують віртуальні столи, правда називається ця сутності в них по-різному: «столами», «робочими областями» або «екранами». До межі (щоб не сказати, до абсурду) ця функціональність розвинена у віконному менеджері Enlightenment, згадуваному в попередній «лекції»: E дозволяє організувати до 64 «екранів» на «робочому столі», при цьому «робочих столів» також може бути більш одного (точніше, до 32). Важко уявити, навіщо може знадобитися дві тисячі з гаком окремих екранів (як правило, чотири екрани вистачає з лишком для будь-яких практичних завдань), проте можливості прийому демонструються цим «в повен ріст»;
  • швидкий запуск команд. Можливість швидкого запуску приготованих команд звичайно асоціюється із загальним меню, «клацанням», що викликається, на особливому віджеті, не пов'язаному з прикладними вікнами, або у вільній від прикладних вікон області екрану;
  • можливості настройки «поведінки» і зовнішнього вигляду середовища. «Поведінка» (реакція окремих віджетів на операції з ними, модель фокусування (закріплення вводу з клавіатури і «миші» за тими чи іншими програмами) і т.п.) і зовнішній вигляд оформлення вікон, а також наявність на екрані «загальних» віджетів, не пов'язаних з конкретними прикладними вікнами, «шпалери» і т.п. можуть варіювати в дуже широких межах. Іноді можливості такої настройки вважають якимись «архітектурними надмірностями», проте більш зваженою є точка зору, згідно якій в хорошому візуальному дизайні (так само, як і в хорошій архітектурі) ніщо не є надмірністю. Зокрема, в школі програми експлуатуються на широкому спектрі устаткування з вельми різними характеристиками і різної якості, причому використовуються вони широким колом людей з різними психофізичними особливостями, як в межах норми, так і пов'язаних із здоров'ям, і ігнорувати можливості настройки не можна навіть вже виходячи з гігієнічних міркувань.

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

Віконні менеджери BlackBox і FluxBox

BlackBox (BB) — один з найкомпактніших, «мінімалістичних» і швидкодіючих віконних менеджерів. Він дозволяє ефективно організувати роботу на «робочому столі», не «захаращуючи» його непотрібними посиланнями і не витрачаючи екранний простір на відображення громіздких елементів оформлення.

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

За замовчуванням на смузі заголовка кожного вікна присутні кнопки згортання (згортання можна виконати також подвійним «клацанням» на самому заголовку), максимізації і закриття вікна. Згорнуте вікно присутній на екрані у вигляді смуги заголовка, розвернути його можна повторним подвійним «клацанням» на смузі заголовка або з меню Workspaces («робочі простори»), доступного по «клацанню» середньою кнопкою миші на вільному від вікон місці «столу». Це ж меню дозволяє перейти на інший «стіл», додати або видалити «стіл» з робочого простору.

BB підтримує різні моделі фокусування введення. Click to focus («фокусування по клацанню») дозволяє реалізувати стиль роботи, звичний для користувачів GNOME, KDE або Microsoft Windows: вікно стає активним (що приймає поточне введення з клавіатури і від «миші») після «клацання» на ньому. Активне вікно автоматично стає «верхнім» (видимим повністю, навіть якщо воно частково перекривається з іншими вікнами). Модель Sloppy focus («недбале фокусування») припускає активізацію вікна при попаданні на нього курсора миші (вікно при цьому не «спливає» автоматично вгору).

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

На основі BB створені два розвиненіших віконних менеджера — OpenBox і популярніший FluxBox.

«Найхарактерніша особливість Fluxbox — реалізація закладок (tabs) в контексті робочого столу. Якщо закладки в браузере дозволяють одночасно відкрити декілька сторінок в одному вікні, то закладки fluxbox дозволяють зручно згрупувати декілька вікон на столі. Всі вікна в групі мають однакові розміри і розташовані строго одне під іншим. Для перемикання на яке-небудь з них достатньо навести курсор миші або клацнути (залежно від настройок) по відповідній закладці. Наприклад, мені доводиться працювати з декількома різними поштовими клієнтами. Сумістивши їх в одну групу, я можу легко перемикатися між ними і при цьому я завжди знаю, де розташовано кожне вікно. На словах пояснити переваги цього оригінального підходу не дуже легко, але після декількох днів практичного використання, стає важко без нього обходитися: до хорошого звикаєш швидко.»

Зовнішній вигляд BB, FluxBox і OpenBox легко настроюється за допомогою механізму тем робочих столів.

Віконний менеджер WindowMaker

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

Основным автономним віджетом WM, як і NEXTSTEP, є «пірс» прикладних програм, представлений при запуску піктограмою з скріпкою. При запуску будь-якій «коректній» (з погляду WM), а також деяких «некоректних» програм, окрім її вікна на екрані з'являється її піктограма. Якщо «пришвартувати» цю піктограму до «пірсу», вона там і залишиться, дозволяючи запускати цю програму знов і знов простим клацанням після неї — це «рідний» некстстеповський інтегруючий інтерфейс. WM дозволяє працювати з декількома «столами» (перемикання за умовчанням по Alt-n або через меню, доступне по «клацанню» правою кнопкою на вільному місці столу). WM дуже гнучко настроюється, як в частині зовнішнього вигляду, так і в частині «поведінки», причому велика частина настройок робиться з програми Wprefs.app, що доступна по клацанню на піктограмці зі сходинкою.

Віконний менеджер IceWM

IceWM — простий віконний менеджер; його дуже часто обирають користувачі, що приходять з-під Microsoft Windows або OS/2, оскільки він здатний достатньо точно імітувати їх основні риси.

З автономних віджетів перш за все варто відзначити панель з кнопкою, що викликає головне меню (подібно до того, як це робить кнопка в Microsoft Windows, GNOME або KDE). За допомогою панелі можна також управляти поточним сеансом і настроювати ICEWM. Втім, основне меню також доступно і по «клацанню» правою кнопкою на вільному місці «столу», що звичніше для користувачів WindowMaker, Sawfish, Blackbox або Enlightenment.

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

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

Ресурси

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

Згаданий випуск журналу містить, окрім дистрибутива ALT Linux Junior 2.1 (http://www.altlinux.ru), підбірку статей, присвячених використанню вдома вільних програм.