Простые средства для работы с OpenBSD 5

THE HOLY BIBLE - King James Version - БИБЛИЯ в Синодальном переводе
"Нас Атакуют!" Изобличи козни лукавого, запрети диаволу

Простые средства для работы с OpenBSD 5

Операционная система OpenBSD способна обеспечить конфиденциальность пользователей и предоставить удобное окружение для изучения и практической работы с современными UNIX системами. Богатый выбор средств безопасности и эффективная простота делают эту систему особенно привлекательной в сегодняшнем мире тотальной слежки за пользователями Интернета.

В то же время программы, предлагаемые в составе "базовой" системы, могут озадачить начинающего пользователя своим "уродливым" внешним видом. Особой известностью пользуется программа "xterm" - при первом запуске ОпенБСД этот отличный эмулятор терминала предстаёт перед нами в виде маленького неудобного окошка с крошечными угловатыми буквами на слишком ярком белом фоне. Чрезмерная примитивность диспетчера окон FVwm также поддерживает устойчивое мнение о непригодности OpenBSD в качестве операционной системы для повседневной работы. Тем не менее, все эти вроде бы существенные недостатки легко устранимы и ОпенБСД остаётся уникальной системой, способной поддерживать разумный баланс между функциональностью и простотой.

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

Прежде чем мы продолжим, я хотел бы привести строки из Евангелия:



............ == Послание к Филиппийцам святого апостола Павла == ...............
=== Глава 2, Стих 8 ===
5 Ибо в вас должны быть те же чувствования, какие и во Христе Иисусе:
6 Он, будучи образом Божиим, не почитал хищением быть равным Богу;
7 но уничижил Себя Самого, приняв образ раба, сделавшись подобным человекам и  по виду став как человек;
8 смирил Себя, быв послушным даже до смерти, и смерти крестной.
9 Посему и Бог превознес Его и дал Ему имя выше всякого имени,
10 дабы пред именем Иисуса преклонилось всякое колено небесных, земных и
 преисподних,
11 и всякий язык исповедал, что Господь Иисус Христос в славу Бога Отца.

Лично для вас благая весть - Единородный Сын Божий Иисус Христос любит вас, Он взошёл на крест за ваши грехи, был распят и на третий день воскрес, сел одесную Бога и открыл нам дорогу в Царствие Небесное.

Дорога к спасению открыта для тех, кто хочет ей идти. Дорогой читатель, вспомните, что многие Апостолы Божии поначалу были простыми рыбаками. Так же как и мы с вами сегодня, две тысячи лет назад люди заботились о заработке, условиях жизни, своих семьях и крове над головой. И точно так же, когда благая весть о спасении была принесена им всем Господом нашим Иисусом Христом, не все поверили. Сегодня мы видим ясно последствия того выбора - поверившие стали Апостолами Божиими и их имена известны нам и сегодня, десятки сотен лет после их смерти. А не поверившие? Они так и умерли безбожниками, имена их канули в лету и память о них стерлась с лица земли.

Сегодня наше время полно ненависти, злобы и эгоизма. И выбор становится особенно трудным. Работая, как нам кажется, на наше благо и во имя собственного достатка, мы увлекаемся мирскими ценностями настолько, что забываем о нуждах наших душ. Отсюда происходит и томление, и беспокойство, и неудовлетворённость собой. Хочется достичь большего, мы начинаем отталкивать других, забирать то, что не принадлежит нам, ненавидеть тех, кто встал на нашем пути к деньгам ... А ведь нам ясно сказано - только послушное смирение и любовь к ближнему возвышают нас. Вот и получается, что и сегодня тот же самый выбор между смертью и жизнью для наших душ стоит перед нами. И каждый из нас должен будет сделать такой выбор. Не получится сказать "меня не устраивает ни один из вариантов". Да и спрашивать-то особо не будут - спасение достигается сейчас, пока мы живы, верой в Господа Иисуса Христа и любовью к ближнему. Кто не успеет спастись при жизни - попадёт в ад.

Покайтесь, примите Иисуса как вашего Спасителя, ибо наступают последние времена и время близко - стоит Судья у ворот.

Пожалуйста, в своих каждодневных трудах, какими бы занятыми вы себе ни казались - находите время для Бога, Его заповедей и Библии.

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


Вернёмся к нашим техническим деталям.

Я планирую рассказать о том, какие изменения нам понадобится сделать в базовой системе OpenBSD. Сама система "из коробки" предоставит нам почти все необходимые для профессиональной работы средства. Особое внимание я уделю правильной настройке программы "xterm".

Затем мы обратимся к вопросу установки дополнительных программ для удобной работы с документами, web-страницами, фото и видео файлами.

Заметьте, что безопасность "базовой" системы снижается по мере установки дополнительных программ из "packages".

Уродливый эмулятор терминала Xterm

