Как стать автором
Обновить

Создание простого для использования конфига DWM

Уровень сложности Средний
Время на прочтение 3 мин
Количество просмотров 7K

Привет! Вы наверно меня уже знаете, ведь моя первая статья набрала 6к просмотров. Поэтому перейду сразу к сути статьи.

План

  1. Почему именно DWM?

  2. Как мы будем настраивать?

  3. Какие еще утилиты мы будем использовать?

  4. Настройка системы для DWM

  5. Написание конфига

Почему именно 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 открывается терминал

Neofetch для красоты)
Neofetch для красоты)

Как я считаю, надо поменять клавишу 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 часть

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Делать 2 часть?
84.62% Да 22
15.38% Нет 4
Проголосовали 26 пользователей. Воздержались 2 пользователя.
Теги:
Хабы:
+4
Комментарии 15
Комментарии Комментарии 15

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн
PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн