Привет! Вы наверно меня уже знаете, ведь моя первая статья набрала 6к просмотров. Поэтому перейду сразу к сути статьи.
План
Почему именно DWM?
Как мы будем настраивать?
Какие еще утилиты мы будем использовать?
Настройка системы для DWM
Написание конфига
Почему именно DWM?
DWM - dynamic window manager. Это означает, что он может работать с floating и tiling окнами. Он разработан на языке C под Xserver. В его коде содержится ~2300 строк кода + дополнительные утилиты 500 строк.
Его расширение осуществляется патчами (которые мы тоже будем использовать). DWM надо собирать самому, что для многих является скорее плюсом, чем минусом. В нем можно работать "из коробки", все самое важное работает сразу после установки (открытие терминала, dmenu и т.д). В нем работает стандартное меню (в большинстве wm надо загружать доп. пакеты). Ну и самый главный плюс - настройка конфига происходит на языке C, а это означает, что каждый может написать свой элемент.
Как мы будем настраивать?
Настройка DWM, как я говорил, происходит на языке C, но если вы его не знаете, все равно не будет трудностей с настройкой. Есть 2 типа конфигов:
config.def.h - это конфиг, который потом превращается в config.h (если config.h нет)
config.h - главный конфиг, стоит выше, чем config.def.h
Еще, в DWM есть много патчей, которые мы с вами тоже будем использовать.
Какие еще утилиты мы будем использовать?
Первое, нам нужен dmenu (меню поиска и запуска файлов из папки /usr/bin
).
Второе, нам нужен терминал (sakura, kitty, alacritty или st), в нашем примере я буду использовать kitty (я им пользуюсь на основной машине)
В третьих, нам нужен редактор кода в терминале, я использую vim.
В четвертых, браузер (xD, он правда очень нужен).
Ну и в пятых, slstatus (или какое нибудь другое меню) (я покажу как можно его самому написать)
Настройка системы для DWM
DWM работает на X сервере, следовательно, нам нужен X сервер.
P.S. я буду использовать Ubuntu Server на виртуальной машине, но все действия (кроме пакетного менеджера) можно будет провернуть на других дистрибутивах.
Для установки X сервера вам надо прописать комманду
# Для Ubuntu
sudo apt install xorg
# Для Arch
sudo pacman -S xorg
Далее, вам нужен Git (для установки dwm, slstatus и тд)
Его также можно установить коммандой
# Для Ubuntu
sudo apt install git
# Для Arch
sudo pacman -S git
После этого, вам следует создать папку для wm, я так и назову wm
mkdir wm
cd wm
И начну делать git clone
всех нужных мне пакетов
git clone https://git.suckless.org/dwm
git clone https://git.suckless.org/dmenu
git clone https://git.suckless.org/slstatus
После выполнения всех процедур, я перейду в папку dwm
cd dwm
Ну и для просто стандартного запуска введу
sudo make clean install
P.S. если пишет что команда не найдена, установите пакет make в вашу систему.
После билда, перейдите в корень и откройте файл .xinitrc
и введите в нем exec dwm
Введите в терминале startx
и Вуа-ля!

Вот мы и запустили DWM на нашей машине, дальше надо его настроить
Настройка конфига
Нажимаешь Alt+Shift+Q
и выходим из DWM (сейчас ничего работать не будет). Перейдем в папку ~/wm/dmenu
и тоже соберем его.
Теперь мы можем снова прописать startx
и запустить dwm
После можно нажать Alt+p
и ву-а-ля! Запустился dmenu!

Он позволяет запускать любые процессы. Теперь снова выйдем из него, нажав Alt+Shift+Q
Далее, нам нужен терминал. Я говорил, что буду использовать Kitty, поэтому его поставлю.
Теперь, самое интересное, настройка самого конфига. Переходим в ~/wm/dwm
и открываем config.def.h
(надо удалить config.h командой rm -rf
)
Чтобы поменять терминал на свой (терминал в dwm открывается клавишами MOD+Shift+Enter
) (Mod = Alt), надо найти строчку
static const char *termcmd[] = {"st", NULL}
И там где "st" надо прописать имя своего терминала
static const char *termcmd[] = {"kitty", NULL}
Теперь сохраняем и выходим из редактора, и собираем DWM.
После сборки прописываем startx
и ву-а-ля! При нажатии Mod+Shift+Enter открывается терминал

Как я считаю, надо поменять клавишу Mod с Alt на Win.
Теперь, можем конфигурировать DWM внутри DWM)
Также открываем config.def.h
и находим строку
#define MODKEY Mod1Mask
Тут настройка для клавиши Alt, для то чтобы сменить клавишу, вместо Mod1Mack
надо вставить Mod4Mack
#define MODKEY Mod4Mask
Теперь удаляем config.h
и собираем наш DWM.
Для перезапуску выходим Alt+Shift+Q
и прописываем startx
Теперь, главная клавиша DWM - Win! Чтобы открыть терминал, вместо Alt, надо нажать Win.
Теперь, настройка slstatus.
SlStatus утилита которая меняет вот это

Например, на вот это

И обновляет каждую секунду
Переходим в ~/wm/slstatus
и входим в config.def.h
Появляется много настроек, но по дефолту стоит только время. Я бы поставил время, hostname и CPU в процентах
В массив arg
надо ввести следующее
static const struct arg args[] {
{datetime, "%s | ", "%F %T"},
{hostname, "%s | ", NULL},
{cpu_perc, "%s", NULL}
}
Сохраняем и выходим. Дальше собираем как и все утилиты.
И для теста, можем запустить его командой slstatus

Вот такая сборка! Расскажу вым про патчи.
Самый хороший патч для красивой системы - fullgaps
Патч для красивого меню - status2d (задавать цвета)
Ну и патч - noborder (убирает подсветку границ окна если оно в фулл режиме)
Конец
Спасибо за прочтение статьи! Если вам зайдет, выпущу 2 часть