dwm

dwm is a dynamic window manager for X. It manages windows in tiled, monocle and floating layouts. All of the layouts can be applied dynamically, optimising the environment for the application in use and the task performed. In tiled layout windows are managed in a master and stacking area. The master area contains the window…

2
dwm

dwm

dwm is a dynamic window manager for X. It manages windows in tiled, monocle and
floating layouts. All of the layouts can be applied dynamically, optimising the
environment for the application in use and the task performed.

In tiled layout windows are managed in a master and stacking area. The master
area contains the window which currently needs most attention, whereas the
stacking area contains all other windows. In monocle layout all windows are
maximised to the screen size. In floating layout windows can be resized and
moved freely. Dialog windows are always managed floating, regardless of the
layout applied.

Windows are grouped by tags. Each window can be tagged with one or multiple
tags. Selecting certain tags displays all windows with these tags.

Each screen contains a small status bar which displays all available tags, the
layout, the number of visible windows, the title of the focused window, and the
text read from the root window name property, if the screen is focused. A
floating window is indicated with an empty square and a maximised floating
window is indicated with a filled square before the windows title. The selected
tags are indicated with a different color. The tags of the focused window are
indicated with a filled square in the top left corner. The tags which are
applied to one or more windows are indicated with an empty square in the top
left corner.

dwm draws a small customizable border around windows to indicate the focus
state.

Screenshot

Differences

In contrast to ion, larswm, and wmii, dwm is much smaller, faster and simpler.

  • dwm has no Lua integration, no 9P support, no shell-based configuration, no
    remote control, and comes without any additional tools, such as for printing
    the selection or warping the mouse.
  • dwm is only a single binary, and its source code is intended to never exceed
    2000 SLOC.
  • dwm doesn’t distinguish between layers: there is no floating or tiled layer.
    Whether or not the clients of currently selected tag(s) are in tiled layout,
    you can rearrange them on the fly. Popup and fixed-size windows are always
    floating, however.
  • dwm is customized through editing its source code, which makes it extremely
    fast and secure – it does not process any input data which isn’t known at
    compile time, except window titles and status text read from the root window’s
    name. You don’t have to learn Lua/sh/ruby or some weird configuration file
    format (like X resource files), beside C, to customize it for your needs: you
    only have to learn C (at least in order to edit the header file).
  • Because dwm is customized through editing its source code, it’s pointless to
    make binary packages of it. This keeps its userbase small and elitist. No
    novices asking stupid questions. There are some distributions that provide
    binary packages though.
  • dwm reads from the root window’s name to print arbitrary status text (like
    the date, load, battery charge). That’s much simpler than larsremote, wmiir and
    what not…
  • dwm creates a view for each Xinerama screen.

Links

Download

Support

See the faq for the frequent problems that
arise. The next step is to look at the sourcecode and the config.h for obvious
names, which could be related to the problem that arose. If that does not help
to fix the problem, then there is the #suckless IRC channel and the
mailinglist.

If it is your first time using dwm, start with reading the
tutorial.

Development

You can browse its source code repository or get a copy using git with the following command:

git clone https://git.suckless.org/dwm

Miscellaneous

Related discussion

related projects

  • awesome — dwm fork with XCB, EWMH, Lua script, Xft, D-Bus, multihead.. support
  • awm — (old) modified dwm with workspaces and /proc like interface
  • bwm — (old) modified dwm with extensive mouse support
  • cons-wm — minimalist wm in scheme (not tiled)
  • bug.n — dwm for Windows written in AutoHotkey
  • dvtm — virtual terminal manager (dwm on the console)
  • dwl — hackable dwm for Wayland
  • dwm-gtx — dwm branch with Xinerama support, pointer movement, different layout
  • dwm-sprinkles — dwm with colorfull bar, transparency, pre-configured pertag and more
  • dwm-win32 — dwm ported to windows
  • echinus — dwm fork with EWMH, Xft support
  • gemini — terminal manager
  • i3 — wmii fork with XCB, multihead, vertical column, command mode
  • qtile — pure python wm, used ideas from dwm
  • scrotwm — dwm clone with multihead, config file, restart.. support
  • TAL/wm — minimal tiled wm based on dwm (discontinued)
  • teslawm — dwm fork with multihead, mouse, stdin commands support (was dwm-rfigura)
  • xmonad — dwm clone in haskell

NOW WITH OVER +8500 USERS. people can Join Knowasiak for free. Sign up on Knowasiak.com
Read More

Leave a Reply

One thought on “dwm

  1. Aditya avatar

    I've used dwm as my window manager for a couple years now, after switching from i3, and have never looked back (i3 was fine, but it had a bug that was affecting me too often–I don't even remember what now).

    For me, the killer feature (aside from tiling vs overlapping) is that on my three monitors, I can switch virtual desktops independently on each monitor. After being able to do this, I don't understand why every window manager doesn't offer this. It's not uncommon with tiling WMs that have good multi-monitor support, but you really can't find it in traditional WMs. There's an unmaintained patch of openbox–openbox-multihead–that added the feature, and there's an "experimental" hybrid window manager written in Go (by the same author of the openbox patch), but no mainstream window managers appear to have the feature. Apparently it goes against a requirement/assumption in the EWMH spec and breaks existing pagers. But that's okay, because I don't use a pager.

    Anyway, it really is critical to how I work now. I can keep a set of windows on my right monitor, and flip between virtual desktops on my center monitor without the right monitor changing at all. (And no, using the "sticky" feature of other WMs doesn't work for me because sometimes I do want to flip to a different virtual desktop on the right monitor and have that set of windows for whatever context I'm switching to). Along the same lines, the pertag patch is part of making dwm the perfect windows manager for me.

    (If you're interested in the particular set of patches I use and my config, I maintain it at https://github.com/racingmars/dwm)