Графический интерфейс X-Window, часть 2


Стандартные ключи для программ под X; цвета, шрифты, геометрия

Как указывать ключи X-программам

В отличие от программ командной строки, у которых бывают однобуквенные ключи, которые можно группировать вместе (ls -laR) и длинные ключи, начинающиеся с двойного минуса (ls --help), у программ под X бывают только длинные ключи, причем начинаются они всегда с одиночного символа "-".

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

Стандартные ключи X-программ
КлючНазначение
-helpВыдать краткую справку по ключам программы
-display дисплейЗапустить программу на указанный дисплей
-fg цвет
-foreground цвет
Цвет букв ("цвет переднего плана")
-bg цвет
-background цвет
Цвет фона
-fn шрифт
-font шрифт
Основной шрифт
-geometry геометрияСделать окно указанного размера и/или поместить его в указанном месте на экране
-iconicЗапустить программу сразу "свернутой" в пиктограмму

Описание всех стандартных ключей можно найти в man-странице по X.

Цвета

Что такое цвета в X


Поскольку X-Window работает с дисплеями, у которых цвет кодируется триплетом RGB (Red, Green, Blue), то использует именно такое представление. Цвета можно указывать одним из двух способов: либо триплетом RGB в шестнадцатеричном виде, либо по имени.

При первом способе цвет указывается как "#RRGGBB" -- символ "решетка" и затем шесть шестнадцатиричных цифр -- по две цифры на красный, зеленый и синий. Например, "#FFFFFF" -- белый, "#000000" -- черный, "#CC00CC" -- темно-фиолетовый, а "#92FF41" -- желто-зеленый.

Во втором случае указывается английское название -- "white", "black", "red", "darkblue", "maroon" и т.д.

Замечание. Те, кто знаком с HTML, сразу заметят, что в X цвета указываются точно так же. Дело в том, что первоначально World Wide Web создавалась именно под платформу X-Window, и способ указания цветов перешел из X в HTML практически без изменений.

Как узнать, какие есть цвета


      white
      powderblue
      lightblue
      blue
      darkblue
      steelblue4
      steelblue1
      moccasin
      maroon

X "знает" по именам огромное количество цветов -- несколько сотен. В их число входят "стандартные" цвета типа white, blue, green, их подвиды типа lightblue, darkblue, и даже градации яркости -- SteelBlue1 .. SteelBlue4, а также "экзотика" типа moccasin и PowderBlue. Многие из этих цветов на глаз практически не различимы (а некоторые и просто фигурируют под разными названиями -- например, cyan и cyan1).

Конкретный набор цветов определяется настройкой конкретного X-сервера, но основные цвета (такие, как red, green, black) есть всегда.

Заглавные и маленькие буквы в именах цветов не различаются.

Посмотреть список цветов (и их определений) можно командой showrgb. Она печатает R-, G- и B-компоненты цвета (в десятичной системе) и его имя. Поскольку showrgb выводит на экран огромное количество информации, лучше всего перенаправить вывод команде less.

Замечание. В принципе можно настроить X-сервер так, чтобы он, например, цветом "red" считал "#0000FF", т.е. синий.

Как указывать цвета программам


Xterm, запущенный командой
"xterm -bg darkblue -fg #C0C0C0"

Ключи "-fg" и "-bg" позволяют указывать программам, какие цвета использовать для букв и для фона.

Единственная проблема -- в каждой программе используется много разных элементов, у которых по умолчанию могут быть разные цвета. А эти два ключика могут указывать только один цвет сразу для всех элементов. Но для несложных программ (особенно на основе Athena Widgets, например xterm) это вполне приемлемо.

Замечание. Аналогичная проблема существует и со шрифтами. В X-Window есть средство для более тонкой настройки (причем не обязательно из командной строки), именуемое ресурсами. Но вследствие чрезмерной сложности этой темы мы ее касаться не будем.

Кроме того, многие программы позволяют менять цвета прямо изнутри -- в разнообразных меню настройки.

Шрифты

Что такое шрифты в X


Для сравнения рассмотрим, как именуются шрифты в Windows. Там для однозначного указания шрифта служат три параметра: гарнитура, начертание и размер. Например, Arial Bold 12pt (Гарнитура Arial, жирный, размер 12 пунктов).

В X-Window все устроено сложнее. Имя шрифта здесь состоит из 14 (!) компонентов, разделенных дефисами. Пример:

-b&h-lucida-bold-r-normal-sans-12-120-75-75-p-79-iso8859-1

Общий формат такой:

