В отличие от программ командной строки, у которых бывают однобуквенные ключи, которые можно группировать вместе (ls -laR) и длинные ключи, начинающиеся с двойного минуса (ls --help), у программ под 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".
|
Такой формат имени шрифта называется "XLFD" -- X Logical Font
Description. Полное его описание доступно по адресу
ftp://ftp.x.org/pub/R6.4/xc/doc/hardcopy/XLFD/xlfd.PS.gzа в RedHat-6.0 этот файл есть в директории ("*" -- номер версии X, например, 3.3.3.1), эта директория относится к пакету XFree86-doc. |
Программы для выбора и просмотра шрифтов: 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'а).