Компания ALT Linux
Опубликован: 14.12.2004 | Доступ: свободный | Студентов: 12603 / 1647 | Оценка: 4.19 / 3.84 | Длительность: 18:18:00
ISBN: 978-5-9556-0019-1
Лекция 17:

Графическая подсистема X11

< Лекция 16 || Лекция 17: 123456

Инструментарий X11

Приложения X11 создаются с помощью разнообразных готовых инструментов. Большая их часть разрабатывается независимыми авторами по всему миру (это общее свойство свободного ПО), но библиотека самого низкого уровня, X Lib, и несколько более высокоуровневых с давних пор включаются в основной дистрибутив X11. Из них наиболее примечательна X Toolkit (Xt), организующая из стандартных окон X11 так называемые оконные примитивы (их собственное имя – widgets – сокращение от window gadgets, "оконные безделушки"). Xlib задает логику работы X-приложения, а совместно с Xt организует ресурсный подход к построению программ для X11.

Дело в том, что каждый объект X11 обладает некоторым набором свойств, вроде размера окна, цвета фона или текстового содержимого. Для удобства доступа примитивы Xt, реализованные поверх объектов Xlib, имеют собственные имена (у каждого объекта свое) и фамилии (одинаковые у всех объектов одного класса). Более того, программа, написанная на Xt, имеет карту объектов, в которой указано, какой объект внутри какого находится, и приведены имена объектов и их классов. Посмотреть структуру запущенного X-приложения можно с помощью программы editres ( Commands/Get Tree ). Например, программа xlogo состоит из трех примитивов: xlogo (класс XLogo) и вложенных в него xlogo.xlogo (класс Logo) и shellext (неоконный примитив, класс VendorShellExt). Мало того, свойства этих примитивов можно заменить прямо в работающей программе. Можно, например, на время работы перекрасить фон xlogo в красный цвет.

Xlib, со своей стороны, предоставляет универсальный способ хранить такие настройки в файле. Многие приложения хранят свои настройки по умолчанию в /usr/X11R6/lib/X11/app-defaults/ИмяКласса (в некоторых системах этот каталог перенесен, как и подобает, в /etc/X11 ). ИмяКласса – это имя класса самого главного окна этого приложения. Пользователь может дополнить настройки ресурсов, которые сервер накапливает при старте, при помощи команды xrdb -merge ФайлНастроек или переписать их заново (ключ - load ). Приложению остается только вызвать специальную функцию Xlib, которая считывает настройку с определенным именем из таблиц сервера. Если xrdb не запускалась ни разу (в том числе и в стартовом сценарии), запрос приложения будет направлен не в таблицу сервера, а непосредственно в файл ресурсов .Xdefaults, лежащий в домашнем каталоге. В этом случае для изменения настроек не надо запускать xrdb.

Xt добавляет в эту процедуру иерархию ресурсов. Как это можно наблюдать в editres, при задании свойства ресурса используются четыре конструкции: имя ресурса, имя класса, разделитель " .", означающий, что один ресурс вложен в другой непосредственно, и разделитель " * ", означающий, что ресурс вложен в другой в конце концов (возможно, по цепочке). Например, для задания цвета фона в программе xload можно использовать именование xload.paned.load.background (все по именам). Можно попробовать единым махом изменить цвет фона всех примитивов этой программы, записав в .Xdefaults (или скормив xrdb ) строку вида XLoad*background: midnightblue.

Если в .Xdefaults есть несколько строк, удовлетворяющих имени ресурса, то имена собственные имеют преимущество над классами, а " ." – над " * ". Так что запись вида *Text*background: peachpuff повлияет только на те примитивы класса Text и вложенные в них, для которых нет более строгого указания (например, *Text.background или XConsole*Text*background ). Обратите внимание, как поэтично называются порой цвета в X11! Посмотреть таблицу цветов можно с помощью команды xlscolors.

К сожалению, Xt – все-таки довольно старая библиотека, не во всем следующая новым веяниям в области графического интерфейса. Для быстрой разработки оконных программ нужны разнообразные и мощные инструменты, которые манипулируют понятиями, далеко ушедшими от стандартного "окошко-менюшка-кнопочка". Если такие инструментарии написаны с применением Xt (например, Xm, open Motif, Xaw, Athena Widget), их настройки можно "поселить" в .Xdefaults. Незадача еще и в том, что структуру классов Xt неудобно использовать при программировании на языке C++, а именно на нем сейчас пишется большинство оконных приложений. Так что самые мощные инструментарии для X11 – Qt (The Q Toolkit) и GTK (The GIMP toolkit) – не используют App-defaults.