Каждый раз, открывая этот эмулятор терминала на новой системе, я внутренне содрогаюсь. Но при всей его начальной неказистости xterm входит в состав стандартной поставки сервера Xorg (X Window System) и в большинство операционных систем. Фактически, эта неприглядная программа стала стандартом в мире UNIX.

Общая информация об эмуляторе XTerm

XTerm примечателен своей высокой скоростью отклика, простотой и предсказуемостью, тщательностью и правильностью реализации интерфейса к X Window System и (сюрприз!) полной поддержкой векторных шрифтов и Юникод. Это важное отличие, поскольку xterm не использует сторонние библиотеки типа GLib / Gtk / Qt, а написан полностью как самостоятельное "X" приложение. Именно отсутствие зависимости от сторонних библиотек позволяет xterm работать быстро. И именно для быстроты прорисовки содержимого экрана xterm по умолчанию использует растровые шрифты - те самые, старые и уродливые.

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

Появление "шрифтовых серверов" (man xfs), помогающих X серверу подготавливать шрифты и "разгружающих" подсистему графики, помогло ситуации. Но основной прорыв был совершён внедрением технологии "FreeType", представленной "клиентской" библиотекой (man Xft), растеризующей векторные шрифты в самом приложении, а не процессом X сервера. Это нововведение решило вопрос и сегодня используется повсеместно, включая библиотеки Gtk и Qt. То есть, программа, использующая Gtk 3 для вывода графики, будет использовать технологию FreeType автоматически (вместе с приятными для глаз масштабируемыми True Type шрифтами).

Но, как мы знаем, xterm не использует графические библиотеки Gtk / Qt и должен уметь растеризовать True Type шрифты самостоятельно. И он умеет это делать, используя саму библиотеку Xft непосредственно (что позволяет эмулятору работать также со шрифтами Type1 и OpenType).

Включение векторных шрифтов в xterm для одной сессии

Собственно, здесь и кроется причина "врождённой уродливости" XTerm - даже умея работать с векторными шрифтами самостоятельно, эмулятор способен выводить текст значительно быстрее, используя старые растровые шрифты (типа Fixed). Многих интересует только скорость работы xterm - и поэтому по умолчанию программа использует только растровые шрифты.

Проверить конфигурацию "по умолчанию" можно в файле "/etc/X11/app-defaults/XTerm" - там имеется множество мест, где используется шрифт "9x15" или "fixed".

Итак, мы знаем почему xterm выглядит уродливо "по умолчанию". Как преобразить внешний вид эмулятора терминала? Если это делать просто и быстро, то мы сможем использовать параметры запуска программы из командной строки. XTerm имеет опцию "-fn", определяющую имя старого растрового шрифта (выбираем командой "xfontsel"). Но также имеется и "новая" опция для векторных шрифтов "-fa" (выбор векторного шрифта делается командой "fc-list" и подобными). Для включения поддержки векторных шрифтов в меню XTerm есть пункт "TrueType Fonts" (вызывается меню правым щелчком мыши с нажатым Ctrl).

Итак, в примере ниже я хочу задать векторный шрифт:

............... == Книга Премудрости Иисуса, сына Сирахова == ..................
=== Глава 2, Стих 10 ===
10 Взгляните  на  древние  роды  и  посмотрите:  кто  верил  Господу  -  и   был
постыжен? или кто пребывал в страхе Его - и был оставлен? или  кто  взывал  к
Нему- и Он презрел его?
11 Ибо Господь сострадателен и милостив и прощает  грехи,  и  спасает  во  время
скорби.

(b+/b-, c+/c-, +/-, *) >
~:$

-- Сначала убедимся что FreeType шрифты
-- установлены в нашей системе:
~:$ grep -i font /var/log/Xorg.0.log
[    33.429] (==) FontPath set to:
/usr/X11R6/lib/X11/fonts/misc/,
/usr/X11R6/lib/X11/fonts/TTF/,
/usr/X11R6/lib/X11/fonts/OTF/,
/usr/X11R6/lib/X11/fonts/Type1/,
/usr/X11R6/lib/X11/fonts/100dpi/,
/usr/X11R6/lib/X11/fonts/75dpi/
~:$

-- TrueType Fonts (TTF), Open Type Fonts (OTF)
-- и Type 1 шрифты присутствуют.
-- Какие из них зарегистрированы в системе
-- с помощью "fontconfig"?
~:$ fc-list | egrep "(Bit|Cour)" | sort
Bitstream Charter:style=Bold
Bitstream Charter:style=Bold Italic
Bitstream Charter:style=Italic
Bitstream Charter:style=Regular
Courier 10 Pitch:style=Bold
Courier 10 Pitch:style=Bold Italic
Courier 10 Pitch:style=Italic
Courier 10 Pitch:style=Regular
~:$

