A dwm (Dynamic Window Manager) Journey- 3

In the third (3rd) installment of this tutorial series, I’ll discuss environment concerns/ requirements as well as implementation evaluation and components.

To begin, I’ll enumerate what I consider (for me) as critical user constraints.

Advice: It is always crucial to know what you want to accomplish before undertaking a major project or development.

The following list represents the major user and software support functions I want on my systems. Obviously, your list may be different from mine.

Here we go with my list (I’ve included tiny notes in parens.):

  • Dropbox (to synchronizes across my devices and provide reliable backup)
  • VirtualBox (to provide an environment for my Win-based genealogy software applications)
  • System status reporting (bashtop/bpytop, slstatus, & conky)
  • Easy keybinding (sxhkd, config.h)
  • quick system menu access (dmenu, rofi)
  • quick system help access (zenity)
  • functional, low resource terminal (st)
  • wallpaper and color changing aka. eye-candy (pywal, simple- suckless terminal)
  • simple audio recording (gnome-audio-recorder)
  • sound ‘suite’ (avidemux, ardour)

Additional items I want my systems to accommodate include:

  • easy multi-monitor support (I find dwm to be amazingly functional & easy here.)
  • simple window tiling (This works very well in dwm, once you understand dwm’s approach & functions.)
  • fun to use (purely subjective)
  • easy to make it look good (also subjective)

As part of setting the system environment up, I established for myself a “shopping list” of major distro requirements /preferences. The list below represents those factors  I considered and used to drive my final distro  selection.

I decided that I wanted to build my environment on the distro which best supported and offered the following:

  1. An active community of expert tiling window manager (wm) users
  2. Current (up-to-date) “Tiling Window Manager” (twm) software
  3. Excellent online support facilities including Wiki, Forum, etc.
  4. Ready (easy?) modification, tailorability
  5. Regular reliable, release cycles- Long term release cycles (LTS)  were not desirable. To me, LTS seem inconsistent with evolving wm technology(ies).
  6. I always prefer to using a non-systemd init based distribution. From my perspective, systemd is tolerable but never preferable.
  7. A release which will run effectively on my two platforms
  8. Low-resource use (RAM, CPU); again, this is purely subjective.

Now for the list of distros I evaluated (The numbers following the distro name indicate areas of weakness based on my above listed distro requirements):

  • LinuxMint (ubuntu derivative)- 1, 2, 4, 6, 8
  • PopOS (ubuntu derivative)- 1, 2, 4, 6, 8
  • EndeavourOS (arch derivative)- 1, 6, 7
  • ArchLabs (arch derivative)- 6, 7
  • anti-X (debian derivative)- 1, 2, 3, 4, 7
  • BunsenLabs (debian derivative)- 1, 2, 4, 6, 7
  • Void (independent)- 1, 3, 6, 7
  • ubuntu (debian derivative)- 1, 2, 4, 6, 8
  • manjaro (arch derivative)- 3, 6, 8
  • SparkyLinux (debian derivative)- 1, 2, 3, 4, 6, 7
  • devuan (debian derivative)- 1, 2, 4, 6, 7
  • Artix (arch derivative)- 3, 6, 7
  • Trident (void derivative)- 1, 2, 3, 4, 6, 7

The two finalists were:

  • MXLinux (debian derivative)- 1, 4
  • Arch Linux (independent)- 6 (the winner)

Given the above list of functional desires, I had to research and find the various bits from which to construct my system.  What follows are those tools/ apps I elected to use in building my environment (Desktop):

  • sxhkd (Simple X hotkey daemon from Baskerville)
  • dmenu (menu panel from suckless)
  • slstatus (status tray from suckless)
  • dwm (window manager from suckless)
  • rofi (pop-up/ dmenu tool from davatorium)
  • zenity (pop-up tool from gnome)
  • conky (help on the desktop from Brendan Matthews)
  • i3lock-fancy (screen lock app from meskarune)
  • xautolock (to time-out & lock screen)
  • lxsession (from lxqt in order to use lxpolkit)
  • lxsession (lxpolkit from lxsession)
  • bashmount (console based mount/ dismount app from jamielinux)
  • bpytop (console based CPU/Disk Reporting from aristocratos)
  • st (from suckless, Luke Smith’s custom tailored version)
  • dunst (notifier from the dunst-project)
  • hblock (in order to keep web adverts at bay from hectorm)

There are obviously many more apps in the environment I built; but, these are critical to the infrastructure I wanted. In the next installment of the series, I’ll provide dotfiles and setup guides.

If you find this material helpful or useful, please consider supporting us on Patreon or by purchasing Linux Bling from our online stores. We even offer dwm & suckless items!

Remember, like with all of my work, I am able to provide the following assurance(s):
  • It is almost certainly going to work until it breaks; although I have to admit it may never work and that would be sad.
  • When/if it does break, you may keep all of the pieces.
  • If you find my materials helpful, both you & I will be happy, at least for a little while.
  • My advice is worth every penny you paid for it!