dwm is a dynamic window manager for X. It manages windows in tiled, stacked, and full-screen layouts, as well as many others with the help of optional patches. Layouts can be applied dynamically, optimizing the environment for the application in use and the task performed. dwm is extremely lightweight and fast, written in C and with a stated design goal of remaining under 2000 source lines of code. It provides multi-head support for xrandr and Xinerama.

Installing

These instructions will install dwm using makepkg along with the Arch Build System, or ABS for short. This will allow reconfiguring it at a later time without complications. If only interested in installing dwm for a test drive, simply install the binary package from the repositories instead:

# pacman -S dwm

Note that by omitting compiling dwm from source a great deal of customizability is lost, since dwm's entire configuration is performed by editing its source code. Taking this in mind, the rest of the article assumes that dwm has been compiled from source as explained in the entirety of this section.

Build and install package

This will compile dwm, build an Arch Linux package containing the resulting files, and install the package file all in one step. If problems are encountered, review the output for specific information.

Tip: If this directory (Template:Filename) is saved, it can be posteriorly used for making changes to the default configuration.

Configuring

dwm, as mentioned before, is exclusively configured at compile-time via some of its source files, namely Template:Filename and Template:Filename. While the initial configuration provides a good set of defaults, it's realistic to expect that at some point potential users will probably want to make adjustments to their setups.

Method 1: ABS rebuild (recommended)

Modifying dwm is quite simple using this route.

Customizing config.h

Browse to the dwm source code directory saved during the installation process; Template:Filename in the example. The Template:Filename found within this directory is where the general dwm preferences are stored. Most settings within the file should be self-explanatory, while others may not share the same trait. For detailed information on these settings, see the dwm website.

Note: Be sure to make a backup copy of config.h before modifying it, just in case something goes wrong.

Method 2: Mercurial (advanced)

dwm is maintained upstream within a Mercurial version control system. If already familiar with Mercurial, then maintaining configurations and patches within this system may be more convenient. A detailed tutorial on this method is available at the dwm website.

Before building dwm from the Mercurial sources, be sure to alter config.mk accordingly, because failure to do so may result in X crashes. Here are the values that need changing:

Conky statusbar

Available from the AUR, Template:Package AUR is a special build of conky which prints to stdout. If already accustomed to conky, a statusbar rich with information can be ready within minutes. Once conky has been configured to preference, simply print it to the statusbar via the Template:Codeline argument:

Extended usage

Patches & additional tiling modes

The official website is full of patches that can add extra functionality to dwm. Users can easily customize dwm by applying the modifications they like. The Bottom Stack patch provides an additional tiling mode that splits the screen horizontally, as opposed to the default vertically oriented tiling mode.

Fixing gaps around terminal windows

If there are empty gaps of desktop space outside terminal windows, it is likely due to the terminal's font size. Either adjust the size until finding the ideal scale that closes the gap, or toggle Template:Codeline to False in Template:Filename:

This will cause dwm to ignore resize requests from all client windows, not just terminals. The downside to this workaround is that some terminals may suffer redraw anomalies, such as ghost lines and premature line wraps, among others.

Urxvt

Another choice for urxvt users is applying the hints patch and regressing to dwm's original behaviour:

static Bool resizehints = True;

Restart dwm without logging out or closing programs

For restarting dwm without logging out or closing applications, change or add a startup script so that it loads dwm in a while loop, like this:

dwm can now be restarted without destroying other X windows by pressing the usual Mod-Shift-Q combination.

It's a good idea to place the above startup script into a separate file, Template:Filename for instance, and execute it through Template:Filename. From this point on, when desiring to actually end the X session simply execute Template:Codeline, or bind it to a convenient key.

Make the right Alt key work as if it were Mod4 (Windows Key)

When using Mod4 (aka Super/Windows Key) as the Template:Codeline, it may be equally convenient to have the right Alt key (Alt_R) act as Mod4. This will allow performing otherwise awkward keystrokes one-handed, such as zooming with Alt_R+Enter.

First, find out which keycode is assigned to Alt_R:

xmodmap -pke | grep Alt_R

Then simply add the following to the startup script (e.g. Template:Filename), changing the keycode 113 if necessary to the result gathered by the previous Template:Codeline command: