This is my coffee's DWM, with all resources I value, mostly efficiency and performance, but also with a simplistic beauty look. I made these configs thinking in optimize both my work and daily usage the maximum as possible, with functions, rules and shortcuts for all considerable and frequently used programs, applications, tools and even personal scripts. It took a while, but I'm really happy with the result and probably will never get used to another interface again.
These configurations are based in chadwm. I'll let all the important things about the interface below, for you to get into it, however you may check the config.h file yourself and make your own configurations (actually, you should do that). Also, I'd like to say I got some really useful resources from Luke Smith's config, which saved me a lot of time for build my own. So, a special thanks to him and Siduck76, the original creator of chadwm.
some looks:
Clean
Beautiful
Efficient
Flexible
Extensible
last update: Feb 1st, 2021
$ git clone https://github.com/chown-coffee/dwm.git
$ cd dwm
$ cp -R .dwm ~
$ chmod -R 755 ~/.dwm/*.sh
$ ln -s ~/.dwm/layoutmenu.sh /usr/bin/layoutmenu.sh # might need sudo
$ mkdir -p ~/.local/share/fonts
$ cp fonts/* ~/.local/share/fonts
$ cd dwm
$ # change `/home/coffee/.dwm/layoutmenu.sh` to `/home/youruser/.dwm/layoutmenu.sh` inside interface/config.def.h
$ make clean install # might need sudo
I use xorg as display server and xinitrc as my dwm launcher. If you want to check, there is my ~/.xinirc file. If you opt for the same method, then you just need to type startx
in your tty, and voilá, your DWM is launched.
So, without further ado, there are all the important things/notes about my DWM:
Well, of course, after so many configurations, some external programs were used in a couple parts of the code, such as in keyboard shortcuts definitions, for example. So, I made a list of all the dependencies needed for my DWM works 100%. And there it is.
Actually, to see all the shortcuts defined in my DWM, you may just go to my config.h file and see the keys list. But, to make it easier (and more readable too), I created a separated file with all the shortcuts I set right here. So, you may follow this file to get into my k.s.
Some of the commands I use in DWM, calls a script in my machine. So, for you to have fully access to my DWM commands, you also need those. Oh, but look at that, they are luckily also in my github, right here. Just clone that in your $HOME directory and be happy.
These scripts must be present in you $HOME directory, otherwise, you'll need to change the call for them inside DWM's config.h. Your choice.
Last but not least, my DWM bar is completely made by personal scripts. I used dwmblocks for a while, but, with the desire to put something more simplistic (my likes), I made some simple scripts to launch in it. They are also in the .scripts directory I put previously. So, if you clone that, and put in your home directory like mentioned, you should be good. Or you can just adventure yourself in your own scripts or dwmblocks.
Well, that is pretty much it. I'd just like to put some important notes here:
-
All my interface initialization is being handle by my ~/.xinirc file, so it is interesting you take a look at it, as the scripts I have for initialization are being called there. For example, my dwm status bar is launch there, so, if you do not have it, your dwm bar will not have the scripts running. Another example is the wallpaper, that is also set there. So, look the end of the file and manage which lines you do or do not want in it.
-
Talking about wallpaper... Like said, my wallpaper is set by my ~/.xinirc file, and for that it searches for an image called wall.jpeg, wall.jpg or wall.png inside a directory called wallpaper. So, to set your wallpaper, just create a directory with the same name in your $HOME and put the image you want inside it with the name "wall.jpeg", "wall.jpg" or "wall.png". -"Hey Leo, but the image I want have neither of those extensions, what do I do? 😕". No problem, just add your image extension in this script, just like below:
actual line:
aux=`[[ -d "$HOME/wallpaper" ]] && cd "$HOME/wallpaper" && ls "wall."{"jpeg","jpg","png"} 2>/dev/null`
modified line, with .tiff extension added:
aux=`[[ -d "$HOME/wallpaper" ]] && cd "$HOME/wallpaper" && ls "wall."{"jpeg","jpg","png","tiff"} 2>/dev/null`
This script automatically sets a wallpaper called "wall" with any extension previously set/added. However, you must have only one wallpaper called "wall". If you have 2 files, one called wall.jpg and other called wall.png, the script will not set any wallpaper as a conflict had been detected.
You may already have noticed, but even my ~/.xinirc file being the one that loads my wallpaper, internally it is just calling a script called setwallpaper.sh
inside my .scripts directory. So, if you're not using my script folder, you need either to paste the script code directly in .xinitrc or implement your own wallpaper setting.
-
- If you want the wallpaper of prints above, it's just here.
My tags are all identified by icons, and each one has its purpose. So, for those interested, I'll let my daily workflow below:
© All icons used are free and made available by Font Awesome.
So, I think it's it. Thank you for the visit and have a good day.