-- Проверим какой шрифт будет использован
-- в действительности:
~:$ fc-match "Bitstream Charter"
c0648bt_.pfb: "Bitstream Charter" "Regular"
~:$

-- Где находится этот файл?
~:$ ls /usr/X11R6/lib/X11/fonts/Type1/c064*
/usr/X11R6/lib/X11/fonts/Type1/c0648bt_.afm
/usr/X11R6/lib/X11/fonts/Type1/c0648bt_.pfb
/usr/X11R6/lib/X11/fonts/Type1/c0649bt_.afm
/usr/X11R6/lib/X11/fonts/Type1/c0649bt_.pfb
~:$

-- Какие возможности имеет этот шрифт?
~:$ fc-query /usr/X11R6/lib/X11/fonts/Type1/c0648bt_.pfb
Pattern has 15 elts (size 16)
family: "Bitstream Charter"(s)
style: "Regular"(s)
slant: 0(i)(s)
weight: 80(i)(s)
width: 100(i)(s)
foundry: "bitstream"(s)
file: "/usr/X11R6/lib/X11/fonts/Type1/c0648bt_.pfb"(s)
index: 0(i)(s)
outline: FcTrue(s)
scalable: FcTrue(s)
charset:
...
lang: ... |pt|rm|sma| ...  -- а где же "ru"?
fontversion: 0(i)(s)
fontformat: "Type 1"(s)
decorative: FcFalse(s)

-- Как видим, шрифт "Bitstream Charter" не может отображать символы кириллицы.
-- Для сравнения, попробуйте:
"fc-query /usr/X11R6/lib/X11/fonts/TTF/DejaVuSans.ttf"

-- Увидеть все символы того или иного шрифта можно так:
~:$ xfd -fa "Luxi Sans"

-- Убедиться в том, что шрифт отображается сглаженным, можно
-- запустив последовательно такие команды и сравнив прорисовку цифры "7":
~:$ xfd -fa "Bitstream Charter:size=18:antialias=false"
~:$ xfd -fa "Bitstream Charter:size=18:antialias=true"

-- Пробуем открыть xterm, используя векторный
-- Type 1 шрифт "Bitstream Charter".
-- Используем новый "векторный" параметр -fa

~:$ xterm -fa "Bitstream Charter"
-- Да, русских символов нет.

-- Или другой шрифт:
~:$ fc-match "Courier 10 Pitch"
c0419bt_.pfb: "Courier 10 Pitch" "Regular"
~:$

~:$ xterm -fa "Courier 10 Pitch"

Имена шрифтов можно задавать в виде шаблона, как мы делали вверху, или полностью. Также можно использовать сокращённые названия. Иногда в качестве значения параметра "font" встречается упоминание имен FreeType шрифтов в виде "xft: ....", но я всегда предпочитаю указывать полное имя шрифта в сочетании с параметром "-fa" или "-face". Разные системы ожидают имена шрифтов по-разному, так что всегда читайте документацию той программы, к которой вы подбираете векторный шрифт. Например, вот как можно работать с "xclock":

-- Полное имя шрифта используется для отображения цифровых часов.
xclock -d -render -face "Bitstream Charter:size=18:antialias=true"
xclock -d -render -face "Bitstream Charter:style=Bold Italic: \
size=18:antialias=true" -bg black -fg green

-- Сокращенное назавание того же шрифта.
xclock -d -render -face "Bitstream Charter-18:style=Bold Italic"

-- Поищите также "man 5 fonts-conf".

Итак, мы уже знаем как заставить xterm использовать "красивый" шрифт на один раз. Ключ "-fs" определяет размер шрифта, а дополнительный параметр "-u8" позволяет нам переключить xterm в режим отображения символов Юникод, но здесь есть тонкости.

Постоянное включение векторных шрифтов в xterm

Как уже было сказано, xterm является полноценным "X"-приложением. Это означает, что поведение эмулятора терминала определяется так называемыми "ресурсами" клиента X сервера. В прошлом эти ресурсы могли храниться отдельно для системы и отдельно для пользователя, в файлах с именами ".Xdefaults" и (или) ".Xresources". Сегодня эти файлы (почти) не используются и вместо них все параметры для всех известных клиентов определяются и устанавливаются одной программой (man xrdb).

Но я сказал "почти" не просто так - именно для xterm мы традиционно продолжаем использовать файл конфигурации ресурсов ".Xdefaults". Большинство опций командной строки имеют эквивалентный "ресурс", устанавливая который мы определяем поведение программы при всех последующих запусках. На самом деле, мы можем поместить все эти "записи" в центральный файл ресурсов "/etc/X11/app-defaults/XTerm" или в файл с любым именем, "скормив" его потом программе "xrdb".

Перейдём к делу. После серии экспериментов я остановился на таком файле для моей системы. Прочтите документацию к XTerm (man xterm) чтобы понять какой ресурс за что отвечает - и измените файл как понравится вам. С этого момента все последующие запуски эмулятора будут следовать вашим инструкциям.

