Блог Александра Башкирова

ИТ и бизнес, компьютеры и ПО, фото, программирование и просто мысли…
Этот сайт в основном посвящен тому, что мне интересно вне работы. Ведется в порядке хобби.
Все изложенное на сайте - мое частное оценочное мнение и не может быть истолковано иначе.
Со всеми вытекающими из этого последствиями.

Осваиваем DWM: проблемы и решения (настройка трея, запуск dwm через систему альтернатив)

Просмотров: 5574Комментарии: 0
Linux

Ссылка на аепрый пост, посвященный 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...

Оставьте комментарий!


Комментарий будет опубликован после проверки

     

  

(обязательно)