DWM — минимализм в действии

С чего всё началось


Когда то в давние времена, когда не было ещё ноутбуков (т е когда они были не по карману) стоял у меня дома комп — Pentium чего то там, 64Mb оперативки, 2Gb HDD, дисплей 14".
KDE и Gnome упорно не смогли бы (даже если бы и захотели) запуститься на таком железе. А почту почитать хотелось да и в интернет погоду посмотреть, книжку почитать — тоже очень хотелось. Порывшись в сети, настроил IceWM, который на этом оборудовании вполне прилично работал, запускался Firefox и почта

Так началось моё увлечение быстрыми и функциональными средами, не проходит и года чтобы я не затестил что то новое. Сегодня вот хочу рассказать о DWM

Помимо работы в DWM есть небольшой опыт работы с awesome (сложный конфиг), xmonad (тоже непросто настроить первый минимум, default конфиг совсем уж простой), scrotwm (не нравиться концепция поддержки нескольких мониторов). Из «быстрых» сред достаточно долго работал с IceWM, Fluxbox.

Плюсы DWM — Быстродействие. Надёжность. Простота.


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

Выигрыш в скорости прорисовки и запуска приложений реально определить на глаз. Появляется ощущение того что комп «летает» в то время как на KDE тот же комп в лучшем случае «нормально функционирует».

По поводу же простоты хочу сказать следующее. Возможно это крайность — редактирование конфига в config.h, но изучение Lua (как в awesome), или haskell (как в xmonad) — это тоже крайности: пытаться построить нормальный
конфиг с помощью copy-paste в xmonad и awesome долгое и нудное дело,
учить новый язык программирования тем более.

На мой взгляд, из всех минималистичных сред DWM один из самых простых менеджеров окон.
Представляет собой один бинарный файл, без файла конфигурации и каких либо опций запуска. Конфигурация осуществляется путём редактирования файла include языка C.

При этом в default конфигурации работает сразу:
  1. тайлинг (modkey+t) и плавающий (Floating) режимы (modkey+f)
  2. в режиме тайлинг — увеличение/уменьшение количества клиентов мастер окна (modkey+i, modkey+d)
  3. изменения размеров областей (modkey+h, +l)
  4. и другие стандартные фичи тайлинг медеджеров.


Т е имеем минимум необходимого функционала тайлинг менеджера.

Кастомные клавиши настраиваются просто. Если это вызов внешней программы, вначале надо определить переменную с её вызовом, а затем вызвать. Вот допустим как я переопределил клавиши регулировки звука:

static const char *incr_sound[]  = { "amixer", "set", "Master", "2dB+",	 NULL };
static const char *decr_sound[]	 = { "amixer", "set", "Master", "2dB-",	 NULL };

...