............................ == Второзаконие == ................................
=== Глава 31, Стих 16 ===
16 И сказал Господь Моисею: вот, ты почиешь с  отцами  твоими,  и  станет  народ
сей блудно ходить вслед чужих богов той  земли,  в  которую  он  вступает,  и
оставит Меня, и нарушит завет Мой, который Я поставил с ним;
17 и возгорится гнев Мой на него в тот день,  и  Я  оставлю  их  и  сокрою  лице
Мое от них, и он истреблен будет, и постигнут его многие бедствия  и  скорби,
и скажет он в тот день: "не потому ли постигли меня  сии  бедствия,  что  нет
[Господа] Бога моего среди меня?"
18 и Я сокрою лице Мое [от него] в тот  день  за  все  беззакония  его,  которые
он сделает, обратившись к иным богам.

(b+/b-, c+/c-, +/-, *) >
~:$ cat .Xdefaults
XTerm*loginShell:true
XTerm*faceName:"DejaVu Sans Mono"
XTerm*faceSize:15.0
XTerm*cursorBlink:true
XTerm*cursorColor:red
XTerm*cursorOffTime:300
XTerm*cursorOnTime:1900
XTerm*background:black
XTerm*foreground:green
XTerm*saveLines:3000
XTerm*scrollBar:false
XTerm*locale:false
XTerm*utf8:always
~:$

Определившись со шрифтами, разберёмся с вопросом русификации xterm. До появления стандарта Unicode нам приходилось идти на разнообразные уловки и даже использовать набор символов (и кодировку) КОИ-8р. Сегодня всё делается проще, но нам по-прежнему надо понимать тонкости взаимодействия эмулятора терминала и командной оболочки пользователя.

Unicode в xterm