-fndry-fmly-wght-slant-sWdth-adstyl-pxlsz-ptSz-resx-resy-spc-avgWdth-rgstry-encdng

Поля fndry и fmly -- это фирма-создатель и гарнитура шрифта -- аналог "гарнитуры" в Windows (но в X может одновременно использоваться, например, два разных шрифта Times от разных фирм).

Поля wght, slant и sWdth -- это соответственно "жирность" (вес) шрифта, наклонность и ширина -- аналог "начертания" в Windows.

Поле pxlsz указывает размер шрифта в пунктах.

Поле spc определяет вид шрифта -- моноширинный (m -- monospace) или пропорциональный (p -- proportional).

Пара полей rgstry и encdng задает кодировку шрифта -- например, "iso8859-1" или "koi8-r".

Остальные поля менее существенны, поэтому их рассматривать не будем.


Обычно не требуется указывать шрифт с полной конкретностью -- т.е. перечислять все его 14 параметров, а нужен, к примеру, "моноширинный, прямой, 12 пунктов". В этом случае достаточно воспользоваться шаблоном -- указать лишь требуемые параметры, а в остальных позициях -- "*":

-*-*-*-r-*-*-12-*-*-*-m-*-*-*

X-Window автоматически подберет первый подходящий шрифт. Это дает определенную гибкость. Во-первых, программа "просит" не слишком конкретно, и ей подберут какой-нибудь из имеющихся (зачастую это совершенно разные шрифты, но с одинаковыми параметрами, а потому равно подходящие). Во-вторых, это позволяет, например, заставить программу использовать вместо европейских шрифтов русские -- достаточно сделать русские шрифты "более первыми".

Хотя такой "детальный" способ очень удобен для программ, человеку запоминать и набирать такие длинные имена наоборот чрезвычайно неудобно. Поэтому для многих шрифтов есть "псевдонимы" (aliases) -- короткие имена, аналогичные используемым в Windows. К примеру, за названием "lucidasans-italic-12" скрывается шрифт "-b&h-lucida-medium-i-normal-sans-12-120-75-75-p-71-iso8859-1".

Программы для выбора и просмотра шрифтов: xfontsel и xfd


Для подбора шрифта служит программа xfontsel (X Font Selector).

Окно программы xfontsel

Она отображает меню в виде формата шрифта, в котором можно выбирать нужные параметры, текущий выбранный шаблон, и как выглядит первый подходящий к нему шрифт.

При стандартной инсталляции Linux xfontsel сразу при запуске (шаблон из одних "*") покажет корейский шрифт -- просто он оказался самым первым в списке. Вообще, в дистрибутиве X-Window сразу имеются японские и корейские шрифты, что позволяет, к примеру, свободно просматривать в Netscape сайты .jp и .kr (естественно, при условии владения соответствующим языком :).

Поскольку шрифты есть не для всех комбинаций параметров, то по мере выбора параметров из меню некоторые пункты в других меню становятся "недоступными" -- например, шрифты гарнитуры Times есть только в кодировках iso8859 и koi8, а в jis -- нету.

Подобрав шрифт, можно нажать кнопку [select] -- при этом название будет скопировано в "карман" (буфер обмена, clipboard), и его затем можно вставить, например, в xterm средней кнопкой мыши.


