DWM. Часть 3. Dmenu и хоткеи

Dmenu - это замечательная и простая димнамическая менюшка для быстрого запуска приложений (правда, немного непривычная для «простых пользователей», ведь состоит не из имен приложений, а из системных команд). И сам разработчик предлагает пользоваться для быстрого запуска именно ей, даже прописав в конфиге DWM сочетание клавиш для неё. Просто установите dmenu из вашего репозитория, нажмите Alt-p, и вот что увидете:

DWM

 

Пользоваться dmenu крайне просто - жмите Alt-P, вписывайте имя приложения и запускайте. Строка справа позволяет выбирать стрелочками, также работает автодополнение по Tab (если вписать firef и нажать Tab, имя команды само дополнится до наиболее подходящего по смыслу - firefox).

Правила поведения окон

Добавив определенные приложения в автозагрузку, вы, возможно захотите задать им правила расположения, или теги по умолчанию для них. Для примера, сделаем так, чтобы при запуске иксов оявлялось окошко терминала и держалось на всех тегах, а на 8-м теге во весь экран - Pcmanfm (легковесный файловый менеджер), а на 9-м - Jabber-клиент Pidgin.

С тегами по умолчанию всё крайне просто. Идем в config.h и вновь находим блок /* tagging */, строку:

 

static const Rule rules[] = {

 

Здесь перечислены правила поведения окон, и по существующему шаблону, можно добавлять собственные правила. К примеру, для Pcmanfm:

 

/* class      instance    title       tags mask     isfloating   monitor */

{ "pcmanfm",  NULL,       NULL,       1 << 7,       False,       -1 },

 

1) Под «class» - имя команды.

2) 1 << 7 - тег для расположения, в данном случае восьмой (соответственно, 1 << 3 - четвертый, 1 << 5 - шестой)

3) False - использовать floating layout, или нет.

4) monitor - для систем с несколькими мониторами, при работе на одном мониторе, всегда указывайте -1.

Для терминала сделаем немного по другому, а именно:

 

{ "terminator",  NULL,       NULL,       ~0,       True,       -1 },

 

Тег ~0 означает - выводить на всех тегах, а просто 0 - выводить на тот тег, на котором вы находитесь.

Теперь ваш config.h должен выглядеть как-то так:

DWM

 

Скомпилируйте, перезагрузите dwm и теперь приложения будут открываться согласно заданным правилам. Будьте, однако, внимательны, ведь правила поведения задаются для приложения целиком, сколько бы раз вы его не запустили.

Сочетания клавиш

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

Сперва нам понадобится утилита xev - для того, чтобы узнать полное название и код клавиши. Установите её из вашего репозитория, запускайте, нажмите на желаемую клавишу, например PrtScr, и вот что увидите:

DWM

 

Эти данные нам и понадобятся, а именно - keysym. Найдите блок /* commands */

Для начала создадим саму команду, добавив в блок со строками вроде «static const char» строку:

 

static const char *screenshot[] = { "gnome-screenshot", NULL };

DWM

 

Далее, создадим сочетание, в блоке static Key keys[] = {

 

{ MODKEY,                       0xff61,      spawn,          {.v = screenshot } },

 

Теперь, при нажатии MODKEY (Alt) и 0xff61 (Print), будет выполняться (spawn) ранее созданная нами команда (скорее переменная) screenshot, содержащая в себе команду gnome-screenshot, которая делает снимки экрана.

Для примера, забъем на просто Print (без модкея) ту же команду, но с аргументом -i (с которой открывается окно gnome-screenshot с дополнительными функциями).

Для этого в первый блок добавим строку:

 

static const char *screenshot2[] = { "gnome-screenshot", "-i" };

 

А во второй:

 

 { 0,                            0xff61,      spawn,          {.v = screenshot2 } },

 

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

Следуя указанным выше шаблонам, можно добавлять собственные сочетания - главное, чтобы они не пересекались с уже имеющимися.

Компьютерный портал "Компаньон" © 2016.
В случае перепечатки материалов обязательна прямая ссылка на сайт cs-companion.ru.