descriptiondwm-win32 dynamic window manager ported to Microsoft Windows
homepage URLhttp://www.brain-dump.org/projects/dwm-win32/
ownermat@brain-dump.org
last changeThu, 30 Apr 2020 13:14:24 +0000 (30 15:14 +0200)
content tags
add:
README.md

dwm-win32 - a Microsoft Windows port of the X11 dwm(1)

dwm-win32 is a port of the well known X11 window manager dwm to the Microsoft Windows platform.

It tries to bring the suckless philosophy and the principle of dynamic window management to Windows systems.

dwm-win32 screenshot

News

Warning: I no longer actively use and develop dwm-win32.

Description

dwm manages windows in tiled, monocle and floating layouts. Either layout can be applied dynamically, optimising the environment for the application in use and the task performed.

In tiled layouts 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.

dwm contains a small status bar which displays all available tags, the layout and the title of the focused window. 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 border around windows to indicate the focus state.

Installation

Either use the pre compiled exe files or download the source and compile it with MinGW and MSYS.

$EDITOR config.mk
$EDITOR config.h
make
make install

You should now be able to start dwm-win32, redirect stderr to a file if you want to see when something goes wrong.

Configuration

The configuration of dwm-win32 is done by creating a custom config.h and (re)compiling the source code. See the default config.h as an example, adapting it to your preference should be straightforward. You basically define a set of layouts and keys which dwm-win32 will use. There are some pre defined macros to ease configuration.

Because this is all pretty similar to X11 dwm you might find it's customization page useful.

Usage

Keyboard

dwm uses a modifier key (denoted by MOD) which defaults to CTRL + ALT.

Mouse

How it works

A ShellHook is registered which is notified upon window creation and destruction, however it is important to know that this only works for unowned top level windows. This means we will not get notified when child windows are created/destroyed. Therefore we scan the currently active top level window upon activation to collect all associated child windows. This information is for example used to tag all windows and not just the toplevel one when tag changes occur.

This is all kind of messy and we might miss some child windows in certain situations. A better approach would probably be to introduce a CBTProc function and register it with SetWindowsHookEx(WH_CBT, ...) with this we would get notified by all and every window, including toolbars etc. which we would have to filter out.

Unfortunately the SetWindowsHookEx thingy seems to require a separate DLL which will be loaded into each process address space.

Development

You can always fetch the current code base from the git repository located at Github or Sourcehut.

If you have comments, suggestions, ideas, a bug report, a patch or something else related to dwm-win32 then write to the suckless developer mailing list or contact me directly.

Below are some links which are in one way or another related to dwm-win32.

License

dwm-win32 obviously reuses some code of dwm and is released under the same MIT/X11 license.

shortlog
2020-04-30 Marc André... Reformat README as markdownmaster
2020-02-27 Marc André... Move TODO items from README into separate file
2014-11-15 Marc André... Reindent README to make github happy
2009-06-29 Marc Andre... Import dwm-win32-alpha2alpha2
2009-06-29 Marc Andre... Import dwm-win32-alpha1alpha1
tags
14 years ago alpha2
14 years ago alpha1
heads
4 years ago master