garbeam@34: dwm is a dynamic window manager for X11.
garbeam@34:
arg@222:
Background
garbeam@47:
garbeam@47: As founder and main developer of wmii I came to the conclusion that
garbeam@47: wmii is too clunky for my needs. I don't need so many funky features
garbeam@47: and all this hype about remote control through a 9P service, I only
garbeam@47: want to manage my windows in a simple, but dynamic way. wmii never got
garbeam@47: finished because I listened to users, who proposed arbitrary ideas I
garbeam@88: considered useful. This resulted in an extreme CADT development model,
garbeam@88: which was a mistake. Thus the philosophy of dwm is simply to fit my
garbeam@88: needs (maybe yours as well). That's it.
garbeam@47:
garbeam@90:
Differences to ion, larswm, and wmii
garbeam@34:
garbeam@88: In contrast to ion, larswm, and wmii, dwm is much smaller, faster and simpler.
garbeam@34:
garbeam@34:
garbeam@36:
arg@205: dwm has no Lua integration, no 9P support, no editable
garbeam@88: tagbars, no shell-based configuration, no remote control, and comes
garbeam@88: without any additional tools like printing the selection or warping
garbeam@88: the mouse.
garbeam@36:
garbeam@36:
garbeam@36: dwm is only a single binary, it's source code is intended to never
garbeam@36: exceed 2000 SLOC.
garbeam@36:
garbeam@36:
garbeam@88: dwm is based on tagging and dynamic window management (however
garbeam@88: simpler than ion, wmii or larswm). It manages windows in
garbeam@88: tiling and floating modes. Either mode can be applied dynamically,
garbeam@88: depending on the application in use and the task performed.
garbeam@36:
garbeam@36:
arg@244: dwm doesn't distinguishes between layers, there is no floating or
garbeam@88: tiled layer. Wether the clients of currently selected tag are in
garbeam@88: tiled mode or not, you can re-arrange all clients on the fly.
garbeam@88: Popup- and fixed-size windows are treated floating, however.
garbeam@88:
garbeam@88:
garbeam@88: dwm is customized through editing its source code, that makes it
garbeam@88: extremely fast and secure - it does not process any input data
garbeam@88: which hasn't been known at compile time, except window title names
garbeam@88: and status text read from standard input. You don't have to learn
garbeam@88: Lua/sh/ruby or some weird configuration file format (like X
garbeam@88: resource files), beside C to customize it for your needs,
arg@155: you only have to learn C (at least editing header files).
garbeam@88:
garbeam@88:
garbeam@88: Because dwm is customized through editing its source code, it's
garbeam@88: pointless to make binary packages of it. This keeps its userbase
garbeam@88: small and elitist. No novices asking stupid questions.
garbeam@36:
garbeam@36:
garbeam@36: dwm uses 1-pixel borders to provide the maximum of screen real
garbeam@88: estate to clients. Small titlebars are only drawn in front of
garbeam@88: unfocused clients.
garbeam@36:
garbeam@36:
garbeam@88: dwm reads from standard input to print arbitrary status text (like
garbeam@88: the date, load, battery charge). That's much simpler than
garbeam@88: larsremote, wmiir and what not...
garbeam@58:
garbeam@58:
garbeam@90: It can be downloaded and distributed under the conditions
garbeam@96: of the MIT/X Consortium license.
garbeam@36:
arg@205:
arg@205: Optionally you can install dmenu to extend dwm with a wmii-alike menu.
arg@205:
garbeam@96: dwm is actively developed in parallel to wmii. You can browse its source code repository or get a copy using Mercurial with following command:
garbeam@34: