@@ 1,32 1,36 @@
-dwm-win32 is a port of the well known X11 window manager dwm to Microsoft Windows.
+dwm-win32 is a port of the well known X11 window manager dwm to Microsoft
+Windows.
Description
===========
-dwm is a dynamic window manager for Microsoft Windows. It 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, the
-title of the focused window, and the text read from the root window name property.
-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 is a dynamic window manager for Microsoft Windows. It 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.
-
Usage
=====
@@ 80,7 84,8 @@ Usage
- Toggles border of currently focused window.
Mod + i
- - Display classname of currently focused window, useful for wiriting tagging rules.
+ - Display classname of currently focused window, useful for wiriting
+ tagging rules.
MOD + Tab
- Toggles to the previously selected tags.
@@ 110,11 115,12 @@ Usage
Mouse
Left Button
- - click on a tag label to display all windows with that tag, click on the layout
- label toggles between tiled and floating layout.
+ - click on a tag label to display all windows with that tag, click
+ on the layout label toggles between tiled and floating layout.
Right Button
- - click on a tag label adds/removes all windows with that tag to/from the view.
+ - click on a tag label adds/removes all windows with that tag to/from
+ the view.
Alt + Left Button
- click on a tag label applies that tag to the focused window.
@@ 126,27 132,31 @@ Usage
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.
+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
-windows including toolbars etc. which we would have to filter out.
+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 windows including toolbars etc.
+which we would have to filter out.
-Unfortunately the SetWindowsHookEx thingy seems to require a separate dll because it
-will be loaded into each process address space.
+Unfortunately the SetWindowsHookEx thingy seems to require a separate
+dll because it will be loaded into each process address space.
TODO
====
- - show/hide child windows upon tag switch, in theory this should already work but
- in practice we need to tweak ismanageable() so that it recognises child windows
- but doesn't generate false positives.
- - fullscreen windows, mstsc for example doesn't resize properly when maximized.
+
+ - show/hide child windows upon tag switch, in theory this should already
+ work but in practice we need to tweak ismanageable() so that it
+ recognises child windows but doesn't generate false positives.
+ - fullscreen windows, mstsc for example doesn't resize properly when
+ maximized.
- Screensaver?
- system dialogs from desktop window
- urgent flag?
@@ 158,7 168,8 @@ TODO
- code cleanups all over the place
- multi head support?
- [ - introduce a CBTProc function and register it with SetWindowsHookEx(WH_CBT, ...)
- to handle window events instead of the current mechanism in WndProc which
- is based on the shellhookid and WH_SHELL because this only works for
- toplevel windows. See also the "How it works" section. ]
+ [ - introduce a CBTProc function and register it with
+ SetWindowsHookEx(WH_CBT, ...) to handle window events instead of the
+ current mechanism in WndProc which is based on the shellhookid and
+ WH_SHELL because this only works for toplevel windows. See also the
+ "How it works" section. ]