Для правильной работы Unicode в кодировке UTF-8 нам необходимо организовать правильную передачу информации от приложения пользователя к терминалу (эмулятору xterm в нашем случае). Для этого мы должны выстроить "цепочку" правильных кодировок:

  • Приложение выводит текст в стандартный вывод в многобайтной кодировке UTF-8
  • Консоль нашей сессии в системе должна быть установлена в UTF-8
  • Эмулятор xterm тоже должен "эмулировать" терминал, понимающий многобайтный ввод-вывод
  • Если все эти условия соблюдены - мы сможем читать выводимые программой символы кириллицы (как и любые другие, если понимаем). В прошлом консоль системы ОпенБСД не поддерживала многобайтную кодировку и нам приходилось устанавливать локаль в KOI8-R. Поскольку КОИ8 - однобайтная кодировка, наша "цепочка" прерывалась и нам надо было использовать "фильтр" (man luit) для "конвертации" однобайтных символов кириллицы в кодировке КОИ8 на выходе нашего приложения в многобайтные символы в кодировке UTF-8 на входе в XTerm.

    Для упрощения этого процесса xterm имел возможность вызывать "фильтр" luit автоматически - при этом использовался ресурс "locale" или параметр командной строки "-lc". Если мы хотели окончательно запутаться, мы могли использовать параметр "-en", явно указывающий xterm какую кодировку ожидать на входе (т.е. в какой кодировке выводит данные приложение).

    Сегодня OpenBSD поддерживает локаль в формате Unicode, но фильтр по-прежнему может оказаться полезным для нас. Вот пример использования фильтра "luit" - программа "cat" читает файл в кодировке KOI8-R и выводит содержимое (однобайтные символы) в стандартный вывод сессии с локалью UTF-8, который перенаправляется на вход "luit", которому мы заранее задаём входную кодировку КОИ8, отличную от установленной локали. Выходная кодировка фильтра "luit" всегда многобайтная UTF-8, которая правильно отображается в моём "xterm", настроенном на Unicode локаль.

    ...... == Первое соборное послание святого апостола Петра == .........
    === Глава 2, Стих 2 ===
    1 Итак, отложив всякую  злобу  и  всякое  коварство,  и  лицемерие,  и
    зависть, и всякое злословие,
    2 как  новорожденные  младенцы,  возлюбите  чистое  словесное  молоко,
    дабы от него возрасти вам во спасение;
    3 ибо       вы       вкусили,       что       благ            Господь.
    
    (b+/b-, c+/c-, +/-, *) >
    
    ~:$ cat /usr/share/calendar/ru_RU.KOI8-R/\
    calendar.orthodox | luit -c -encoding KOI8-R
    
    /*
    * Православные праздники
    *
    * $OpenBSD: calendar.orthodox,v 1.9 2003/11/17 23:35:30 mickey Exp $
    */
    
    #ifndef _ru_RU_KOI8_R_orthodox_
    #define _ru_RU_KOI8_R_orthodox_
    
    LANG=ru_RU.KOI8-R
    
    09/11   Усекновение главы Пророка, Предтечи и Крестителя Господня Иоанна.
    День постный.
    09/21   Рождество Пресвятой Владычицы нашей Богородицы и Приснодевы Марии
    09/27   Воздвижение Честного и Животворящего Креста Господня
    10/09   Преставление апостола и евангелиста Иоанна Богослова
    ...
    

    С появлением локали UTF-8 ситуация упростилась - теперь и приложение, и эмулятор терминала говорят друг с другом исключительно в многобайтной кодировке UTF-8. Естественно, при этом фильтр luit становится ненужным и должен быть выключен.

    В свете сказанного, становится понятным использование этих двух ресурсов в моём файле ".Xdefaults":

    ~:$ cat .Xdefaults
    ...
    XTerm*locale:false -- Вынуждает xterm "забыть" все другие кодировки и
    отключает встроенный вызов фильтра luit.
    XTerm*utf8:always -- Заставляет xterm понимать *только* Unicode.
    ...
    
    ~:$ env | grep LC
    LC_CTYPE=en_US.UTF-8 -- Естественно, консоль моей сессии тоже должна быть
    установлена в Unicode, иначе мы увидим те самые
    знаменитые "крокозябли".
    ~:$
    

    Документация xterm предлагает ещё один способ использования Unicode, но я делаю именно так, как показано выше.

    Может ли другая программа (например, FVWM) работать с TrueType fonts?

    Достаточно поговорив о xterm, посмотрим на вопрос шире - как узнать, может ли программа работать с векторными шрифтами?

    Ответ прост - если программа использует Gtk / Qt, то может. Если нет - единственный способ использовать FreeType это подключение библиотеки Xft, использующей модуль X сервера под названием "RENDER" (Ещё существуют более старые клиентские библиотеки "libart" и "SDL", но мы не будем рассматривать их в нашей заметке). Проверить это легко:

    -- Здесь мы видим, что xterm скомпонован с библиотекой Xft
    и может использовать векторные antialiased TrueType Fonts.
    
    root:22# ldd  /usr/X11R6/bin/xterm | egrep "(Xft|free|font)"
    00001c289aff0000 00001c289b403000 rlib 0 1 0 /usr/X11R6/lib/libXft.so.8.0
    00001c289d47b000 00001c289d8ae000 rlib 0 2 0 /usr/X11R6/lib/libfontconfig.so.7.0
    00001c28a3bd7000 00001c28a4061000 rlib 0 3 0 /usr/X11R6/lib/libfreetype.so.19.0
    root:23#
    
    -- Проверим FVWM:
    
    root:21# ldd /usr/X11R6/bin/fvwm | egrep "(Xft|free|font)"
    ...
    -- Ничего нет.
    
    -- как насчёт XPdf?
    root:24# ldd `which xpdf`  | egrep "(Xft|free|font|render)"
    0000049edbfc7000 0000049edc451000 rlib 0 4 0 /usr/X11R6/lib/libfreetype.so.19.0
    0000049ed2da7000 0000049ed31da000 rlib 0 2 0 /usr/X11R6/lib/libfontconfig.so.7.0
    0000049ed9071000 0000049ed947a000 rlib 0 2 0 /usr/X11R6/lib/libXrender.so.5.0
    0000049ed0816000 0000049ed0c29000 rlib 0 1 0 /usr/X11R6/lib/libXft.so.8.0
    root:25#
    -- XPdf использует scalable fonts и antialiasing.
    

    В случае с диспетчером окон FVWM, его современные версии поддерживают Free Type Fonts. Просто поставляемая в составе "базовой" OpenBSD версия достаточно стара и может работать только с растровыми шрифтами. Это не является большой проблемой, так как в диспетчере окон шрифты используются для пунктов меню, заголовков окон, сообщений и прочего. Во всех этих случаях обычно нужны маленькие размеры текста, что делает использование растровых шрифтов вполне оправданным. Кроме того, они "работают быстрее".

    Webbrowser Lynx и Unicode

    Поставляемый в базовой системе OpenBSD lynx очень удобен при просмотре web-страниц с большим количеством "следящих" элементов и рекламы - всё это становится просто невидимым. При этом включить поддержку Юникод в этой программе очень просто (после того, как мы настроили нашу консоль и xterm на UTF-8, конечно). В меню Lynx установим такие параметры:

    ...
    Use locale-based character set(!): [OFF]
    Display character set            : [UNICODE (UTF-8)________________]
    Assumed document character set(!): [utf-8___________]
    ...
    

    Тот же самый результат может быть достигнут использованием конфигурационных файлов, ниже я привожу мои настройки Lynx:

    ......... == Послание к Титу святого апостола Павла == ..............
    === Глава 3, Стих 6 ===
    4 Когда же явилась благодать и человеколюбие Спасителя  нашего,  Бога,
    5 Он спас нас не по делам праведности,  которые  бы  мы  сотворили,  а
    по Своей милости, банею возрождения и обновления Святым Духом,
    6 Которого  излил  на  нас  обильно  через  Иисуса  Христа,  Спасителя
    нашего,
    7 чтобы,  оправдавшись  Его  благодатью,  мы  по  упованию  соделались
    наследниками вечной жизни.
    
    (b+/b-, c+/c-, +/-, *) >
    ~:$ cat .lynxrc  | grep -v "^#" | sort
    accept_all_cookies=off
    bookmark_file=lynx_bookmarks.html
    case_sensitive_searching=off
    character_set=UNICODE (UTF-8)
    dir_list_order=ORDER_BY_NAME
    dir_list_style=MIXED_STYLE
    emacs_keys=off
    file_sorting_method=BY_FILENAME
    keypad_mode=LINKS_ARE_NOT_NUMBERED
    lineedit_mode=Default Binding
    preferred_language=en
    show_color=never
    show_cursor=off
    show_dotfiles=off
    sub_bookmarks=OFF
    user_mode=NOVICE
    verbose_images=on
    vi_keys=on
    visited_links=LAST_REVERSED
    

    Я использую webbrowser Lynx постоянно и рекомендую вам - это отличная программа, позволяющая сконцентрироваться на необходимой информации.

    Примеры конфигурационных файлов

    Настройки окружения пользователя зависят от конфигурационных файлов в домашней директории. Мы уже рассмотрели подробно некоторые из них (.Xdefaults, например). Ниже я привожу остальные конфигурационные файлы из моей домашней директории, которые мне особенно важны.

    Public domain Korn shell

    Моя оболочка пользователя устанавливает Unicode локаль, русскую фонетическую клавиатуру для неё и дополнительно программу для чтения Библии.

    .......... == Послание к Титу святого апостола Павла == ..............
    === Глава 2, Стих 11 ===
    11 Ибо  явилась  благодать  Божия,  спасительная  для  всех человеков,
    12 научающая нас, чтобы  мы,  отвергнув  нечестие  и  мирские  похоти,
    целомудренно, праведно и благочестиво жили в нынешнем веке,
    13 ожидая  блаженного  упования  и  явления  славы  великого  Бога   и
    Спасителя нашего Иисуса Христа,
    14 Который  дал  Себя  за  нас,  чтобы   избавить   нас   от   всякого
    беззакония и очистить Себе народ  особенный,  ревностный  к  добрым
    делам.
    
    (b+/b-, c+/c-, +/-, *) >
    ~:$ cat .kshrc
    # Вызов "основного" файла конфигурации.
    . /etc/ksh.kshrc
    
    # requires "pkg_add vim-7.3.154p2.tgz"
    alias vi="vim"
    
    export LC_CTYPE=en_US.UTF-8
    export EDITOR=vi
    export VISUAL=vi
    
    # Russian phonetic keyboard "яверты", switch with both shifts.
    # Also requires the line "set +o emacs-usemeta" in /etc/ksh.kshrc
    set +o emacs-usemeta
    # grp_led may be "num", "sroll"
    setxkbmap -layout 'us,ru(phonetic)' -option 'grp:shifts_toggle,grp_led:caps'
    
    set -o vi
    
    export PS1="\W:\\$ "
    
    # Моя самая любимая программа вызывается здесь.
    if [[ $TERM == "xterm" || $TERM == "rxvt-256color" ]]
    then /usr/local/bin/read_and_think 70
    else /usr/local/bin/read_and_think.kjv 70
    fi
    ~:$
    ~:$ cat .profile
    # Используется для вызова "локального" файла конфигурации Korn Shell.
    export ENV=~/.kshrc
    ~:$
    

    Установим программу для чтения Библии в командной строке

    Прежде чем мы продолжим, я хотел бы напомнить читателю зачем эта программа нужна в системе Open BSD. Я глубоко уверен, что постоянная погоня за мирскими благами (деньгами, славой, властью) отвлекает нас от главной цели нашей жизни - покаяния и прихода к Господу Богу для примирения с Ним. Мы не живём по Божиим заповедям, делаем зло друг другу, завидуем, ненавидим, гордимся ... Чтение Библии помогает каждому человеку приблизиться к Богу, начать слушать Его слова и исполнять Его заповеди. Работая в ИТ, нам остаётся всё меньше и меньше времени на чтение Евангелия. Именно для этого и нужна эта программа, позволяющая нам прочитывать стих из Писания каждый раз при открытии терминальной сессии. Читайте и задумывайтесь, дорогой читатель - ваше спасение в ваших руках.

    Нам понадобятся две версии программы, использующие текст Библии на Русском и Английском языках. Скачаем эти два файла с сайта, на котором вы сейчас находитесь:
    Английская Библия
    Русская Библия

    Переименуем файлы, сделаем их исполняемыми и поместим их таким образом:

    ~:# ls -la /usr/local/bin/read_*
    -rwxr-xr-x  1 u1  u1  4312368 Oct  9 19:23 /usr/local/bin/read_and_think*
    -rwxr-xr-x  1 u1  u1  4418864 Oct  9 19:39 /usr/local/bin/read_and_think.kjv*
    ~:# file /usr/local/bin/read_*
    read_and_think:     ELF 64-bit LSB executable, x86-64, ... , stripped
    read_and_think.kjv: ELF 64-bit LSB executable, x86-64, ... , stripped
    ~:#
    

    Не волнуйтесь - никакого вредоносного кода в файлах нет. Вызов программы осуществляется такими строками в моём файле .kshrc, как показано выше:

    if [[ $TERM == "xterm" || $TERM == "rxvt-256color" ]]
    then /usr/local/bin/read_and_think
    else /usr/local/bin/read_and_think.kjv
    fi
    

    Теперь при каждом открытии терминала вас будет приветствовать стих из Библии. Читайте. Я гарантирую вам, что через несколько дней этот текст Слова Божия станет вам так же дорог и необходим, как глоток чистого горного воздуха в загазованном мегаполисе. В программе есть возможность передвигаться по тексту и прочесть всю книгу полностью - читайте и наслаждайтесь. Как красиво слово Божие! Чтение английского текста поначалу может быть затруднительно - не сдавайтесь, изучайте его - и воистину великий текст Короля Джеймса 400-летней давности однажды раскроется перед вами как прекрасная роза. Я не могу описать это ощущение - поймёте, когда это произойдёт с вами. Бог вам в помощь в изучении Библии!

    Текстовый редактор Vim и диспетчер окон FVwm

    Такие настройки позволяют мне легко создавать знакомое окружение фактически на любой системе - vi и fvwm входят в состав почти всех современных "UNIX-like" систем. Особенно это актуально для различных версий Линукс, использующих самые разнообразные Desktops.

    ......... == Второе послание к Коринфянам святого апостола Павла == ............
    === Глава 9, Стих 6 ===
    6 При сем скажу: кто сеет скупо, тот скупо и  пожнет;  а  кто  сеет  щедро,  тот
    щедро и пожнет.
    
    (b+/b-, c+/c-, +/-, *) >
    ~:$ cat .vimrc
    set ic
    set ruler
    set tw=78
    set sw=2
    colo ron
    syn on
    ~:$
    
    ~:$ cat .fvwmrc
    # Process system-wide configuration file first.
    Read /usr/X11R6/lib/X11/fvwm/.fvwmrc
    
    # My local changes
    DeskTopSize 2x2
    # I want my terminal windows to stand out
    AddToDecor myterms
    + HilightColor #dd0000 darkgreen
    + WindowFont   -adobe-helvetica-bold-r-*-120-*
    Style "xterm" UseDecor "myterms"
    Style "*" ClickToFocus
    Style "xclock" Borderwidth 3,NoTitle,StaysOnTop,Sticky,ActivePlacement
    # Some changes to the menu.
    Key F2          A       M       Menu Window-Ops2
    AddToMenu RootMenu
    + "&Web%mini.netscape.xpm%"         Exec exec firefox
    + "&Clock%jclock.xpm%" Exec exec xclock -d -strftime "%a %b %d - %H:%M" \
    -render -face "Bitstream Charter :style=Bold Italic:size=18:antialias=true" \
    -bg black -fg green
    Module  FvwmAuto 001 Raise Nop
    Module  FvwmBacker
    # I could use xsetroot, but it does not understand "png" files.
    # Also there is a program fvwm-root, but not in this version of FVWM.
    *FvwmBackerDesk 0 Exec exec xv -root -geometry 1600x900 \
    -quit ~/Pictures/Roses_Evelin_2013.png
    # Keyboard shortcuts, using Ctrl+Alt.
    # These 2 apply only to xterm windows.
    Key n         A       CM     Next [xterm*] FlipFocus
    Key p         A       CM     Prev [xterm*] FlipFocus
    # Applies to all windows.
    Key m         A       CM     Maximize
    Key l         A       CM     Exec exec xlock -mode coral
    # Re-defining main config file's setting here.
    Key n         A       CSM     Next [*] Focus
    Key p         A       CSM     Prev [*] Focus
    Key t         A       CM     Exec exec xterm
    ~:$
    

    Для установки обоев рабочего стола я не использую программу xsetroot, поскольку она отображает исключительно bitmaps, а я хочу использовать файл в формате "png". Похожим образом я устанавливаю фоновое изображение для экрана входа в систему (xdm login screen).

    -- Получим информацию об именах запускаемых файлов:
    -- /var/log/xdm.log, defined in xdm-config
    ...
    xdm info (pid 30433): sourcing /etc/X11/xdm/Xsetup_0
    xdm info (pid 30433): sourcing /etc/X11/xdm/GiveConsole
    xdm info (pid 2421): executing session /etc/X11/xdm/Xsession
    ...
    
    -- file /etc/X11/xdm/Xsetup_0:
    #!/bin/sh
    # $OpenBSD: Xsetup_0,v 1.3 2010/03/28 09:33:02 matthieu Exp $
    if [ "$DISPLAY" = ":0" -o "$DISPLAY" = ":0.0" ]
    then
    /usr/local/bin/xv -root -geometry 1600x900 -quit \
    ~/Pictures/Roses_Evelin_2013.png
    xconsole -geometry 480x130-0-0 -daemon -notify \
    -verbose -fn fixed -exitOnFail
    fi
    
    #sxpm OpenBSD.xpm &
    

    Дополнительные программы, установленные в моей системе

    В дополнение к средствам, предоставляемым "базовой" системой, я устанавливаю такие программы:

    firefox (F11 особенно полезна с FVWM)
    evince or xpdf
    xv
    ffmpeg
    vlc
    libreoffice
    mutt
    vim
    wget
    rsync (вместо rdist)
    evolution (mail/calendar)
    shotwell (photos)
    

    Убедитесь, что пакеты mozilla-dicts-en-GB (и другие нужные вам словари), aspell и hunspell были удачно установлены (как зависимые от указанных выше приложений).

    Если вы используете видео на OpenBSD, убедитесь что расширение DRI2 было подключено и используется вашей видео системой (grep DRI /var/log/Xorg*). Всегда используйте "ffprobe" с "ffplay" перед просмотром видео файлов.

    Не устанавливайте никаких программ для шифрования или хэширования - MD5/SHA hashing, checksuming, Base64 encoding/decoding, AES 256 encryption/decryption делается очень просто используя OpenSSL. Это действительно просто, требуется всего одна команда - посмотрите "man OpenSSL".

    Расширения для броузера Firefox

    Эти расширения помогают мне при просмотре веб-страниц под ОпенБСД:

    Adblock Plus
    Color toggle (для ночного чтения)
    Flashblock
    NoScript
    RefControl
    RedCats
    

    Рекомендую использовать достаточно большой шрифт - берегите глаза! Также установите необходимые словари для Firefox.

    Утилиты для проверки состояния аппаратных компонентов

    Я прибегаю к помощи таких команд для проверки ресурсa батареи, температуры и прочих параметров моего компьютера под управлением OpenBSD.

    ...... == Первое соборное послание святого апостола Петра == .........
    === Глава 5, Стих 6 ===
    6 Итак смиритесь под крепкую  руку  Божию,  да  вознесет  вас  в  свое
    время.
    
    (b+/b-, c+/c-, +/-, *) >
    $ sysctl hw | grep fan
    hw.sensors.acpithinkpad0.fan0=1983 RPM
    $
    $ sysctl hw | grep bat
    hw.sensors.acpibat0.volt0=10.80 VDC (voltage)
    hw.sensors.acpibat0.volt1=10.47 VDC (current voltage)
    hw.sensors.acpibat0.power0=16.31 W (rate)
    hw.sensors.acpibat0.watthour0=55.61 Wh (last full capacity)
    hw.sensors.acpibat0.watthour1=2.78 Wh (warning capacity)
    hw.sensors.acpibat0.watthour2=0.20 Wh (low capacity)
    hw.sensors.acpibat0.watthour3=14.39 Wh (remaining capacity), OK
    hw.sensors.acpibat0.raw0=1 (battery discharging), OK
    hw.sensors.acpibat1.volt0=11.10 VDC (voltage)
    hw.sensors.acpibat1.volt1=10.49 VDC (current voltage)
    hw.sensors.acpibat1.power0=0.00 W (rate)
    hw.sensors.acpibat1.watthour0=87.85 Wh (last full capacity)
    hw.sensors.acpibat1.watthour1=4.39 Wh (warning capacity)
    hw.sensors.acpibat1.watthour2=0.20 Wh (low capacity)
    hw.sensors.acpibat1.watthour3=0.00 Wh (remaining capacity), CRITICAL
    hw.sensors.acpibat1.raw0=4 (battery critical), CRITICAL
    $
    

    Как видно, одна из моих батарей уже полностью разряжена, а вторая близка к пределу ёмкости.

    В заключение

    Я надеюсь, что эта заметка будет полезна и сможет показать каким образом я использую мою любимую операционную систему - Open BSD. Её потенциал, эффективность и простота заслуживают пристального внимания, особенно в наши дни повального увлечения мобильными устройствами и прочими "чёрными коробочками".

    Спасибо что зашли,

    Будьте благословенны!
    Денис

    14 Октября 2013 года.