Why this?I mentioned on the front page that I've been a GNU/Linux user for some time. During that time I've played about a lot with desktop environments. Always looking for ways to improve my workflow and also have a desktop that is pleasing to the eye. To many the idea of "theming" their desktop is nothing more than changing the wallpaper or the colour of the panel along the bottom, but with free software you can go so much deeper than that. Swap out individual programs or config tools, change the desktop environment or window manager entirely and as far as most are concerned it's like you have a completely different computer. I've got a small collection of screenshots from more than a decade ago of all the various set-ups I tried. As I'm sure you can imagine, I was never 100% happy and even if I thought I was then sooner or later that would change, much like habitual distro-hopping.
Desktop paradigmsAlthough you may not have given it much thought, most desktop environments are built around the use of a mouse. There are things that you have to click on to make things happen. Opening or closing programs, copying or deleting files and folders, or moving and resizing windows... these are all things that we habitually use a mouse for but this workflow is something that we tend not to question.
Here's a question that I have considered for more time than it's ever worth and is based upon a pet peeve of mine that I just can't shake: If you are running only one program, such as a browser or word processor, not multi-tasking or reading/copying text but just using the one program, why would you ever want the window to be any way other than full-screen? The only time that your full attention would move away from that one full-screen app would be to do something else.
What I've madeOK, so enough complaining... The purpose of this page is for me to present my solution. Thanks to Luke Smith, whose face is in a screenshot above, about a year ago I got into ricing the i3 window manager. I started off by trying out his LARBS environment that he was posting a bunch of videos about but soon after started changing things so much that I decided to start making it all again myself. Shortly after that time that Luke also began posting about dwm and using suckless tools. I decided to have a go at dwm, and writing my own status bar and that formed the basis of the desktop environment that I now spend all of my time in. I don't miss KDE, GNOME, XFCE or any part of them. Truth be told I have never liked GNOME 3 and KDE 4 was a mess too at first (the Linux desktop was pretty rough for about five years IMHO). In the last eighteen months I've found out about so many cool little tools that were always waiting there to be discovered that I don't want these bulky desktops and all their unnecessary components at all. My computer is basically idle all of the time and that means that it's always fast, usually cool, the battery lasts for three times as long and it's ready to work to full capacity if I need it too.
ConsiderationsIn deciding to publish my build of dwm and accompanying scripts I had to consider what I actually had to offer. There's nothing original or complicated here but I thought about, wrote down and tested a few different ways of doing things before I came up with my rules for how I want to be able to use the environment. Some things were simple, for example for my keyboard shortcuts (for which I use sxhkd) I separated tools for config like pulsemixer, nmtui, and top so that you always access these similar tools via Alt+Shift+<key>. For more every-day programs like brave, neomutt or pcmanfm it's just Alt+<key>. Key-binds that relate to controlling desktop layouts, moving windows to other desktops (called tags in dwm), closing windows and launching dmenu are all done with the Super key (AKA Windows Key). This helps to keep things organised so that the binds are easy to remember.
I decided that in my work flow there are only four layouts that I have needed in many months. These are:
The only other thing worth a mention here is that, as dwm doesn't have a minimise function, I have set up tag 9 with a wastebasket icon. That way I can put things there that I'm not using but don't wish to shut. This, again, is useful with something like Zoom, which spawns multiple windows that you don't need when you're on a call. In order to quickly check everything that is open you can switch to tag 0, which essentially activates all tags.
Patches and extrasThe patches that are currently installed in the build of dwm are:
Programs that need to be installed to have full functionality are:
- sxhkd - keyboard shortcuts
- picom - compositing manager
- dunst - desktop notifications
- clipmenu - clipboard
- unclutter - hide the pointer when you don't need it 😉
- feh - desktop background
- sxiv - picture viewer
- pcmanfm - graphical file manager, usually for when I'm sharing my screen during online lessons
- zathura - my favourite pdf reader
- arandr - screen resolution / monitor switching
Where to get it fromYou can get my build of dwm, sxhkd config and extra scripts from my github page at https://github.com/clearnitesky/rich_dwm_environment. Further updates to the environment are shared in the README file on github.
InstallationI use Manjaro, so it has only been tested on that but there is no reason to expect things not to work on other distributions. Colour icons on the bar and in st are currently not possible on Debian or Ubuntu but they are replaced with monotone icons. You will need to make sure that you have some xorg dev libraries installed, but if you encounter errors then those errors tell you which packages are missing.
- Clone the repo: $ git clone https://github.com/clearnitesky/rich_dwm_environment
- $ cd rich_dwm_environment
- $ sudo make clean install
- Link or copy the bin folder and sxhkd config file
For comments or questions please get in touch (contact details above).