Ссылка на аепрый пост, посвященный DWM: клиц
Итак, как мы помним, в DWM нет плагинов, но есть патчи. Таким образом, чтобы эХсперементировать над DWM с патчами, не трогая основной DWM из пакета, появляется задача: скомпилировать чистый DWM в папке пользователя и настроить его запуск, не трогая dwm из пакета.
Решение:
Скачиваем исходные коды по ссылке http://dl.suckless.org/dwm/
Распаковываем в ~/dwm, переходим в него, делаем make, получаем ошибку:
alexander@alexander-ThinkPad-X201 ~ $ cd ~/dwm alexander@alexander-ThinkPad-X201 ~/dwm $ make dwm build options: CFLAGS = -std=c99 -pedantic -Wall -Wno-deprecated-declarations -Os -I/usr/X11R6/include -I/usr/X11R6/include/freetype2 -D_BSD_SOURCE -D_POSIX_C_SOURCE=2 -DVERSION="6.1" -DXINERAMA LDFLAGS = -s -L/usr/X11R6/lib -lX11 -lXinerama -lfontconfig -lXft CC = cc CC drw.c drw.c:5:22: fatal error: X11/Xlib.h: Нет такого файла или каталога #include <x11 xlib.h=""> ^ compilation terminated. make: *** [drw.o] Ошибка 1
Лечим:
sudo apt-get install libx11-dev
Опять получаем ошибку, но уже другую:
drw.c:6:25: fatal error: X11/Xft/Xft.h: Нет такого файла или каталога
лечим:
sudo apt-get install libxft-dev
получаем:
/usr/include/X11/Xft/Xft.h:39:22: fatal error: ft2build.h: Нет такого файла или каталога
пробуем: make
получаем:
/usr/include/X11/Xft/Xft.h:39:22: fatal error: ft2build.h: Нет такого файла или каталога
лечим:
sudo apt-get install libfreetype6-dev
Этот файл лежит в /usr/include/freetype2
Правим config.mk
Находим строчку: INCS = -I${X11INC} -I${FREETYPEINC}
Правим: INCS = -I${X11INC} -I${FREETYPEINC} -I/usr/include/freetype2
Пробуем make
получаем:
X11/extensions/Xinerama.h: Нет такого файла или каталога
Но в config.mk говорится, что Xinerama, comment if you don't want it - так что ищем строки
# Xinerama, comment if you don't want it XINERAMALIBS = -lXinerama XINERAMAFLAGS = -DXINERAMA
и комментируем их
пробуем: make
Ура! Все скомпилировалось :)
Теперь патч,который выводит системный трей
Скачиваем его: http://dwm.suckless.org/patches/dwm-6.1-systray.diff (для версии 6.1)
Патчим:
patch < dwm-6.1-systray.diff
Получаем ошибку:
1 out of 33 hunks FAILED -- saving rejects to file dwm.c.rej
Ручками правим в пропатченном dwm.c строку 663: с XMoveResizeWindow(dpy, m->barwin, m->wx, m->by, m->ww, bh); на resizebarwin(m);
Компилируем: make
Все ок.
Теперь задача номер два: запустить наш DWM при входе. Для этого нам поможет
встроенная в ubuntu система альтернатив
.Добавляем в систему альтернативу. Смотрим, где располагается текущий dwm:
alexander@alexander-ThinkPad-X201 ~ $ which dwm
/usr/bin/dwm
Добавляем альтернативу при помощи ключа --install утилиты update-alternatives (для памяти: --install <ссылка> <имя> <путь> <приоритет>)
alexander@alexander-ThinkPad-X201 ~ $ sudo update-alternatives --install /usr/bin/dwm dwm /home/alexander/dwm/dwm 1065 [sudo] password for alexander: update-alternatives: используется /home/alexander/dwm/dwm для предоставления /usr/bin/dwm (dwm) в автоматический режим
Собственно, смотрим, что получилось... (выходим из текущего WM, и запускаем DWM)
Трей есть!
Далее, если надо вдруг удалить альтернативу, то используем ключ --remove
--remove <имя> <путь>
В данном случае:
alexander@alexander-ThinkPad-X201 ~ $ sudo update-alternatives --remove dwm /home/alexander/dwm/dwm [sudo] password for alexander: update-alternatives: используется /usr/bin/dwm.default для предоставления /usr/bin/dwm (dwm) в автоматический режим
Для истории:
--config - настраивает альтернативу. Например, sudo update-alternatives --config x-www-browser - может сменить браузер по умолчанию.
ls -al /etc/alternatives/ - посмотреть список файлов-ссылок на альтернативы
Основные ссылки:
editor — редактор текста (типа nano, vi, vim, emacs)
ftp — ftp-клиент
x-cursor-theme — тема курсора
x-session-manager — графическая сессия (kde, gnome, openbox)
x-terminal-emulator — эмулятор терминала
x-window-manager — оконный менеджер (kwin, metacity, openbox)
x-www-browser — веб-браузер
Ну и напоследок, так сказать - выводы про dwm.
А выводы немного неутешительны. Несмотря на то, что эксперимент достаточно удачен, рано или поздно - патчи войдут в конфликт друг с другом, и будет "весело" - в том смысле, что разгребать вручную кучу diff-файлов удовольствие, с моей точки зрения ниже среднего. Так что посмотрим в сторону других тайлинговых альтернатив dwm...