Для просмотра всех символов шрифта (а не только тех, что отображает в своем примере xfontsel, служит программа xfd (X Font Displayer).

Программа xfd, запущенная командой
"xfd -fn 5x7"

Ей надо указывать требуемый шрифт (или шаблон) ключом "-fn". При этом имя шрифта следует заключать в одинарные апострофы, поскольку оно обычно содержит символы, имеющие специальное значение для интерпретатора командной строки (shell), такие, как "*" и "&".

Как указывать шрифты программам


Указать программе, какой шрифт использовать, можно при помощи ключа "-fn". Ситуация здесь аналогична оной с цветами -- указывается один шрифт для всех элементов. Но практически любой хороший текстовый редактор позволяет выбрать используемый шрифт где-нибудь в меню.


Меню выбора
шрифта в Xterm

Довольно интересен способ выбора шрифта в программах Xterm и NXterm. При нажатии <Ctrl+ПраваяКнопкаМыши> появляется меню шрифтов, в котором самый нижний пункт называется [Selection]. Если выбрать в xfontsel шрифт и "отметить" его, нажав [select] (или просто набрать где-нибудь имя шрифта и выделить его мышью), а потом выбрать в меню Xterm пункт [Selection], то Xterm сменит шрифт на указанный.

Геометрия

Координаты и размеры окон от запуска к запуску программы не запоминаются, но их можно указать при запуске. Для этого служит ключ "-geometry". Под "геометрией" окна понимается его размер и позиция на экране.

У ключа "-geometry" есть три варианта:

-geometry Размер
-geometry Позиция
-geometry РазмерПозиция

Размер указывается как "ШИРИНАxВЫСОТА" (между размерами -- латинская буква "x"). В зависимости от программы ширина и высота указываются или в пикселах (в большинстве программ) или в символах (например, в Xterm). Причем указывается размер внутренней части окна, без учета обрамления (которое зависит от window manager'а и может быть каким угодно).

Позиция указывается в пикселах от края экрана. Обычно она выглядит как "+X+Y". В этом случае левый край окна будет в X пикселах от левого края экрана, а верхний край -- в Y пикселах от верхнего края экрана.

Но иногда нужно поместить окно, например, вплотную к правому краю. В этом случае надо в горизонтальной координате вместо "+" указать "-". При этом окно будет расположено так, что его правый край окажется в X пикселах от правого края экрана.

Аналогично вертикальную позицию можно так же указывать от нижнего края экрана. Несколько примеров приведены на иллюстрации ниже.

Разные координаты на экране

Несколько примеров указания геометрии (взяты из man-страницы по X):

xterm -fn 6x10 -geometry 80x24+30+200 &
xclock -geometry 48x48-0+0 &
xload -geometry 48x48-96+0 &
xbiff -geometry 48x48-48+0 &

Здесь xterm помещается приблизительно в левой средней части экрана, а часы, индикаторы загрузки и писем -- в правый верхний угол.

Обычно ключ "-geometry" используется не при запуске программ "руками", а для указания позиции программам, запускаемым автоматически при старте X-Window (из инициализационных файлов X и window manager'а).


Текстовый редактор NEdit

Запуск и основные возможности NEdit

NEdit был создан человеком по имени Mark Edel в Национальной Ускорительной Лаборатории Ферми (Фермилаб). Название расшифровывается как "Nirvana Editor" (вероятно, это обещание достижения указанного состояния при использовании NEdit :).

NEdit -- это редактор с графическим интерфейсом для обычных текстовых файлов. Он очень похож в обращении на редакторы под Windows и Macintosh.

Основные достоинства NEdit (сокращенный перевод с официальной web-страницы программы):

Довольно подробная документация содержится в меню [Help], в частности очень полезен для начинающих пункт "Getting Started".

Для запуска достаточно набрать "nedit". Можно сразу указать в командной строке файлы, которые следует загрузить.

Окно NEdit

Некоторые "нестандартности" и возможности NEdit:

Настройка

Меню "Preferences" позволяет менять "поведение" редактора с текущим файлом -- автоматический перенос слов, отступ, шрифт и и.д.

В подменю "Default Settings" можно менять настройки по умолчанию -- они будут использоваться для всех следующих файлов. Там же настраивается поддержка языков программирования (пункт "Language Modes" и меню "Syntax Highlihting"). Для сохранения настроек служит пункт "Save Defaults".

Откуда берется NEdit

NEdit не входит в стандартный дистрибутив. Хотя он имеется в разделе "пожертвований" (contrib), наличествующая там версия требует динамической библиотеки Motif (которая является платной).

Взять готовый NEdit, статически слинкованный с Motif, можно по адресу

ftp://ftp.fnal.gov/pub/nedit/
Там есть версии под большинство подвидов Unix и под VMS и исходные тексты программы, а также документация по установке. Последней на момент написания является версия 5.0.2.


Манипуляции с изображениями: xv

XV: что это такое и как с ним обращаться

XV был создан Джоном Брэдли из Университета Пенсильвании. Эта программа предназначена для просмотра изображений в различных форматах и простейших манипуляций с ними.

XV отличается тем, что использует свою собственную библиотеку интерфейсных элементов. И хотя существуют и более мощные программы (например, GIMP), и понимающие большее число форматов файлов, вследствие удобства и простоты обращения XV чрезвычайно популярен, даже несмотря на то, что последняя версия вышла аж в 1994 году.

Окно заставки xv

При запуске появляется окно изображения, в котором, если не указан никакой файл, первоначально отображается заставка программы. По нажатию <Правой> кнопки на изображении появляется окно управления.

Окно управления xv

В окне управления справа расположены кнопки для работы с файлами, снизу -- для простых манипуляций с изображениями (копирование, поворот и т.д.). -- Центральная часть окна отведена под список файлов, который заполняется по -- мере просмотра и позволяет быстро вернуться к предыдущим файлам.

Сверху же расположены шесть меню:

[Display]
Для управления отображением цветов.
[24/8 Bit]
Для смены режима работы (например, редактировать цвета можно только в режиме 8 бит, а наилучшее качество достигается при 24).
[Algorithms]
Позволяет применить к больше десятка разных алгоритмов, например, для повышения четкости.
[Root]
Позволяет отобразить картинку не в окне, а на разнообразными способами на рабочей поверхности экрана в качестве "обоев". Интерактивно практически не используется.
[Windows]
Дает доступ к дополнительным окнам -- редактора цветов, информации иб изображении, справки по использованию клавиш и мыши.
[Image Size]
Манипуляция с размерами изображения.

Хотя XV имеет функции для простейшего рисования, они практически не используются.

Очень подробная документация по xv есть в его дистрибутиве. В RedHat Linux она находится в файле

/usr/doc/xv-3.10a/xvdocs.ps
(о том как смотреть PostScript-файлы -- в конце этой лекции).

Просмотр файлов и простейшие манипуляции с изображениями

Окно загрузки файла

Кнопка [Load] вызывает окно загрузки файла. Если включить переключатель "Browse", то при загрузке файлов окно "Load" будет оставаться на экране, что позволяет быстро просматривать много файлов.

К сожалению, изображения, превышающие по размерам экран, XV показывает в сжатом виде, чтобы они целиком помещались на экране. Для обхода этого ограничения можно воспользоваться ключом "-nolimits".

Загруженное изображение можно поворачивать на 90 градусов, зеркально отображать и применять к нему преобразования из меню [Algorithms].

Левой кнопкой мыши можно отметить прямоугольный фрагмент изображения. Тогда все операции (кроме поворота и изменения карты цветов) будут применяться к отмеченному фрагменту. Для "разотметки" достаточно щелкнуть мышью вне выделенной области. Кнопка [Crop] (в окне управления) урезает изображение до выделенной области.

Окно сохранения файла

Для сохранения изображения служит кнопка [Save]. Файл можно сохранить в другом формате, выбрав соответствующий вариант из списка вверху. Если включить опцию "Selected Area", то будет сохранена не вся картинка, а только выделенная часть.

Копирование окон с экрана

При помощи XV можно копировать изображения окон с экрана, и даже весь экран (именно так были сделаны почти все иллюстрации в данном курсе).

Окно управления
копированием с экрана

Для этого служит кнопка [Grab] (дословно "grab" означает "хватать"). Она вызывает окно, в котором можно установить параметры захвата: убирать ли на это время окна самого XV; как копировать -- по нажатию -- кнопки мыши над окном ([Grab]) или автоматически ([AutoGrab]) -- после заданной паузы скопировать окно под мышью; интервал ожидания перед копированием.

Чтобы скопировать весь экран, надо указать на место на экране, не занятое никакими окнами -- это будет "самое нижнее окно" (root window), которое содержит в себе все остальные окна.

XV и "обои"

XV позволяет установить на экран "обои". Для того, чтобы "попрактиковаться", можно воспользоваться меню [Root].

Обычно же обои устанавливаются из командной строки при помощи ключей "-root" и "-quit" -- первый указывает, что надо вместо окна использовать для отображения рабочую поверхность экрана ("root window"), а второй -- что сразу после этого программа должна завершиться.

Так, команда

xv -root -quit walls.gif
покроет весь экран обоями из файла walls.gif.
Замечание. При использовании видеорежимов с картой цветов (например, 8 бит/пиксел), а не TrueColor (15, 16, 24, 32 бита/пиксел) цвета на обоях могут исказиться после запуска других программ. Дело в том, что в режимах с картой цветов общее число цветов очень ограниченно, и многие программы захотят изменить палитру, а за изображение на root window уже "никто не отвечает", поскольку XV лишь отобразил обои и вышел.


Графический редактор GIMP

GIMP

Замечание. Автор не является специалистом ни по компьютерной графике, ни по GIMP, поэтому материал в данном разделе носит очень поверхностный характер.

Что это такое


"GIMP" расшифровывается как Gnu Image Manipulation Program. Как следует из названия, это программа для манипуляций с изображениями. По возможностям GIMP похож на редакторы PaintShop Pro и Adobe PhotoShop.

Как пользоваться GIMP


Панель инструментов GIMP

При первом запуске производится начальная настройка программы. Далее же сразу появляется основная панель инструментов, в верхней части которой расположено меню.

Выбрав в меню File команды New или Open, можно создать новое изображение или загрузить его с диска.

Окно редактирования

В окне редактирования можно вызвать меню при помощи правой кнопки мыши (причем меню очень "развесистое").

GIMP "знает" про такое свойство изображений, как прозрачность (т.н. "альфа-канал") и отображает прозрачные области шахматной текстурой.

Дополнительная информация о GIMP


Так же как и PaintShop Pro, GIMP позволяет расширять свою функциональности при помощи так называемых "plug-ins" ("дополнения"). Больше узнать про plug-ins для GIMP и скачать их можно на сайте registry.gimp.org.

У GIMP есть официальная страница -- www.gimp.org.

Кроме того, есть еще много сайтов, посвященных GIMP. Хорошая их подборка есть на Yahoo! -- достаточно поискать на тему "gimp".


Просмотр PostScript и PDF: ghostview, gv, AcroRead

PostScript и PDF: что это такое и "с чем их едят"

Формат PostScript был разработан в середине 80-х годов фирмой Adobe как язык для принтеров. Поскольку в то время Unix использовался исключительно на мощных и дорогих компьютерах, то к ним обычно были подключены дорогие PostScript-принтеры. Поэтому термин "печать" в графических программах под Unix обычно означает выдачу данных в формате PostScript, которые потом либо отправляются на принтер (если он не-PostScript, то фильтр принтера автоматически преобразует их в нужный формат), либо сохраняются в файл .ps.

PostScript бывает двух видов: собственно одно- или многостраничные файлы, которые можно сразу печатать на PostScript-принтере (файлы .ps), и Encapsulated PostScript -- формат для рисунков, которые затем вставляются в другие документы (например, в TeX) -- такие файлы обычно имеют расширение .eps.

Достоинством PostScript является его универсальность -- файл, созданный в одной системе, можно использовать и в другой. К недостаткам относится, во-первых, большой объем (особенно если в файлах есть растровые изображения -- они записываются крайне неэффективно), а во-вторых то, что программы -- просмотра показывают файл "как картинку" -- смотреть можно, а, например, -- найти определенное слово в тексте -- нельзя.

Формат PDF (Portable Document Format) был разработан в начале 90-х той же фирмой Adobe, и, в частности, в нем исправлены вышеозначенные недостатки PostScript.

И PostScript, и PDF -- форматы для оконечных устройств вывода (принтеры и дисплеи), файлы в них никогда не редактируются, а только создаются из других форматов (.dvi, .html, .doc и т.д.).

Стандартный просмотрщик PostScript: ghostview

GhostView -- это, пожалуй, самая старая в Unix программа для просмотра PostScript.

Окно GhostView с документом

Хотя в RedHat начиная с 5.1 GhostView уже отсутствует (а по команде "ghostview" вызывается gv), в других Unix она еще популярна.

Упомянем лишь основные "неочевидности" в обращении с ней.

Более новый просмотрщик PostScript: gv

Gv -- это тот же GhostView, сильно переработанный в сторону улучшения пользовательского интерфейса.

Файл для просмотра можно или указать в командной строке, или открыть командой Open из меню File.

Замечание. В окне выбора файла для перехода по директориям используется одинарный щелчок мышью, а не двойной.

Окно gv с документом

В левой части окна расположен список страниц. Щелчок левой кнопкой показывает нужную страницу, правой или средней кнопкой можно отметить несколько страниц, чтобы потом распечатать их или сохранить в другой файл. Кнопки над списком позволяют быстро отмечать сразу все нечетные/четные страницы.

Вместо полосок прокрутки изображения используется "карта страницы", по которой можно передвигать "изображение окна просмотра". Передвигать страницу можно также клавишами со стрелками, или просто "таская" изображение левой кнопкой мыши.

В верхней части окна расположены меню. [File] -- для работы с файлами. [State] -- для настроек (в нем очень полезно включать опцию Antialias для лучшего качества изображения). [Page] -- для перемещения по страницам и отметки. Далее расположены меню ориентации изображения (Portrait, Landscape и т.д.), масштаба изображения и формата бумаги -- в заголовках этих меню отображаются текущие параметры.

Кроме PistScript-файлов gv "по совместительству" умеет показывать и PDF.

Просмотр PDF

Хотя .pdf-файлы можно смотреть и распечатывать при помощи gv, лучше для этой цели подходит Adobe Acrobat Reader (AcroRead).

Окно Acrobat Reader

Unix-версия этой программы практически не отличается от варианта под Windows. AcroRead позволяет вести поиск по тексту (Tools->Find), а также отмечать фрагменты текста для копирования.

Пакет AcroRead находится рядом с дистрибутивом в разделе contrib.

----------------------------------------

© 1999 Дмитрий Болховитянов