static Key keys[] = {
...
	{ 0,          XF86XK_AudioRaiseVolume,      spawn,         {.v = incr_sound } },
	{ 0,	      XF86XK_AudioLowerVolume,	  spawn,	   {.v = decr_sound } },


Для быстрого запуска программ — я установил dmenu.



static const char *dmenucmd[] = { "dmenu_run", "-fn", font, "-nb", colors[0][2], "-nf",
				  colors[0][1], "-sb", colors[1][2], "-sf", colors[0][1], NULL };
...
{ Mod1Mask,                     XK_F2,     spawn,         {.v = dmenucmd } },


Немного о моих предпочтениях и требованиях к среде


Работа программистом предполагает несколько существенных моментов конфигурации среды разработки.

В общем говоря, работать конечно можно в любой среде и без изменения базовых настроек…
… но тогда неизбежны километры бега мыши по столу и часто (подсознательное) раздражение от скучного множественного выполнения однотипных действий.

Тема интенсификации работы и улучшения функциональности средств разработки очень широкая
и затрагивает массу аспектов и существуют миллионы возможных конфигураций.

Мне лично нужно следующее (по крайней мере не представляю как можно работать
этих фич):

  • Быстрое открытие по Hot Key наиболее часто используемых программ: текстового редактора, терминала, браузера: настроено как dmenu, modkey+S+Enter, modkey+c
  • Быстрый переброс этих окон вправо/влево, с экрана на экран: настроено как modkey+o
  • Возможность запуска других программ, желательно с авто-подсказками и без тормозов (как, например, в KDE по Alt+F2): Alt+f2, Modkey+r
  • Запуск программ при старте оконного менеджера: через .xinitrc
  • Вывод текущих даты и времени где то чтобы было видно на экране: через xsetroot в цикле
  • sys tray — место на экране где будут находиться иконки от всяких мессенжеров типа скайпа, конфигурации сети и т п: внешняя программа stalonetray
  • множество десктопов, чтобы хватило места разместить все мои работающие программы: в комплекте поставки
  • русификация: средства xorg
  • текущая индикация загрузки процессора (sysload): свой скрипт+xsetroot
  • индикация разряда бататеи, текущее время: свой скрипт+xsetroot


Что такое tiling-wm


Более подробно можно почитать тут: en.wikipedia.org/wiki/Tiling_window_manager

Для меня же лично, кратко сформулирую как: Tiling это когда не придется искать скрытое окно при большом их количестве, или когда не требуется тратить время на перетаскивание окон мышой туда сюда. Управление приложениями и их расположением на экране происходит преимущественно с клавиатуры. Нет необходимости долго жать Alt+Tab — все окна на виду.

Чтобы повеселить вас расскажу произошедшую недавнюю историю о «видимости окон».
Работал я в KDE… У меня два моника — тот что на лаптопе и тот что на столе.
Работая в Skype+Tmux удалённой сессии с коллегой я случайно как то не так сдвинул окно и потом: __не смог его найти__!?

У меня уже бывало такое в KDE когда двигая окно оно «проваливалось» на соседний desktop, но такого чтобы после этого я его не нашёл ещё не было!

В общем странная вышла ситуация, пришлось прервать наш митинг, благо мы почти всё обсудили. А что с окном? Оно нашлось. Случайно… Через ~ 2 часа — я его обнаружил в «невидимой» области между мониторами, которая образовалась от того, что мониторы разного размера а виртуальный экран в KDE прямоугольный. Закатилось оно короче в правый нижний угол, там «мёртвая» зона в 432 пикселя в высоту. Вот такая вот история.

Мораль: такого бы никогда не произошло в Tiling режиме так как все окна на виду.

Конкретика:

DWM представляет собой минималистичный WM, при этом предоставляя всё, что мне необходимо для успешной и продуктивной работы.

  1. 10 пре-конфигурённых workspaces по кнопкам modkey+n
  2. 3 режима — тайлинг, floating, monocle
  3. полный заголовок окна
  4. индикация заряда батареи, дата+время, sysload
  5. работа в тайлинг режиме: открытие новых окон, размеры областей, увеличение/уменьшение количества клиентов мастера
  6. задание floating и расположения для определённых приложений. gimp как пример.
  7. dmenu — быстрое динамическое меню
  8. мои скрипты — конфигурация дисплеев, sleep, set-desktop-wallpaper


По пунктам 1-8 смотрите моё видео. Я специально загнал монитор в режим с меньшим разрешением, чтобы на небольших мониторах было хорошо видно:



Минусы & недоработки:


  • думаю что default конфигурация должна быть удобна для всех. почему по умолчанию
    переключение режима (modkey-t, modkey-f) происходит для всех десктопов мне непонятно:
    это неудобно. пришлось ставить патч: dwm.suckless.org/patches/pertag
  • моя программка для установки даты и т п в тулбаре иногда теряет соединение с
    X сервером. Не знаю виноват ли в этом DWM или у меня какие то проблемы с xorg.
    Пришлось ввести цикл перезапуска.
  • всё таки отсутствие конфига и рестарта напрягает. я думаю что для языка C
    это несложная задачка пропарсить файл имя/значение. Цикл изменения config.h
    компиляция пришлось пройти раз 50 пока я не достроил всё что мне нужно.


Выводы



Возможно для многих DWM будет уж чересчур минималистичным для повседневной работы. Но могу порекомендовать одно — установив единожды и подстроив его под себя, DWM будет очень надёжным помощником в тех ситуациях когда KDE или что то другое отказывается работать правильно (длинная и муторная пересборка пакетов в Gentoo это самый яркий пример такого форс-мажора).

Внешние ссылки


Метки:
Поделиться публикацией
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама
Комментарии 41
  • +3
    >Конфигурация осуществляется путём редактирования файла include языка C.
    Спасибо, не нужно. Чем он лучше осома или xmonad тогда? Простое конфигурирование — это как в опенбоксе, например.
    • 0
      awesome конечно, более функциональный, но большинство фич особо и не пригодится, а самое основное в dwm есть. Недавно перешел на awesome с dwm — большой пользы не почувствовал. Ну а насчет пересборки при изменении конфигурации — собирается он быстро, устанавливается тоже, по крайней мере на арче все это делается одной командой.
    • +3
      Чем лучше? Вот допустим я несколько раз допускал ошибку в rc.lua (awesome) и не всегда (а точнее почти никогда) не получал вразумительной ошибки. А если сделать синтаксическую ошибку в config.h, это сразу достаточно убедительно, с указанием номера строки и примерной трактовки вылезет во время компиляции. По моим субъективным ощущениям это намного приятнее видеть что у тебя есть ошибка и где она.
      • 0
        Полностью согласен. Более того для проверки конфига осома надо перезапустить этот самый осом. В случае ошибки конфиг слетает в дефолтному, что дико раздражает. В случае двм компиляцией можно проверить конфиг на ошибки, и быть уверенным что нигде не поставил случайно лишнюю запятую
        • +1
          Чтобы раздражал не дико, а в отдельном окне, рекомендую вот такой скрипт :)

          #!/bin/sh
          
          set -e
          
          geom="1280x1024"
          disp="22"
          
          Xnest :$disp -geometry $geom &
          DISPLAY=":$disp" awesome &
      • –2
        > Firefox 1.0 was released on November 9, 2004.

        Как-то неприлично было в 2004 году (минимум) иметь первый пентиум :).
        • 0
          У меня первый пентиум и сейчас есть ;-)
          • 0
            Ну у меня есть ноутбук на процессоре 80C88, но это же не повод использовать его как основной комп :).
          • 0
            есть такая вещь, как home server, который не должен шуметь, а значит и греться, а значит он не сильно мощный, а значит чем меньше требования к ресурсам — тем лучше
            • 0
              а зачем на home server dwm то? у меня вот есть home server, а вот иксов там нет.
              • 0
                А что делает Ваш homeserver?
                • 0
                  Самая главная цель: качать торренты и хранить их на своём большом винте раздавая по сети.
                  Ну и вообще качать файлы.

          • +4
            > Когда то в давние времена, когда не было ещё ноутбуков (т е когда они были не по карману) стоял у меня дома комп — Pentium чего то там, 64Mb оперативки, 2Gb HDD, дисплей 14".
            KDE и Gnome упорно не смогли бы (даже если бы и захотели) запуститься на таком железе.

            amd k6-2 (233Mhz) / 48Mb simm / kde 3.0

            Все работало.
            • +1
              Кеды у меня на аналогичной конфигурации всё-таки подтормаживали, но работать было можно. С другой стороны, K6-2 — это было получше второго пня, если я правильно помню.
              • 0
                да нормально кеды работали. В 98-м году особо других конфигураций-то и не было. Вторые пни только появились и мы о них только слышали. А кеды уже были и работали. Не 3.0, правда, а 1.0. Но кто там считает :)
            • 0
              64 мегабайта для пентиума — это весьма и весьма круто.
              • 0
                Не «весьма», а «нормально».
              • +3
                Сам не любитель всяких рюшечек но как то уж слишком сурово выглядит :)
                • +3
                  Есть предположение, что хороший WM вообще никак не должен выглядеть — он должен просто работать :)
                • +4
                  Мне лично подуше более наследник dwm'а — awesome. Суперудобная и функциональная штука)
                  • +1
                    Он очень симпатичный, использую его. Будь там питон вместо Lua, цены бы ему не было.
                    Сейчас интересно посмотреть на xmobar и stumpwm, WM, где используются функциональные языки. Правда, все скины что я видел не так уж симпатичны, как awesome.
                    • +1
                      Lua — замечательный язык, очень рекомендую к изучению.
                      • 0
                        stumpwm давно не развивается, но есть замечательный оконный менеджер clfswm тоже на common lisp. я сидел на xmonad, dwm, awesome, stumpwm/dswm и по моему скромному мнению clfswm — самое лучшее что я за последнее время видел. я туда даже пару лейаутов законтрибьютил.
                      • +1
                        Кроме того, Lua оказался весьма простым языком (во всяком случае, до уровня, на котором можно спокойно редактировать конфиг). А вот в период пользования Xmonad как ни надеялся я огре^W обрести практических навыков на Haskell, продвинулся мало.
                        • 0
                          Но невозможность кастомизировать курсор огорчает. Он всегда на панелях и обоине остается дефолтный, в dwm — нет. Как по мне, так это очень большой минус.
                        • +1
                          Использую тайлинговый WM на нетбуке для экономия места на экране.
                          В качестве браузера советую использовать luakit, тоже весьма минималистично.
                          • +4


                            Простите, не удержался :) На самом деле очень интересно, идея очень интересная, я бы хотел такое решение и для винды. А там только хоткеи? Тайтлы, например, растягивать мышкой нельзя?
                            • 0
                              Можно. А так же даже передвигать мышкой, например, тоже можно
                              • 0
                                modkey + mousebutton, как и в других wm. Но рамки окна нет, за нее потягать не получится.
                              • 0
                                Сам использую awesome. dwm пробывал, понравилась его минималистичность. Но удобнее всё же awesome. Для отладки конфигов в .xinitrc засовывал xterm, из него запускал awesome. Тогда если где какая ошибка, она показывается. Это немного помогало.
                                И + вам за tiling-wm. Они действительно как наркотик)
                                • +2
                                  Да согласен. Попробовав тайлинг сложно вернуться к обычным WM
                                • 0
                                  Я новичок в линуксе, пользуюсь Убунтой с полгода наверное. И знаете, все время не оставляет ощущение легкой заторможенности интерфейса, какой-то «ватности». Т.е. там где в windows привыкаешь к одному времени реакции (на ввод символов, например), тут время пусть на миллисекунды, но больше.
                                  У меня довольно мощный шестиядерный процессор, прорва памяти, приличная встроенная графика, дело не в железе. Думается проблема в клиент-серверной архитектуре XWindows. Так ли это, или я заблуждаюсь?
                                  В других оконных системах такие же проблемы?
                                  • 0
                                    Gnome — однозначно подтормаживает. KDE пошустрее. Реально, субъективно для меня самый шустрый на прорисовку — awesome, видимо потому как пользуется он xcb а не xlib. Ну и вообще практически все «лёгкие» WM работают визуально быстрее. DWM, xmonad, Fluxbox — на любом из них можно увидеть что то же самое приложение (Chrome, Emacs) работает визуально быстрее (скроллинг и т п). К тому же я замечал некоторые проблемы в конфигурации драйверов, конкретно NVidia. Бывало у меня такое что на Nvidia картах на некоторых драйверах всё летало, а на других драйверах по тестам 3D всё было Ок (glxgears), а по проросовке 2D графики — тормоза. Стоит поэкспериментировать. Рекомендую начать с того же Fluxbox, запустить и посмотреть как то же самое работает там. Ну и с драйверами карты поиграться тоже можно.
                                    • 0
                                      У меня встроенное видео AMD, HD4250. Дискретный видеоадаптер как-то не нужен.
                                    • 0
                                      Попробуйте поиграться с драйверами, если стоят свободные — поставьте проприетарные, и наоборот.

                                      Попробуйте отключить графические эффекты в вашем менеджере окон, оцените скорость, включайте обратно по одному, чтобы выявить, на каком эффекте начинаются притормаживания или оставьте выключенными.
                                      • 0
                                        Я как-то поигрался с эффектами в Unity. В конце концов с рабочего стола пропало вообще всё кроме фонового рисунка и ярлыков. С трудом откатил.

                                        В принципе, я на многих разных компах наблюдал Убунту, везде все одинаково слегка ватное. Дело в том что на работе у меня Windows а дома Ubuntu, и эту разницу я ощущаю постоянно.
                                        • 0
                                          > Unity

                                          Попробуйте другую DE, может там композитор пошустрее будет.
                                    • 0
                                      я пользуюсь i3wm. для комфортной работы лучше ставить последнюю версию, там конфиги более человечные. поддерживает переименование workspace'ов (1: code, 2: file-manager), хоткеи настраиваются. мышой пользоваться можно, но смысла в этом нет, при использовании только клавиатуры меньше времени уходит на «возюкание» курсора по экрану.
                                      • 0
                                        Советую еще ознакомиться с ion3 и его форками. Там другой тип тайлинга (статический). Считаю его крайне удобным
                                        • –4
                                          > Когда то в давние времена, когда не было ещё ноутбуков (т е когда они были не по карману) стоял у меня дома комп — Pentium чего то там, 64Mb оперативки, 2Gb HDD, дисплей 14".

                                          o.0 DWM начат в 2006 году.

                                          > Возможно для многих DWM будет уж чересчур минималистичным для повседневной работы. Но могу порекомендовать одно — установив единожды и подстроив его под себя, DWM будет очень надёжным помощником в тех ситуациях когда KDE или что то другое отказывается работать правильно (длинная и муторная пересборка пакетов в Gentoo это самый яркий пример такого форс-мажора).

                                          Поставь себе KDE и не пиши идиотские высеры тут. DWM изначально был так спроектирован и Ансельм не будет слушать очередного советчика с хабра. Вам уже туда добавили Xft и прочее(насколько я знаю, уже давно им не пользуюсь). В 2007 году мы сами дописывали для него тулбары, Xft, режимы для tiled.
                                          • 0
                                            Запуск программ при старте оконного менеджера: через .xinitrc

                                            autostart
                                            sys tray — место на экране где будут находиться иконки от всяких мессенжеров типа скайпа, конфигурации сети и т п: внешняя программа stalonetray

                                            systray
                                            Не нужно никаких внешних программ. Просто dwm хорош, если поставить пару-тройку патчей.

                                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.