Рейтинг@Mail.ru

Наши друзья и партнеры

UnixForum




Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Тематический каталог -> Работа в консоли Linux

Легковесные программы, распространяемые по свободной лицензии. Часть 1: dwm, dmenu, vim


Автор: Владимир Царьков
Дата публикации: 11.08.2010

Легковесные (lightweight) программы привлекательны по той причине, что, как правило, предсказуемы в работе и бережно относятся к ресурсам компьютера. Исходя из этого, такое программное обеспечение применимо для быстрого решения рутинных вычислительных задач (компьютер --- это вычислитель). Отметим также, что автор этой статьи выбирает исключительно из free/libre software (свободного программного обеспечения). Подробнее о free/libre software см. [ФилософияGNU].

Сегодня опишем пару, ранее не упоминавшихся в литературе, трюков, направленных на быстрое решение рутинных вычислительных задач, средствами оконного менеджера dwm (dynamic window manager), программы для создания меню dmenu, а также текстового редактора vim.

С целью помочь читателю в самообразовании, был составлен раздел "Рекомендуемая литература", находящийся в конце статьи.

dwm

Задача: Управление окнами с клавиатуры.

Настройка взаимодействия с клавиатурой в dwm осуществляется через файл config.h (копия config.def.h, которую предлагается изменять пользователю).

В Интернет маловато комментариев по поводу содержания config.h, что мешает быстро разобраться с особенностями управления dwm. Оговоримся, что мы отталкиваемся от исходного кода версии 5.8.

Возьмём, к примеру, строку:

dmenu_run --- это имя сценария для командной оболочки (например, GNU BASH --- GNU is not Unix Bourne-Again Shell), лежащего в /usr/bin/ и задуманного для запуска произвольной программы, создающей меню по команде с клавиатуры от пользователя.

Таким образом, нужно самостоятельно создать сценарий, имя которого указать в config.h.

К примеру, создадим файл с именем /usr/bin/menucmd, разрешим его исполнение (chmod 0755 /usr/bin/menucmd) и запишем туда следующий код:

"`dmenu -fn -*-*-medium-*-*-*-20-*-*-*-*-*-iso10646-* < ~/menu`"

В результате, рассмотренная ранее строка из config.h притерпела изменения:

static const char *menucmd[] = { "menucmd", NULL };

Осталось организовать запуск сценария menucmd по нажатию <Alt+P>:

{ MODKEY, XK_p, spawn, {.v = menucmd} },

Отображение кириллицы в dwm можно настроить через объявление константы font[]:

static const char font[] = "-*-*-medium-*-*-*-20-*-*-*-*-*-iso10646-*";

Подразумевается, что системная локаль --- ru_RU.UTF-8.

dmenu

Задача: Построение меню.

В предыдущем разделе мы организовали запуск программы dmenu по нажатию <Alt+P>. Осталось завести в домашнем каталоге файл c именем menu, из которого и будет осуществляться чтение элементов меню. dmenu, получая со стандартного входа последовательности символов, разделённые знаками новой строки, сопоставляет их с именами файлов, хранящихся в таких каталогах, как /usr/bin. И, в случае совпадения, и наличия соответствующих прав доступа на файл, происходит исполнение файла.

Содержимое ~/menu, например, такое:
mlterm
icecat
gimp
oowriter
xine

Лишний символ пробела в строке может сделать элемент меню неработоспособным.

Обычно нет необходимости сочинять сценарии чтения имён файлов из каталога /usr/bin: есть несколько программ с графическим интерфейсом, используемых постоянно, а всё остальное может быть запущено через эмулятор терминала.

vim

Задача: Открытие текстовых файлов в разных кодировках.

В случае, если системная локаль --- ru_RU.UTF-8, а интересующий файл filename закодирован в KOI8-R, редактировать его в vim без дополнительной подготовки не получится.

Каждый раз в интерпретаторе команд вручную вводить что-то вроде vim -c "edit ++enc=koi8-r" filename --- лишняя работа. Поэтому, добавим в ~/.bashrc следующие строки (Подразумевается использование bash. Подробнее см: [gnu-bash], [Cooper].):
export o1='edit'
export o2='++enc=koi8-r'
export vc='vim -c'
export koi="$vc$o1$o2"

В результате, по команде $koi filename, в читабельном виде откроется текстовый файл в кодировке KOI8-R.

Очевидно, что похожим образом удобно задать все часто используемые кодировки символов.

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

Рекомендуемая литература

Поделиться: