Библиотека сайта rus-linux.net
Легковесные программы, распространяемые по свободной лицензии. Часть 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.
Очевидно, что похожим образом удобно задать все часто используемые кодировки символов.
Итак, нами были рассмотрены пути быстрого решения рутинных вычислительных задач средствами легковесных программ, распространяемых по свободной лицензии.
Рекомендуемая литература
- [ФилософияGNU] Философия проекта GNU. URL: http://www.gnu.org/philosophy/philosophy.ru.html (дата обращения: 07.08.2010).
- [Царьков2009] Царьков В. Vi. Некоторые интересные возможности. URL: http://rus-linux.net/nlib.php?name=/MyLDP/office/vi-interest.html (дата обращения: 04.08.2010).
- [Cooper] Cooper M. Advanced Bash-Scripting Guide (Перевод А. Киселева: Искусство программирования на языке сценариев командной оболочки). URL: http://www.opennet.ru/docs/RUS/bash_scripting_guide/ (дата обращения: 07.08.2010).
- [vi-ru] vi - экранно-ориентированный (визуальный) дисплейный редактор, основанный на ex. URL: http://www.opennet.ru/man.shtml?topic=vi&category=1 (дата обращения: 04.08.2010).
- [gnu-bash] GNU Bourne-Again Shell. URL: http://www.gnu.org/software/bash/ (дата обращения: 07.08.2010).
- [dmenu-suckless] dmenu. URL: http://tools.suckless.org/dmenu/ (дата обращения: 04.08.2010).
- [vim-docs] Vim. The docs. URL: http://vimdoc.sourceforge.net/ (дата обращения: 04.08.2010).