Рабочий стол

С появлением универсальных высокоуровневых инструментариев стала обретать плоть идея воплощения метафоры рабочего стола, впервые реализованная в системах семейства MacOS. Смысл рабочего стола в том, чтобы предложить принципиально иной способ взаимодействия человека и компьютера – способ, основанный на манипуляции единичными именованными объектами. Каталоги превращаются в "папки с документами", причем каждый тип документов можно "открыть" с помощью специального "документатора". Программы превращаются в эдакие вместилища абстрактных функциональностей: "Internet", "Почта", "Видео" и т. п. рабочий стол особенно необходим человеку, чья область деятельности далека от компьютерного дела, для кого он – не вычислительная машина, а инструмент решения отдельных – типовых и чаще всего непрофильных задач.

Обилие кавычек в приведенном примере наводит на мысль, что внешний вид рабочего стола имеет не много общего с внутренним его устройством и что за этой метафорой должна стоять мощная и хорошо проработанная легенда (см. лекцию 3). На сегодня самой хорошей и непротиворечивой легендой, пожалуй, обладает вышеупомянутый MacOS. Нелишне заметить, что с выходом MacOS X системы этой ветки – исключительно коммерческие – используют для реализации легенды и прочих процедурных ухищрений... ветку BSD, со всеми утилитами, демонами и т. п.! Видимо, среди разработчиков MacOS X нашлись любители скрещивания; эта часть системы даже называется "Дарвин", см. http://developer.apple.com/darwin. Таким образом, рабочий стол сам по себе – совершенная процедурная система, и говорить здесь было бы не о чем, если бы не два важных обстоятельства.

Во-первых, компьютер так уверенно вошел "в каждый дом", что давно уже стал бытовым прибором для игр, чтения электронной почты, просмотра WWW, а в последнее время – музыкальным центром и видеопроигрывателем. Грешно требовать от садящейся за клавиатуру домохозяйки строгого следования принципам проективной системы. Лучше дать им в руки красивую и сравнительно безопасную игрушку, которая способна удовлетворять их бытовые нужды. Таких игрушек для X11 несколько. Две мощные среды "офисного" плана – KDE (основанное на Qt переосмысление коммерческой среды CDE) и Gnome (основанная на GTK) – содержат все необходимое для работы (включая собственные офисные приложения и средства просмотра WWW). Или, например, среда XFCE (основанная также на GTK) – крепко сбитый минималистский вариант CDE, простой в применении, как выдвижной ящик.

Что касается именно офисных приложений, то тут лидером на рынке свободно распространяемых программ является, безусловно, OpenOffice.org ("Открытый офис"). Про него мы много говорить не будем: как и подобает офисным приложениям, интерфейс его компонентов полностью процедурен, а внутренности интересны лишь специалистам. Этот пакет существует для многочисленных систем (включая Windows), он содержит все основные офисные программы и безупречно работает с популярными форматами файлов .doc, .xls, .ppt и прочими.

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

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

  • документация содержится в порядке;
  • работать требуется головой ;
  • не нужно пытаться объять необъятное;
  • человек пожинает плоды только своих действий.
< Лекция 16 || Лекция 17: 123456
Max Akt
Max Akt

Я прохожу курс "Операционная система Unix" и после тестов, вижу в отчете, что этот тест сдало еще 25 человек. Почему так мало, это ведь реально хороший и полезный урок. Здесь естьи теория и практичесские материалы. Сам курс написан хорошо, живым языком. И здесь я получил ответы на вопросы по Linux, которые боялся спросить. Наверное это из-за того, что в названии курса написано не Linux, а Unix и это многих отпугивает.

Andranik Avakian
Andranik Avakian

41. УК РФ и Комментарии (ст. 273)

М. 2000 г. Издательство: ALT Linux, Институт Логики

Уголовный Кодекс РФ и комментарии к нему?

По ссылке открывается сайт документации Linux, раздел Linux Installation and Getting Started