Шрифт:
Можно выполнять программу в терминале и, что более интересно, – от другого пользователя (пароль перед запуском все равно попросят ввести).
Внешний вид менеджера тем приведен на рис. 34.17. Очень напоминает выбор тем от Microsoft Windows. Разнообразные темы можно скачать с сайта KDE или поискать в Интернете.
Рис. 34.17. Менеджер тем KDE
Конфигурирование программ – русификация
Конфигурирование программ, написанных для X Window, описать в принципе невозможно, поскольку настройки сильно зависят от типа приложения. Тем не менее, остановимся на одной небольшой особенности конфигурирования прикладных программ множества дистрибутивов операционной системы Linux, выпускаемых за границей. Это, конечно, проблемы русификации. И если с переводом интерфейса программ мы ничего сделать не можем (разве что взять и перевести все пункты меню и сообщения программы самостоятельно), то научить программу правильно воспринимать или хотя бы выводить кириллицу нам в большинстве случаев удается.
Большинство современных программ для KDE или GNOME разрабатываются с учетом требований дальнейшей их локализации, поэтому доведение до соответствующих кондиций нужных нам программ не вызывает особых сложностей. Рассмотрим это на примере текстового редактора gedit (рис. 34.18).
Если вы внимательно посмотрите на изображение, то увидите, что строка текста в gedit сначала набрана латинскими символами, а потом идут буквы с умляутами. Все очень просто – сначала эта строка набиралась в английской раскладке, а потом переключились на русскую. Сами видите, что получилось. Причина очень проста – неверно указана кодировка используемого в редакторе шрифта. Чтобы исправить это досадное недоразумение, необходимо зайти в пункт меню Настройки, в появившемся окне выбрать вкладку Шрифты/Цвета и щелкнуть на списке шрифтов. В результате откроется окно Выбрать шрифт, где можно выбрать используемый фильтр для перекодировки, получить информацию о шрифте, поменять собственно шрифт и его параметры. В нашем случае необходимо в списке Стиль шрифта найти кодировку шрифта, используемую вами в системе. Обычно это koi8-r (для пользователей UNIX/Linux) или ср1251 (для приверженцев кодировки Microsoft). В том случае, если в шрифте, используемом по умолчанию, отсутствует нужная вам кодировка, – выберите другой, в котором она есть. Установите стиль шрифта и размер символа в пунктах и сохраните настройки. После этого приложение будет корректно отображать кириллические символы.
Ссылки
• knot.pu.ru/faq/xfaq – XFAQ по настройке X Window.
• www.linux.org.ru/books/gnome-ug/ug/ – руководство пользователя GNOME.
• www.linux.org.ru/books/kde/general/userguide/index.html – К Desktop Environment. Руководство пользователя.
• sky.inp.nsk.su/~bolkhov/teach/inpunix/xsetup_simple.ru.html – Дмитрий Болховитянов. Настройка X Window.
• gazette.linux.ru.net/lg67/articles/rus-adam.html – Thomas Adam. Колонка The Weekend Mechanic: настройка X Window. Перевод Владимира Меренкова.
• gazette.linux.ru.net/lg64/articles/rus-sipos.html – настройка режима монитора в XFree86.
• linux.net.kg/articles/x.html – настройка X Window.
• www.gnome.org – официальный сайт проекта GNOME.
• www.kde.org – официальный сайт проекта KDE.Глава 35 Печать
Ну вот – система настроена, и кириллические шрифты есть, и X Window работает с заданными частотами и разрешениями, по Интернету путешествуем с приемлемой скоростью, документы разные находим, просматриваем. А печати у нас и нет, не настроена.
В данной главе мы постараемся исправить это упущение. Принтеры бывают разные – матричные, струйные, лазерные и сублимационные, цветные лазерные и даже объемные. Они могут использовать разные интерфейсы для подключения – последовательный, параллельный, USB и даже Ethernet. Производители принтеров продолжают увеличивать набор проблем – то протокол свой придумают, то с целью удешевления создадут Win-принтер, для которого драйвер не достать. И во всем этом приходится разбираться.
Первоначально рассмотрим конфигурацию принтера «правильным» способом, с применением стандартных UNIX-средств в консольном режиме. Затем рассмотрим конфигурацию с помощью графической утилиты, которая не идет ни в какое сравнение со стандартным способом – буквально за минуту можно сконфигурировать любой принтер.
Способы вывода на принтер
Как и для большинства задач, существует несколько способов добиться вывода данных на принтер. Конечно, в конце концов они замыкаются на простой вывод последовательности байтов в порт, к которому подключен принтер, однако с данными по пути следования от документа до распечатки могут производиться различные манипуляции.
Самый простой путь – прямой вывод информации без всякой предварительной обработки на порт принтера. Для этого достаточно выполнить всего лишь следующую команду:
cat mytext.txt > /dev/lp
Для DOS аналогичная команда будет выглядеть следующим образом:
copy mytext.txt > prn
Как обычно, это простота кажущаяся. Во-первых, для того, чтобы таким образом что-то отправить на печать, необходимо быть пользователем root – для остальных пользователей невозможно напрямую работать с файлами устройств. Во-вторых, зачастую вы получите на распечатке сплошную кашу из символов. Такое произойдет потому, что любой принтер имеет свой специальный язык управления, причем этих языков более десятка разновидностей. Так что выход для данного случая – использовать специальные утилиты, на вход которых подаются текстовые файлы, а на выходе – преобразованный с учетом языка управления принтера текст. Однако это крайне неудобно. Поэтому применяют специальные программные пакеты, предназначенные для управления печатью. Именно об этих программных пакетах и пойдет далее речь.
Система печати CUPS
CUPS (Common UNIX Printing System, общая система печати для UNIX), интересна своими богатыми возможностями. В ней реализован протокол печати, сходный с протоколом HTTP, заменяющий морально устаревший протокол LPD.
Поддерживает форматы Adobe PostScript, PDF, HP-GL/2, TIFF, JPEG, PNG, PBM, PGM, PPM, GIF, SGI, RGB, Sun Raster, Kodak Photo CDTM. Интересным моментом для администратора являются следующие особенности системы:
• правила управления доступом;
• наличие системы квот;
• авторизация пользователя;
• ведение log-журналов.
Программный пакет LPD
LPD (Line Printer Daemon, демон линейной печати) – пожалуй, старейший программный пакет для печати в мире UNIX. Идеология стандартна для UNIX – программы-утилиты для управления процессом печати и программа-демон, обеспечивающая печать на несколько принтеров. Благодаря такому построению программного пакета вы имеете возможность одновременно работать с несколькими принтерами и настроить сетевую печать. В пакет входят следующие программы:
• lpd – демон системы печати;
• lpr – пользовательская команда печати. 1рг выдает новое задание печати в очередь печати lpd. Синтаксис 1рг очень прост:lpr [опции] [имя_файла …]
Если имя_файла не задано, lpr ожидает ввод данных со стандартного ввода. Это позволяет пользователям перенаправлять вывод команд в очередь печати;
• lpq – утилита для просмотра очереди печати. Команда, запущенная без аргументов, возвращает содержимое очереди печати принтера по умолчанию;
• lрс – утилита контроля lpd. С ее помощью можно производить любые манипуляции с очередью печати – добавлять и удалять задания, останавливать печать, переупорядочивать задания в очереди печати и т. д. lpc чаще всего используется в системах, где несколько принтеров установлено на один компьютер.
Команда lpc обычно используется в интерактивном режиме, однако никто вам не мешает запускать на выполнение эту команду с опциями. Некоторые из опций приведены далее:
– disable – запрещает добавление любых новых заданий печати;
– down – запрещает все задания на принтере;
– enable – разрешает ввод новых заданий в очередь печати;
– quit (or exit) – покинуть lpc;
– restart – перезагрузить lpd для данного принтера;
– status – статус печати принтера;
– up – разрешить все и запустить новый демон lpd.
• lprm – утилита для удаления задания из очереди печати. Команда lprm удаляет из очереди все задания печати, владельцем которых является пользователь, выполнивший эту команду. Для того чтобы отменить одиночное задание печати, надо сначала получить номер задания с помощью команды lpq, а затем сообщить полученный номер команде lprm.
Функционирует система следующим образом. При старте операционной системы стартует демон lpd. Используя файл /etc/printcap, он узнает, какие принтеры будет обслуживать. При запуске (пользователь что-то выводит на печать) lpr взаимодействует с lpd через именованный сокет /dev/printer и передает lpd-файл для печати и некоторую информацию о том, кто печатает и как печатать файл. Затем lpd печатает файл на соответствующем принтере в порядке очереди.
Настройка LPDНачнем с простого – настроим простой струйный принтер фирмы Hewlett-Packard – HP DeskJet 400. Будем считать, что LPD уже установлен в вашей операционной системе, поскольку этот пакет входит во множество дистрибутивов как стандартная система печати.
Для добавления очереди печати к lpd вы должны внести запись в файл /etc/printcap и создать новый буферный каталог в каталоге /var/spool/lpd. Запись в файле /etc/printcap выглядит следующим образом:# ЛОКАЛЬНЫЙ deskjet400
lp|dj|deskjet:\
:sd=/var/spool/lpd/dj:\
:mx#0:\
:lp=/dev/lp0:\
:sh:Вышеприведенная запись определяет принтер с псевдонимами lp, dj или deskjet, его спул печати размещается в каталоге /var/spool/lpd/dj. Отсутствует ограничение максимального размера задания. Печать производится на устройство /dev/lpO и не сопровождается выводом страницы с именем человека, который печатает, добавленной в начало задания печати. Как вы видите – все очень просто. Но, во-первых, извечная проблема текстовых файлов UNIX и Windows – для UNIX в конце текстовой строки достаточно символа перевода строки, для Windows – необходимо наличие символов возврата каретки и перевода строки. Большинство современных принтеров рассчитаны для использования совместно с Windows, и поэтому для нормальной печати текста им также необходимо в конце текстовой строки наличие символов возврата каретки и перевода строки. Если не учесть эту особенность, при распечатке текста на принтере получится приблизительно следующее:
Это называется лестничным эффектом, и с ним необходимо бороться. Существует много способов, самый простой – написать небольшой фильтр, через который перед печатью будет пропускаться наш текстовый файл, а результат – уходить на печать.
Поправим нашу запись в файле /etc/printcap следующим образом:# ЛОКАЛЬНЫЙ deskjet400
lp|dj|deskjet:\
:sd=/var/spool/lpd/dj:\
:mx#0:\
:lp=/dev/lp0:\
:if=/var/spool/lpd/dj/filter:\
:sh:В документации к printcap описаны атрибуты принтера if – входной фильтр и of – выходной фильтр. Как видите, мы определили входной фильтр, расположенный в каталоге /var/spool/lpd/dj/ и носящий имя filter. Этот файл представляет собой две строчки, написанные на Perl:
#!/usr/bin/perl
while(<STDIN>){chop $_; print "$_\r\n";};
print "\f";