== 2025-07-24 (Thursday) == I've used i3 window manager on and off for several years. I prefer the keyboard driven tiling window managers. I thought I'd try DWM, to see what a "dynamic" tiling manager would be like. Obvously there's a bit of a learning curve when switching managers, especially tiling ones, as they are heavily reliant on key bindings, and these are always different. And there's the slightly different philosophy around handling windows between i3 (a manual tiler) and DWM (a dynamic tiler After a day or so I'm pretty comfortable in DWM. I like its simpicity. I've done some patching - added the systray patch and some config tweaks. I also decided to try their "st" terminal emulator. I've used LXTerminal in i3 for a long time, but it I'm going to enter the suckless methodology I might as well look at the terminal emulator too. This was a bit more involved, to get something I liked. I added a few patches - removing bold text, adding colo(u)r theme switching, fixing the w3m image rendering issues I found with the Ranger file manager. I've added DWMblocks too. And written a few small scripts to give it something to display. === DWM Blocks=== blocks.h ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ static const Block blocks[] = { /*Icon*/ /*Command*/ /*Update Interval*/ /*Update Signals {"Bat:", "acpi | awk '{print $3,$4,$5}' | sed s/,//", 5, 0}, {"", "~/bin/wlan_blocks.sh", 5, 0}, {"", "date '+%b %d (%a) %I:%M%p'", 5,0} }; static char delim[] = " | "; static unsigned int delimLen = 5; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The battery status is done within dwmblocks. Then there a wifi status script (wlan_blocks.sh), which started as 3 separate ones, but have been combined into one. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #!/bin/bash # # IP=`ip a | grep 255 | grep wlan | awk 'OFS=": " {print $NF, $2}' | sed 's/\/24//'` QUALITY=`iwconfig wlan0 | grep Quality | awk '{print $2}' | sed 's/\=/\ /' | awk '{print $2}' | sed 's/$ SIGNALS=`echo $QUALITY | awk '{print $1}'` NOISES=`echo $QUALITY | awk '{print $2}'` SNR=$(echo "scale=3; $(($SIGNALS)) / $(($NOISES))" | bc) SNR=$(echo "scale=3; $SNR * 100 "| bc ) AP=`iwconfig wlan0 | grep ESSID | awk '{print $4}' | sed s/^ESSID:/\ / | sed s/\"//g` echo $IP $AP "("${SNR%.*}"%"")" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ the output looks like: wlan0: 192.168.21.117 Greenmeadow (68%)