IZONE - http://www.izcity.com/ - бесплатный софт, вэб-сервисы, ресурсы для раскрутки, свежие номера журнала "Internet Zone".

Как украсить жизнь

Продолжение разговора об украшении и повышении эффективности консольного режима linux.

Алексей Федорчук

Потом пришли другие времена,
Мы обрастали разными вещами,
Которые украсить обещали
И без того украшенную жизнь
Юрий Визбор

По мне так текстовая консоль Linux прекрасна сама по себе, в первозданном виде по умолчанию: белые или светло-серые буквы на радикально черном фоне строги, но элегантны. Единственное, что хочется обычно исправить - это шрифт.

Почему-то по умолчанию в качестве консольного шрифта используется обычно что-то курьерообразное. Хотя, на мой взгляд, экранные шрифты с засечками - далеко не идеальное решение во всех случаях, и особенно - в случае растровых шрифтов. Гораздо лучше воспринимаются с дисплея шрифты семейства Sans Serife. Хотя иногда, для разнообразия, хочется чего-нибудь декоративного...

Изменить гарнитуру консольного шрифта совсем нетрудно. Главное - было бы, на что менять, то есть следует иметь соответствующие шрифтовые файлы. Благо в новых отечественных дистрибутивах Linux, AltLinux и ASPLinux, имеется вдоволь наборов консольных шрифтов. Шрифты эти можно обнаружить в каталоге /lib/kbd/consolefonts (в ASPLinux) или /usr/lib/kbd/consolefonts (в Altlinux), в других дистрибутивах они могут находиться в иных местах.

Шрифтовые файлы (вида имя_XxY.psf.gz) представлены обычно в трех вариантах - с матрицами 8x16, 8x14 и 8x8, предназначенными для различных разрешений. Под разрешением в текстовом режиме подразумевается произведение количества символов по горизонтали (колонок) на количество символов по вертикали (строк).

Стандартное разрешение Linux-консоли - 80x25, то есть восемьдесят колонок на двадцать пять строк. Для него предназначены шрифты с матрицей 8x16. Прочие шрифты используются для других допустимых значений разрешения - 80x28, 80x30, 80x34, 80x43, 80x50, 80x60, 132x43  [1]. Для переключения разрешений используется команда resizecons (рис. 1).

1

Рис. 1. Использование команды resizecons для изменения разрешения текстовой консоли

Имя шрифта, как правило, явным образом указывает на кодировку, для которой он предназначен (рис. 2). Так, для шрифтов с кириллическими символами файлы вида 866*, alt*, Cyr_a*, cp866*, t866* содержат их в кодировке DOS (CP866), koi8* - в кодировке KOI8-R или -U (для русского и украинского языков, соответственно), Win* - в кодировке Windows (CP1251), cyr-sun* - в кодировке ISO8859-5, используемой на компьютерах Sun Sparc. Шрифты вида UniCyr* отображают кодировку Unicode, поддерживаемую современными дистрибутивами Linux.

2

Рис. 2. Коллекция кириллических шрифтов для консоли из дистрибутивов Altlinux и ASPLinux

В Linux для передачи кириллицы традиционно используется кодировка KOI8, однако отображение символов на экране осуществлялось в кодировке DOS [2], что требует применения т.н. карт перекодировки (map screen). Однако в современных отечественных дистрибутивах эта проблема снята, так как по умолчанию в них для вывода кириллицы на экран используется кодировка Unicode.

Поэкспериментировать со шрифтами можно с помощью команды consolechars с опцией -f, в качестве значения которой выступает имя шрифтового файла. Результатом ее будет мгновенная смена гарнитуры экранного шрифта, причем - на всех сразу виртуальных консолях. Поле для экспериментов, конечно, не столь обширно, как в графическом режиме, но выбор все же есть - от четкого и строгого Sans Serif, представленного UniCyr-sans и UniCyr-lenta, до стилизованного под старину alt-antiq и квази-рукописного t866.

Выбрав подходящий шрифт, можно сделать его загружаемым по умолчанию при старте системы. Для этого в дистрибутивах, базируемых на Red Hat (к ним принадлежат и ASPLinux, и Altlinux), следует изменить значение строки SYSFONT в конфигурационном файле /etc/sysconfig/i18n. В других дистрибутивах указания на загрузку консольного шрифта могут быть в файлах /etc/rc.local, /etc/console-tools/config или подобных.

Другое украшательство, предоставляемое Linux-консолью - изменение цветов текста и фона, если строгая черно-белая гамма представляется через чур мрачной. Для этого (хотя - и не только для этого) служит команда setterm с опциями -foreground [цвет] и -background [цвет] для текста и фона, соответственно. Их возможные значения - black, blue, green, cyan, red, magenta, yellow. Кроме того, с помощью опции -reverce можно поменять цвет текста и фона, сделать текст мигающим (посредством опции -blink), выделенным (с опцией -bold) или, наоборот, "приглушенным" (с опцией -half-bright).

Следует заметить, что очень многие программы сбивают установки команды setterm, возвращая параметры терминала в значения по умолчанию. Чтобы этого не происходило, команду setterm следует давать с дополнительной опцией -store, сохраняющей в качестве умолчаний текущий набор терминальных атрибутов.

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

Изменения цветов фона и текста также можно сделать постоянными. Для этого достаточно включить команду setterm с требуемыми значениями опций в один из стартовых файлов (например, в тот же /etc/sysconfig/i18n).

Команда setterm имеет еще много опций [3], не относящихся прямо к украшательству, но подчас полезных. Так, с помощью опции dump # можно делать снимки (dump) экрана для виртуальной консоли с указанным номером. Они записываются в виде файла screen.dump в текущий каталог. Но посредством опции -file имя_файла созданному снимку можно дать произвольное имя.

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


[1] Кроме того, для некоторых видеокарт можно использовать графическую консоль с разрешениями от 640x480 до 1280x1024, поддерживаемую т.н. линейным кадровым буфером (frame buffer), но об этом я планирую поговорить как-нибудь в другой раз. [обратно к тексту]

[2] О причинах распространяться не буду, об этом достаточно сказано в Linux Cyrillic HOWTO. [обратно к тексту]

[3] См. man setterm [обратно к тексту]

Источник - SoftТерра, http://www.softerra.ru

 


Copyright © "Internet Zone", http://www.izcity.com/, info@izcity.com