В лекции 7 отмечалось, насколько UNIX не требователен к интерфейсу, когда речь идет об управлении системой. Типичный способ администрирования UNIX-сервера – удаленная работа по сети, причем (спасибо Internet) удалиться от компьютера можно сколь угодно далеко, лишь бы связь была достаточно надежной для терминальной работы. Это означает, что все прочие возможности взаимодействия машины с человеком понимаются системой как ресурс, который следует распределять между пользовательскими задачами так же, как и оперативную память, дисковое пространство или, скажем, ресурсы
Напомним три задачи, которые решает операционная среда относительно ресурсов: унификация, разделение и учет доступа. С унификацией все более или менее понятно: на свете существует множество графических устройств, управление которыми на низком уровне – задача совсем не для пользователя, тем более что каждый вид устройства управляется по-своему.
Выходит, что пользователю этого ресурса недостаточно представлять графический адаптер как большую страницу видеопамяти, частично отображаемую на устройстве вывода – мониторе: ведь пользователю диска мало представлять его в виде массива секторов! Разница в том, что этого было бы недостаточно и самой системе, так что в UNIX введено понятие файловой системы, объекты которой значительно сложнее, чем "сектор" или "диск". А что касается графики – у UNIX нет ни предпочтений, ни особых видов на эти способности машины. Значит, со стороны системы разумно организовать именно доступ к устройству, а требуемую объектную модель пусть реализует пользовательская задача.
Такая задача будет, конечно, отличаться от пользовательских утилит и программных продуктов. По своим правам она скорее будет сродни демонам. Она получит единоличный доступ к устройству, а по отношению к пользователю сама окажется операционной средой, организуя на свой лад унификацию, разделение и учет доступа к графическим ресурсам в объектной модели. Поэтому весь комплекс программ для работы с графическими устройствами принято называть
Неизбежно удвоение функций: система занимается аутентификацией и авторизацией – и
Заметим: из того, что ). Но опять-таки, из проективности системы не следует проективность всех ее приложений. Даже наоборот: проективная система – универсальный инструментарий для решения любых классов задач, так что именно с ее помощью должна хорошо решаться задача построения специализированной процедурной системы.
Субъект оконной системы – не пользователь, что сидит за монитором (все равно он только один), а
Как-то выделять окно, получившее фокус, а также предусматривать алгоритм перемещения окна по экрану или изменения глубины его "залегания" графическая система вовсе не обязана. Главное – предоставить такую возможность, а уж кто возьмет на себя труд эту возможность воплощать и как это будет выглядеть – вопрос частный, его в разных случаях лучше решать по-разному.
В начале 80-х существовала некая "Операционная система V" (The V System), а при ней – оконная подсистема W (следующая буква алфавита после V, а заодно – первая буква слова Window). К 1984 году совместными усилиями Массачусетского технологического института (MIT) и исследовательского отделения Digital Equipment Corporation (DEC) эту оконную подсистему сделали системно-независимой (crossplatforming, или, в американском стиле, X-platforming). Соответственно и название проекту дали – The X Window System (следующая буква алфавита после W. Обратите внимание на то, что все заглавные буквы X в этой лекции – латинские, а не русские Х). Проект был настолько наукоемок и настолько полно охватывал тогдашнюю область задач, связанную с графикой, что ему так и не возникло никаких серьезных альтернатив. X Window System (или X11) постоянно развивается, адаптируется к современным графическим устройствам и новым возможностям графического вывода. X11 использует традиционную оконную модель, помноженную на традиционную модель операционной среды, в которой в роли
Задачи, которые обращаются к
Клиент передает серверу
Итак,
В отличие от машины с
Было бы странно, если бы xhost, управляющая списком адресов, с которых разрешен доступ к
Если же мы не доверяем каждому пользователю удаленного компьютера, которому тот разрешил запускать
X11 авторизует не пользователя, а каждое отдельное обращение к серверу с
Однако часто встречается и другая ситуация: login: вводит (с графического устройства ввода) входное имя и пароль, отдает системе, та аутентифицирует пользователя и запускает нужные ему xdm – X Display Manager – и его аналоги) запускается, конечно, от лица суперпользователя, причем с удаленного компьютера, а не с машины xdm выдать аутентификационное окошко.
Одно из многих достоинств X-протокола – в том, что Xprt, который выводит на принтер все Xvnc – Xvnc можно устраивать показ работы какого-нибудь
Виртуальный sshd можно воспользоваться, если сообщение по X-протоколу между двумя компьютерами невозможно (запрещено межсетевым экраном) или вы считаете такое соединение небезопасным (в некоторых случаях ssh и невиртуальный ssh ).
Наиболее распространенная версия реализации X11R6 называется
Требование гибкости привело к тому, что
Расширения называются так еще и потому, что их возможности расширяют сам протокол X11R6. Вместо того чтобы изменять протокол всякий раз, когда в голову придет очередная еще не реализованная в нем возможность, создатели X11 предусмотрели стандартный способ дополнения этого протокола. При этом
В X11/ xdm, занимающийся аутентификацией. Подобно демону, он постоянно находится в памяти, пока пользователь неактивен, и, подобно демону, обладает многими привилегиями по сравнению с пользовательскими процессами. Настоящий демон (притом сетевой) – xfs, сервер шрифтов для X11. Он особенно удобен для X-терминалов и вообще для централизованной настройки шрифтов. Смысл сервера шрифтов в том, чтобы xfs.
Как полагается, в xvidtune, с помощью которой можно подобрать наилучший режим работы сервера с имеющимися видеокартой и монитором, или xf86cfg – утилита начальной настройки всей X, Xserver, XF86Config.
xkill, xman ), либо привязаны к определенным сторонам xwininfo и ей подобные), настраивают сервер ( xset ), показывают шрифты ( xfd и xfontsel ) и т. п. Есть также простейшие программы, типичные для графической среды, вроде xcalc, xedit, xmag и других. Ими вполне можно пользоваться, но стоит иметь в виду, что
Как и полагается проективной системе, UNIX включает богатый инструментарий для работы с X11: библиотеки процедур, решающие различные классы задач, специализированные языки программирования, системы разработки. Так что все прогрессивное человечество не обделило X11 вниманием: существует масса программных продуктов, использующих X11R6. Так, в дистрибутиве FreeBSD 5.2.1 их более 600 (при этом официально работающих FreeBSD пакетов под X11 – более 4000), а в дистрибутиве ALT Linux Master 2.2 – более 450 одних только пакетов, использующих X11 напрямую.
Программный продукт, использующий X11, называется приложением (application, другое значение – "применение"). Если считать, что сами графические возможности уже реализованы
При запуске способ_доступа:номер_сервера.номер_экрана. Под способом доступа может подразумеваться сеть (тогда используется сетевой адрес машины с Ctrl+Alt+F1, Ctrl+Alt+F2 и т. д. В системе может быть несколько
Чаще всего переменная DISPLAY равна ":0": способ доступа – по умолчанию, нулевой сервер, нулевой экран. Если вы воспользовались ssh -X, то увидите в этой переменной что-нибудь наподобие "myhost.mydomain.net:10.0:" доступ по IP-адресу, десятый сервер на удаленной машине и нулевой экран.
Мы уже упоминали, что
Ответ очевиден: этим должна заниматься программа, основная задача которой состоит в том, чтобы отслеживать перекрытие, изменять размер, двигать, превращать в иконку и т. д. По совместительству эта же программа будет рисовать при окнах разные украшения: рамочки, заголовки, кнопки и меню управления – словом, делать все, что потребно для организации логики управления окнами. Этот
Окноводом может стать каждый! Правда, для этого нужно многое уметь: кроме перечисленного выше, еще надо обрабатывать практически все
Выбор окновода на свой вкус – занятие непростое. Мы советуем просто соблюдать меру, сообразуясь с тем, для чего используется оконная система: обилие декораций отвлекает от работы (а если они вдобавок шевелятся?), а минимализм ее усложняет. Имейте в виду, что чем причудливее и многообразнее возможности окновода, тем труднее будет его полностью настроить именно под себя. Скорее всего, вы просто согласитесь пользоваться уже настроенными – общеупотребительными – возможностями, не доводя их до совершенства. Впрочем, современному человеку, приученному к готовому платью и еде с конвейера, не привыкать...
С графикой или без, основным интерфейсом управления UNIX была и остается командная строка. X11, предлагая иной способ взаимодействия с компьютером, не должна лишать пользователя возможности работать с самой системой испытанным и эффективным методом – через терминал.
Задача предоставить пользователю X11 командную строку решается довольно легко. Нужно завести screen (см. лекцию 8): обмениваться символами с его pty -стороной, а к другой стороне, ttyp, можно подключить пользовательский командный интерпретатор.
Общее название таких программ – эмулятор терминала для X11, konsole, rxvt, gterm и т. п.) со способом организации рабочей станции (так называемый "X-терминал"): термины эти созвучны, но относятся к разным областям знаний. Нередко бывает, что на экране X-терминала (компьютера) есть окно терминала X11 (программы
Кстати сказать, возможность копирования текста при помощи мыши – свойство не только xcutsel предоставляет возможность работы с буфером обмена (cutbuffer), в котором текст может храниться сколь угодно долго.
Для работы в X11 пользователю необходимо запустить сразу несколько приложений. В самом деле, кроме окновода нужен хотя бы один xload или настенных часов xclock. Свойства самого xset (можно поменять курсор, звуковой сигнал, переименовать кнопки мыши). Одним словом, пользователю, как правило, нужен небольшой стартовый сценарий, который запускался бы вместе с
С другой стороны, сервер хорошо бы останавливать, когда он больше не используется. Это, конечно, относится к схеме без xdm: пользователь работает с терминала, потом запускает Ctrl+Alt+Backspace ), во-первых, доступен только на
Если запускать не сам startx, то алгоритм работы будет такой. Сначала запустится .xinitrc, находящийся в домашнем каталоге пользователя, а если такого нет – системный /usr/X11R6/lib/X11/xinit/xinitrc. Предполагается, что .xinitrc. Когда все команды из .xinitrc отработают, его выполнение завершится, а вместе с ним завершится и работа сервера. Поэтому рекомендуется все .xinitrc, кроме последнего, запускать в фоне, чтобы командный интерпретатор не дожидался окончания их работы. Последней программой в стартовом сценарии может быть xinitrc, или ^D запущенному в нем shell, а окновод обычно имеет какую-нибудь кнопочку или меню Exit. Программа, с завершением которой заканчивается сеанс X11, называется
На самом деле xdm. Несмотря на то что пользователи взаимодействуют только с
Приложения X11 создаются с помощью разнообразных готовых инструментов. Большая их часть разрабатывается независимыми авторами по всему миру (это общее свойство свободного ПО), но библиотека самого низкого уровня, X Lib, и несколько более высокоуровневых с давних пор включаются в основной дистрибутив X11. Из них наиболее примечательна X Toolkit (Xt), организующая из стандартных окон X11 так называемые
Дело в том, что каждый объект X11 обладает некоторым набором свойств, вроде размера окна, цвета фона или текстового содержимого. Для удобства доступа примитивы Xt, реализованные поверх объектов Xlib, имеют собственные имена (у каждого объекта свое) и фамилии (одинаковые у всех объектов одного класса). Более того, программа, написанная на Xt, имеет карту объектов, в которой указано, какой объект внутри какого находится, и приведены имена объектов и их классов. Посмотреть структуру запущенного 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.
.", означающий, что один ресурс вложен в другой непосредственно, и разделитель " * ", означающий, что ресурс вложен в другой в конце концов (возможно, по цепочке). Например, для задания цвета фона в программе xload можно использовать именование xload.paned.load.background (все по именам). Можно попробовать единым махом изменить цвет фона всех примитивов этой программы, записав в .Xdefaults (или скормив xrdb ) строку вида XLoad*background: midnightblue.
Если в ." – над " * ". Так что запись вида *Text*background: peachpuff повлияет только на те примитивы класса Text и вложенные в них, для которых нет более строгого указания (например, *Text.background или XConsole*Text*background ). Обратите внимание, как поэтично называются порой цвета в X11! Посмотреть таблицу цветов можно с помощью команды xlscolors.
К сожалению, Xt – все-таки довольно старая библиотека, не во всем следующая новым веяниям в области графического интерфейса. Для быстрой разработки оконных программ нужны разнообразные и мощные инструменты, которые манипулируют понятиями, далеко ушедшими от стандартного "окошко-менюшка-кнопочка". Если такие инструментарии написаны с применением Xt (например, Xm, open .Xdefaults. Незадача еще и в том, что структуру классов Xt неудобно использовать при программировании на языке C++, а именно на нем сейчас пишется большинство оконных приложений. Так что самые мощные инструментарии для X11 – Qt (The Q Toolkit) и GTK (The GIMP toolkit) – не используют App-defaults.
С появлением универсальных высокоуровневых инструментариев стала обретать плоть идея воплощения метафоры MacOS. Смысл
Обилие кавычек в приведенном примере наводит на мысль, что внешний вид
Во-первых, компьютер так уверенно вошел "в каждый дом", что давно уже стал бытовым прибором для игр, чтения электронной почты, просмотра WWW, а в последнее время – музыкальным центром и видеопроигрывателем. Грешно требовать от садящейся за клавиатуру домохозяйки строгого следования принципам проективной системы. Лучше дать им в руки красивую и сравнительно безопасную игрушку, которая способна удовлетворять их бытовые нужды. Таких игрушек для X11 несколько. Две мощные среды "офисного" плана – KDE (основанное на Qt переосмысление коммерческой среды CDE) и Gnome (основанная на GTK) – содержат все необходимое для работы (включая собственные офисные приложения и средства просмотра WWW). Или, например, среда XFCE (основанная также на GTK) – крепко сбитый минималистский вариант CDE, простой в применении, как выдвижной ящик.
Что касается именно офисных приложений, то тут лидером на рынке свободно распространяемых программ является, безусловно, OpenOffice.org ("Открытый офис"). Про него мы много говорить не будем: как и подобает офисным приложениям, интерфейс его компонентов полностью процедурен, а внутренности интересны лишь специалистам. Этот пакет существует для многочисленных систем (включая Windows), он содержит все основные офисные программы и безупречно работает с популярными форматами файлов .doc, .xls, .ppt и прочими.
Во-вторых, очень трудно провести границу, где заканчиваются обязанности окновода и начинаются манипуляции FVWM2 (множество функций), и Enlightenment (настоящая игрушка), и WindowMaker, и некоторые другие. Человеку, проводящему рабочее время за экраном компьютера, важен комфорт на рабочем месте, поэтому всякая мелочь или ее отсутствие может иметь решающее значение при выборе того или иного окновода.
С этой точки зрения, чем больше система будет уметь, тем лучше для профессионала – лишь бы в вопросах взаимодействия с ней соблюдались проективные принципы:
| Синтаксис языка | sh, Bourne | csh, C | ksh, Bourne* | posix, sh, Bourne* | (d)ash, Bourne* | bash, Bourne# | tcsh, C# | zsh, Bourne# |
|---|---|---|---|---|---|---|---|---|
| Программирование | + | + | + | + | + | + | + | + |
| Подстановка | + | + | + | + | + | * | * | # |
| Модификаторы поведения | - | - | - | - | - | + | + | # |
| Арифметические операции | - | + | + | + | + | + | + | # |
| Массивы | - | + | - | - | - | + | + | + |
| Управление заданиями | - | + | + | + | + | + | + | + |
| Редактор командной строки | unix | ed | rdline | tcshcle | zle | |||
| Обработка строк-подсказок | - | - | - | - | - | + | # | # |
| Работа с | - | ed | + | + | + | # | # | # |
| Псевдонимы | - | + | + | + | + | + | + | + |
| Переназначение клавиш | - | - | dumb | + | + | rdline | progr | progr |
| Достраивание | - | file | file | - | - | + | + | progr |
| Модульность | - | - | - | - | - | - | - | + |
Пояснения к таблице.
| - | отсутствует |
| + | реализовано |
| * | реализовано, доработано и улучшено |
| # | значительно доработано, обладает большими возможностями |
| unix | редактирование средствами |
| ed | построчное редактирование в стиле ed |
| vi | экранное редактирование в стиле vi |
| экранное редактирование в стиле emacs | |
| rdline | основано на возможностях библиотеки readline (расширенный стиль emacs + vi) |
| tcshcle | собственная библиотека tcsh: tcshell command line editor (расширенный стиль emacs + vi) |
| zle | собственная библиотека zsh: Z line editor (расширенный стиль emacs + vi) |
| dumb | переназначение в ksh очень урезано и организовано с помощью псевдонимов специального вида |
| progr | программируется средствами языка |
| file | достраивание только имён файлов |
В лекции 7 отмечалось, насколько UNIX не требователен к интерфейсу, когда речь идет об управлении системой. Типичный способ администрирования UNIX-сервера – удаленная работа по сети, причем (спасибо Internet) удалиться от компьютера можно сколь угодно далеко, лишь бы связь была достаточно надежной для терминальной работы. Это означает, что все прочие возможности взаимодействия машины с человеком понимаются системой как ресурс, который следует распределять между пользовательскими задачами так же, как и оперативную память, дисковое пространство или, скажем, ресурсы
Напомним три задачи, которые решает операционная среда относительно ресурсов: унификация, разделение и учет доступа. С унификацией все более или менее понятно: на свете существует множество графических устройств, управление которыми на низком уровне – задача совсем не для пользователя, тем более что каждый вид устройства управляется по-своему.
Выходит, что пользователю этого ресурса недостаточно представлять графический адаптер как большую страницу видеопамяти, частично отображаемую на устройстве вывода – мониторе: ведь пользователю диска мало представлять его в виде массива секторов! Разница в том, что этого было бы недостаточно и самой системе, так что в UNIX введено понятие файловой системы, объекты которой значительно сложнее, чем "сектор" или "диск". А что касается графики – у UNIX нет ни предпочтений, ни особых видов на эти способности машины. Значит, со стороны системы разумно организовать именно доступ к устройству, а требуемую объектную модель пусть реализует пользовательская задача.
Такая задача будет, конечно, отличаться от пользовательских утилит и программных продуктов. По своим правам она скорее будет сродни демонам. Она получит единоличный доступ к устройству, а по отношению к пользователю сама окажется операционной средой, организуя на свой лад унификацию, разделение и учет доступа к графическим ресурсам в объектной модели. Поэтому весь комплекс программ для работы с графическими устройствами принято называть
Неизбежно удвоение функций: система занимается аутентификацией и авторизацией – и
Заметим: из того, что ). Но опять-таки, из проективности системы не следует проективность всех ее приложений. Даже наоборот: проективная система – универсальный инструментарий для решения любых классов задач, так что именно с ее помощью должна хорошо решаться задача построения специализированной процедурной системы.
Субъект оконной системы – не пользователь, что сидит за монитором (все равно он только один), а
Как-то выделять окно, получившее фокус, а также предусматривать алгоритм перемещения окна по экрану или изменения глубины его "залегания" графическая система вовсе не обязана. Главное – предоставить такую возможность, а уж кто возьмет на себя труд эту возможность воплощать и как это будет выглядеть – вопрос частный, его в разных случаях лучше решать по-разному.
В начале 80-х существовала некая "Операционная система V" (The V System), а при ней – оконная подсистема W (следующая буква алфавита после V, а заодно – первая буква слова Window). К 1984 году совместными усилиями Массачусетского технологического института (MIT) и исследовательского отделения Digital Equipment Corporation (DEC) эту оконную подсистему сделали системно-независимой (crossplatforming, или, в американском стиле, X-platforming). Соответственно и название проекту дали – The X Window System (следующая буква алфавита после W. Обратите внимание на то, что все заглавные буквы X в этой лекции – латинские, а не русские Х). Проект был настолько наукоемок и настолько полно охватывал тогдашнюю область задач, связанную с графикой, что ему так и не возникло никаких серьезных альтернатив. X Window System (или X11) постоянно развивается, адаптируется к современным графическим устройствам и новым возможностям графического вывода. X11 использует традиционную оконную модель, помноженную на традиционную модель операционной среды, в которой в роли
Задачи, которые обращаются к
Клиент передает серверу
Итак,
В отличие от машины с
Было бы странно, если бы xhost, управляющая списком адресов, с которых разрешен доступ к
Если же мы не доверяем каждому пользователю удаленного компьютера, которому тот разрешил запускать
X11 авторизует не пользователя, а каждое отдельное обращение к серверу с
Однако часто встречается и другая ситуация: login: вводит (с графического устройства ввода) входное имя и пароль, отдает системе, та аутентифицирует пользователя и запускает нужные ему xdm – X Display Manager – и его аналоги) запускается, конечно, от лица суперпользователя, причем с удаленного компьютера, а не с машины xdm выдать аутентификационное окошко.
Одно из многих достоинств X-протокола – в том, что Xprt, который выводит на принтер все Xvnc – Xvnc можно устраивать показ работы какого-нибудь
Виртуальный sshd можно воспользоваться, если сообщение по X-протоколу между двумя компьютерами невозможно (запрещено межсетевым экраном) или вы считаете такое соединение небезопасным (в некоторых случаях ssh и невиртуальный ssh ).
Наиболее распространенная версия реализации X11R6 называется
Требование гибкости привело к тому, что
Расширения называются так еще и потому, что их возможности расширяют сам протокол X11R6. Вместо того чтобы изменять протокол всякий раз, когда в голову придет очередная еще не реализованная в нем возможность, создатели X11 предусмотрели стандартный способ дополнения этого протокола. При этом
В X11/ xdm, занимающийся аутентификацией. Подобно демону, он постоянно находится в памяти, пока пользователь неактивен, и, подобно демону, обладает многими привилегиями по сравнению с пользовательскими процессами. Настоящий демон (притом сетевой) – xfs, сервер шрифтов для X11. Он особенно удобен для X-терминалов и вообще для централизованной настройки шрифтов. Смысл сервера шрифтов в том, чтобы xfs.
Как полагается, в xvidtune, с помощью которой можно подобрать наилучший режим работы сервера с имеющимися видеокартой и монитором, или xf86cfg – утилита начальной настройки всей X, Xserver, XF86Config.
xkill, xman ), либо привязаны к определенным сторонам xwininfo и ей подобные), настраивают сервер ( xset ), показывают шрифты ( xfd и xfontsel ) и т. п. Есть также простейшие программы, типичные для графической среды, вроде xcalc, xedit, xmag и других. Ими вполне можно пользоваться, но стоит иметь в виду, что
Как и полагается проективной системе, UNIX включает богатый инструментарий для работы с X11: библиотеки процедур, решающие различные классы задач, специализированные языки программирования, системы разработки. Так что все прогрессивное человечество не обделило X11 вниманием: существует масса программных продуктов, использующих X11R6. Так, в дистрибутиве FreeBSD 5.2.1 их более 600 (при этом официально работающих FreeBSD пакетов под X11 – более 4000), а в дистрибутиве ALT Linux Master 2.2 – более 450 одних только пакетов, использующих X11 напрямую.
Программный продукт, использующий X11, называется приложением (application, другое значение – "применение"). Если считать, что сами графические возможности уже реализованы
При запуске способ_доступа:номер_сервера.номер_экрана. Под способом доступа может подразумеваться сеть (тогда используется сетевой адрес машины с Ctrl+Alt+F1, Ctrl+Alt+F2 и т. д. В системе может быть несколько
Чаще всего переменная DISPLAY равна ":0": способ доступа – по умолчанию, нулевой сервер, нулевой экран. Если вы воспользовались ssh -X, то увидите в этой переменной что-нибудь наподобие "myhost.mydomain.net:10.0:" доступ по IP-адресу, десятый сервер на удаленной машине и нулевой экран.
Мы уже упоминали, что
Ответ очевиден: этим должна заниматься программа, основная задача которой состоит в том, чтобы отслеживать перекрытие, изменять размер, двигать, превращать в иконку и т. д. По совместительству эта же программа будет рисовать при окнах разные украшения: рамочки, заголовки, кнопки и меню управления – словом, делать все, что потребно для организации логики управления окнами. Этот
Окноводом может стать каждый! Правда, для этого нужно многое уметь: кроме перечисленного выше, еще надо обрабатывать практически все
Выбор окновода на свой вкус – занятие непростое. Мы советуем просто соблюдать меру, сообразуясь с тем, для чего используется оконная система: обилие декораций отвлекает от работы (а если они вдобавок шевелятся?), а минимализм ее усложняет. Имейте в виду, что чем причудливее и многообразнее возможности окновода, тем труднее будет его полностью настроить именно под себя. Скорее всего, вы просто согласитесь пользоваться уже настроенными – общеупотребительными – возможностями, не доводя их до совершенства. Впрочем, современному человеку, приученному к готовому платью и еде с конвейера, не привыкать...
С графикой или без, основным интерфейсом управления UNIX была и остается командная строка. X11, предлагая иной способ взаимодействия с компьютером, не должна лишать пользователя возможности работать с самой системой испытанным и эффективным методом – через терминал.
Задача предоставить пользователю X11 командную строку решается довольно легко. Нужно завести screen (см. лекцию 8): обмениваться символами с его pty -стороной, а к другой стороне, ttyp, можно подключить пользовательский командный интерпретатор.
Общее название таких программ – эмулятор терминала для X11, konsole, rxvt, gterm и т. п.) со способом организации рабочей станции (так называемый "X-терминал"): термины эти созвучны, но относятся к разным областям знаний. Нередко бывает, что на экране X-терминала (компьютера) есть окно терминала X11 (программы
Кстати сказать, возможность копирования текста при помощи мыши – свойство не только xcutsel предоставляет возможность работы с буфером обмена (cutbuffer), в котором текст может храниться сколь угодно долго.
Для работы в X11 пользователю необходимо запустить сразу несколько приложений. В самом деле, кроме окновода нужен хотя бы один xload или настенных часов xclock. Свойства самого xset (можно поменять курсор, звуковой сигнал, переименовать кнопки мыши). Одним словом, пользователю, как правило, нужен небольшой стартовый сценарий, который запускался бы вместе с
С другой стороны, сервер хорошо бы останавливать, когда он больше не используется. Это, конечно, относится к схеме без xdm: пользователь работает с терминала, потом запускает Ctrl+Alt+Backspace ), во-первых, доступен только на
Если запускать не сам startx, то алгоритм работы будет такой. Сначала запустится .xinitrc, находящийся в домашнем каталоге пользователя, а если такого нет – системный /usr/X11R6/lib/X11/xinit/xinitrc. Предполагается, что .xinitrc. Когда все команды из .xinitrc отработают, его выполнение завершится, а вместе с ним завершится и работа сервера. Поэтому рекомендуется все .xinitrc, кроме последнего, запускать в фоне, чтобы командный интерпретатор не дожидался окончания их работы. Последней программой в стартовом сценарии может быть xinitrc, или ^D запущенному в нем shell, а окновод обычно имеет какую-нибудь кнопочку или меню Exit. Программа, с завершением которой заканчивается сеанс X11, называется
На самом деле xdm. Несмотря на то что пользователи взаимодействуют только с
Приложения X11 создаются с помощью разнообразных готовых инструментов. Большая их часть разрабатывается независимыми авторами по всему миру (это общее свойство свободного ПО), но библиотека самого низкого уровня, X Lib, и несколько более высокоуровневых с давних пор включаются в основной дистрибутив X11. Из них наиболее примечательна X Toolkit (Xt), организующая из стандартных окон X11 так называемые
Дело в том, что каждый объект X11 обладает некоторым набором свойств, вроде размера окна, цвета фона или текстового содержимого. Для удобства доступа примитивы Xt, реализованные поверх объектов Xlib, имеют собственные имена (у каждого объекта свое) и фамилии (одинаковые у всех объектов одного класса). Более того, программа, написанная на Xt, имеет карту объектов, в которой указано, какой объект внутри какого находится, и приведены имена объектов и их классов. Посмотреть структуру запущенного 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.
.", означающий, что один ресурс вложен в другой непосредственно, и разделитель " * ", означающий, что ресурс вложен в другой в конце концов (возможно, по цепочке). Например, для задания цвета фона в программе xload можно использовать именование xload.paned.load.background (все по именам). Можно попробовать единым махом изменить цвет фона всех примитивов этой программы, записав в .Xdefaults (или скормив xrdb ) строку вида XLoad*background: midnightblue.
Если в ." – над " * ". Так что запись вида *Text*background: peachpuff повлияет только на те примитивы класса Text и вложенные в них, для которых нет более строгого указания (например, *Text.background или XConsole*Text*background ). Обратите внимание, как поэтично называются порой цвета в X11! Посмотреть таблицу цветов можно с помощью команды xlscolors.
К сожалению, Xt – все-таки довольно старая библиотека, не во всем следующая новым веяниям в области графического интерфейса. Для быстрой разработки оконных программ нужны разнообразные и мощные инструменты, которые манипулируют понятиями, далеко ушедшими от стандартного "окошко-менюшка-кнопочка". Если такие инструментарии написаны с применением Xt (например, Xm, open .Xdefaults. Незадача еще и в том, что структуру классов Xt неудобно использовать при программировании на языке C++, а именно на нем сейчас пишется большинство оконных приложений. Так что самые мощные инструментарии для X11 – Qt (The Q Toolkit) и GTK (The GIMP toolkit) – не используют App-defaults.
С появлением универсальных высокоуровневых инструментариев стала обретать плоть идея воплощения метафоры MacOS. Смысл
Обилие кавычек в приведенном примере наводит на мысль, что внешний вид
Во-первых, компьютер так уверенно вошел "в каждый дом", что давно уже стал бытовым прибором для игр, чтения электронной почты, просмотра WWW, а в последнее время – музыкальным центром и видеопроигрывателем. Грешно требовать от садящейся за клавиатуру домохозяйки строгого следования принципам проективной системы. Лучше дать им в руки красивую и сравнительно безопасную игрушку, которая способна удовлетворять их бытовые нужды. Таких игрушек для X11 несколько. Две мощные среды "офисного" плана – KDE (основанное на Qt переосмысление коммерческой среды CDE) и Gnome (основанная на GTK) – содержат все необходимое для работы (включая собственные офисные приложения и средства просмотра WWW). Или, например, среда XFCE (основанная также на GTK) – крепко сбитый минималистский вариант CDE, простой в применении, как выдвижной ящик.
Что касается именно офисных приложений, то тут лидером на рынке свободно распространяемых программ является, безусловно, OpenOffice.org ("Открытый офис"). Про него мы много говорить не будем: как и подобает офисным приложениям, интерфейс его компонентов полностью процедурен, а внутренности интересны лишь специалистам. Этот пакет существует для многочисленных систем (включая Windows), он содержит все основные офисные программы и безупречно работает с популярными форматами файлов .doc, .xls, .ppt и прочими.
Во-вторых, очень трудно провести границу, где заканчиваются обязанности окновода и начинаются манипуляции FVWM2 (множество функций), и Enlightenment (настоящая игрушка), и WindowMaker, и некоторые другие. Человеку, проводящему рабочее время за экраном компьютера, важен комфорт на рабочем месте, поэтому всякая мелочь или ее отсутствие может иметь решающее значение при выборе того или иного окновода.
С этой точки зрения, чем больше система будет уметь, тем лучше для профессионала – лишь бы в вопросах взаимодействия с ней соблюдались проективные принципы:
| Синтаксис языка | sh, Bourne | csh, C | ksh, Bourne* | posix, sh, Bourne* | (d)ash, Bourne* | bash, Bourne# | tcsh, C# | zsh, Bourne# |
|---|---|---|---|---|---|---|---|---|
| Программирование | + | + | + | + | + | + | + | + |
| Подстановка | + | + | + | + | + | * | * | # |
| Модификаторы поведения | - | - | - | - | - | + | + | # |
| Арифметические операции | - | + | + | + | + | + | + | # |
| Массивы | - | + | - | - | - | + | + | + |
| Управление заданиями | - | + | + | + | + | + | + | + |
| Редактор командной строки | unix | ed | rdline | tcshcle | zle | |||
| Обработка строк-подсказок | - | - | - | - | - | + | # | # |
| Работа с | - | ed | + | + | + | # | # | # |
| Псевдонимы | - | + | + | + | + | + | + | + |
| Переназначение клавиш | - | - | dumb | + | + | rdline | progr | progr |
| Достраивание | - | file | file | - | - | + | + | progr |
| Модульность | - | - | - | - | - | - | - | + |
Пояснения к таблице.
| - | отсутствует |
| + | реализовано |
| * | реализовано, доработано и улучшено |
| # | значительно доработано, обладает большими возможностями |
| unix | редактирование средствами |
| ed | построчное редактирование в стиле ed |
| vi | экранное редактирование в стиле vi |
| экранное редактирование в стиле emacs | |
| rdline | основано на возможностях библиотеки readline (расширенный стиль emacs + vi) |
| tcshcle | собственная библиотека tcsh: tcshell command line editor (расширенный стиль emacs + vi) |
| zle | собственная библиотека zsh: Z line editor (расширенный стиль emacs + vi) |
| dumb | переназначение в ksh очень урезано и организовано с помощью псевдонимов специального вида |
| progr | программируется средствами языка |
| file | достраивание только имён файлов |
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.