My simplistic-looking yet advanced build of suckless's dynamic window manager.
89f9905714
It's not uncommon for one keysym to map to multiple keycodes. For example, the "play" button on my keyboard sends keycode 172, but my bluetooth headphones send keycode 208, both of which map back to XF86AudioPlay: % xmodmap -pke | grep XF86AudioPlay keycode 172 = XF86AudioPlay XF86AudioPause XF86AudioPlay XF86AudioPause keycode 208 = XF86AudioPlay NoSymbol XF86AudioPlay keycode 215 = XF86AudioPlay NoSymbol XF86AudioPlay This is a problem because the current code only grabs a single one of these keycodes, which means that events for any other keycode also mapping to the bound keysym will not be handled by dwm. In my case, this means that binding XF86AudioPlay does the right thing and correctly handles my keyboard's keys, but does nothing on my headphones. I'm not the only person affected by this, there are other reports[0]. In order to fix this, we look at the mappings between keycodes and keysyms at grabkeys() time and pick out all matching keycodes rather than just the first one. The keypress() side of this doesn't need any changes because the keycode gets converted back to a canonical keysym before any action is taken. 0: https://github.com/cdown/dwm/issues/11 |
||
---|---|---|
config.def.h | ||
config.mk | ||
drw.c | ||
drw.h | ||
dwm.1 | ||
dwm.c | ||
dwm.png | ||
LICENSE | ||
Makefile | ||
README | ||
transient.c | ||
util.c | ||
util.h |
dwm - dynamic window manager ============================ dwm is an extremely fast, small, and dynamic window manager for X. Requirements ------------ In order to build dwm you need the Xlib header files. Installation ------------ Edit config.mk to match your local setup (dwm is installed into the /usr/local namespace by default). Afterwards enter the following command to build and install dwm (if necessary as root): make clean install Running dwm ----------- Add the following line to your .xinitrc to start dwm using startx: exec dwm In order to connect dwm to a specific display, make sure that the DISPLAY environment variable is set correctly, e.g.: DISPLAY=foo.bar:1 exec dwm (This will start dwm on display :1 of the host foo.bar.) In order to display status info in the bar, you can do something like this in your .xinitrc: while xsetroot -name "`date` `uptime | sed 's/.*,//'`" do sleep 1 done & exec dwm Configuration ------------- The configuration of dwm is done by creating a custom config.h and (re)compiling the source code.