diff --git a/README b/README
new file mode 100644
--- /dev/null
+++ b/README
@@ -0,0 +1,8 @@
+Quickstart: After installing Bluetile (use 'cabal install') just open a
+terminal under your current window manager/desktop environment
+(preferably GNOME) and enter 'bluetile' or '/path/to/bluetile' if it's not
+in your PATH. Bluetile will replace the currently running window manager
+(if the window manager supports this) and start up.
+
+See the man page of Bluetile for further information - including how to
+set up Bluetile as your permanent window manager.
diff --git a/Setup.lhs b/Setup.lhs
--- a/Setup.lhs
+++ b/Setup.lhs
@@ -6,13 +6,23 @@
 > import System.FilePath
 > import System.Directory
 > import Control.Monad
-> main = defaultMainWithHooks (simpleUserHooks { postInst = myPostInst } )
+> main = defaultMainWithHooks (simpleUserHooks { postCopy = myPostCopy, postInst = myPostInst } )
 >
-> -- postInst hook to move helper binaries to the libexec directory
+> myPostCopy :: Args -> CopyFlags -> PackageDescription -> LocalBuildInfo -> IO ()
+> myPostCopy _ copyflags pkgdesc lbi = do
+>   let dirs = absoluteInstallDirs pkgdesc lbi (fromFlag $ copyDest copyflags)
+>   libExecHook dirs
+>
 > myPostInst :: Args -> InstallFlags -> PackageDescription -> LocalBuildInfo -> IO ()
 > myPostInst _ _ pkgdesc lbi = do
->     let dirs = absoluteInstallDirs pkgdesc lbi NoCopyDest
->     let lexecdir = libexecdir dirs
->     createDirectoryIfMissing True lexecdir
->     forM_ ["bluetiledock", "bluetilemockwin", "bluetilegreet"] $ \binary ->
->       renameFile (bindir dirs </> binary) (lexecdir </> binary)
+>   let dirs = absoluteInstallDirs pkgdesc lbi NoCopyDest
+>   libExecHook dirs
+>
+> -- hook to move helper binaries to the libexec directory
+> libExecHook :: InstallDirs String -> IO ()
+> libExecHook dirs = do
+>   let bdir = bindir dirs
+>   let lexecdir = libexecdir dirs
+>   createDirectoryIfMissing True lexecdir
+>   forM_ ["bluetiledock", "bluetilemockwin", "bluetilegreet"] $ \binary ->
+>     renameFile (bdir </> binary) (lexecdir </> binary)
diff --git a/bluetile.cabal b/bluetile.cabal
--- a/bluetile.cabal
+++ b/bluetile.cabal
@@ -1,14 +1,15 @@
 Name:                bluetile
-Version:             0.4.1
+Version:             0.4.3
 homepage:            http://www.bluetile.org/
-synopsis:            A modern tiling window manager with a gentle learning curve
+synopsis:            full-featured tiling for the GNOME desktop environment
 description:
-  Bluetile is a tiling window manager for X based on xmonad. Windows are
-  arranged to use the entire screen without overlapping. Bluetile's focus lies
-  on making the tiling paradigm easily accessible to users coming from
-  traditional window managers by drawing on known conventions and providing
-  both mouse and keyboard access for all features. It also tries to be usable
-  'out of the box', requiring minimal to no configuration in most cases.
+  Bluetile is a tiling window manager designed to integrate with the
+  GNOME desktop environment. It provides both a traditional, stacking
+  layout mode as well as tiling layouts where windows are arranged to
+  use the entire screen without overlapping. Bluetile tries to make the
+  tiling paradigm easily accessible to users coming from traditional
+  window managers by drawing on known conventions and providing both
+  mouse and keyboard access for all features.
 category:            System
 License:             BSD3
 License-file:        LICENSE
@@ -16,28 +17,33 @@
 Maintainer:          jan.vornberger@informatik.uni-oldenburg.de
 extra-source-files:  src/Config.hs,
                      src/BluetileDock.hs,
-		     src/XMonad/Actions/BluetileCommands.hs,
-		     src/XMonad/Actions/WindowMenu.hs,
-		     src/XMonad/Hooks/CurrentWorkspaceOnTop.hs,
-		     src/XMonad/Hooks/EwmhDesktops.hs,
-		     src/XMonad/Hooks/PositionStoreHooks.hs,
-		     src/XMonad/Layout/BorderResize.hs,
-		     src/XMonad/Layout/ButtonDecoration.hs,
-		     src/XMonad/Layout/DecorationAddons.hs,
-		     src/XMonad/Layout/Decoration.hs,
-		     src/XMonad/Layout/DraggingVisualizer.hs,
-		     src/XMonad/Layout/ImageButtonDecoration.hs
-		     src/XMonad/Layout/Minimize.hs,
-		     src/XMonad/Layout/MouseResizableTile.hs,
-		     src/XMonad/Layout/PositionStoreFloat.hs,
-		     src/XMonad/Layout/WindowSwitcherDecoration.hs,
-		     src/XMonad/Util/Font.hs,
-		     src/XMonad/Util/Image.hs,
-		     src/XMonad/Util/PositionStore.hs,
-		     src/XMonad/Util/XUtils.hs,
+                     src/XMonad/Actions/BluetileCommands.hs,
+                     src/XMonad/Actions/WindowMenu.hs,
+                     src/XMonad/Hooks/CurrentWorkspaceOnTop.hs,
+                     src/XMonad/Hooks/EwmhDesktops.hs,
+                     src/XMonad/Hooks/PositionStoreHooks.hs,
+                     src/XMonad/Layout/BorderResize.hs,
+                     src/XMonad/Layout/ButtonDecoration.hs,
+                     src/XMonad/Layout/DecorationAddons.hs,
+                     src/XMonad/Layout/Decoration.hs,
+                     src/XMonad/Layout/DraggingVisualizer.hs,
+                     src/XMonad/Layout/ImageButtonDecoration.hs
+                     src/XMonad/Layout/Minimize.hs,
+                     src/XMonad/Layout/MouseResizableTile.hs,
+                     src/XMonad/Layout/PositionStoreFloat.hs,
+                     src/XMonad/Layout/WindowSwitcherDecoration.hs,
+                     src/XMonad/Util/Font.hs,
+                     src/XMonad/Util/Image.hs,
+                     src/XMonad/Util/PositionStore.hs,
+                     src/XMonad/Util/XUtils.hs,
                      bluetiledock/Utils.hs,
                      bluetilegreet/Utils.hs,
-                     man/bluetile.1
+                     man/bluetile.1,
+                     man/gnome-bluetile-session.1,
+                     misc/bluetile.desktop,
+                     misc/bluetile-session.desktop,
+                     misc/gnome-bluetile-session.desktop,
+                     README
 data-files:          bluetiledock/bluetiledock.glade,
                      bluetiledock/floating.svg,
                      bluetiledock/tiled1.svg,
@@ -55,6 +61,15 @@
   Build-Depends:     base>=3, base<5, containers, process, filepath,
                      random, utf8-string,
                      xmonad>=0.9.1, xmonad-contrib>=0.9.1
+  if true
+    Ghc-Options:       -Wall
+  if impl(ghc >= 6.12.1)
+    Ghc-Options:       -fno-warn-unused-do-bind
+
+Executable gnome-bluetile-session
+  Hs-Source-Dirs:    gnome-bluetile-session
+  Main-is:           GnomeBluetileSession.hs
+  Build-Depends:     base>=3, base<5, filepath, unix
   if true
     Ghc-Options:       -Wall
   if impl(ghc >= 6.12.1)
diff --git a/bluetilegreet/bluetilegreet.glade b/bluetilegreet/bluetilegreet.glade
--- a/bluetilegreet/bluetilegreet.glade
+++ b/bluetilegreet/bluetilegreet.glade
@@ -23,8 +23,8 @@
               <widget class="GtkLabel" id="label1">
                 <property name="visible">True</property>
                 <property name="label" translatable="yes">&lt;span size="large" font_weight="bold"&gt;Welcome to Bluetile!&lt;/span&gt;
-A modern tiling window manager
-with a gentle learning curve.</property>
+full-featured tiling for the
+GNOME desktop environment</property>
                 <property name="use_markup">True</property>
                 <property name="justify">GTK_JUSTIFY_CENTER</property>
               </widget>
diff --git a/gnome-bluetile-session/GnomeBluetileSession.hs b/gnome-bluetile-session/GnomeBluetileSession.hs
new file mode 100644
--- /dev/null
+++ b/gnome-bluetile-session/GnomeBluetileSession.hs
@@ -0,0 +1,24 @@
+----------------------------------------------------------------------------
+-- |
+-- Module      :  Main
+-- Copyright   :  (c) Jan Vornberger 2009
+-- License     :  BSD3-style (see LICENSE)
+--
+-- Maintainer  :  jan.vornberger@informatik.uni-oldenburg.de
+-- Stability   :  unstable
+-- Portability :  not portable
+--
+-----------------------------------------------------------------------------
+
+module Main (main) where
+
+import System.Posix.Env
+import System.Posix.Process
+import System.FilePath
+import Paths_bluetile
+
+main :: IO ()
+main = do
+    binDir <- getBinDir
+    setEnv "WINDOW_MANAGER" (binDir </> "bluetile") True
+    executeFile "gnome-session" True [] Nothing
diff --git a/man/bluetile.1 b/man/bluetile.1
--- a/man/bluetile.1
+++ b/man/bluetile.1
@@ -124,37 +124,55 @@
 .\" ========================================================================
 .\"
 .IX Title "BLUETILE 1"
-.TH BLUETILE 1 "2010-06-06" "perl v5.10.1" ""
+.TH BLUETILE 1 "2010-06-27" "perl v5.10.1" ""
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
 .nh
 .SH "NAME"
-bluetile \- a modern tiling window manager with a gentle learning curve
+bluetile \- full\-featured tiling for the GNOME desktop environment
 .SH "SYNOPSIS"
 .IX Header "SYNOPSIS"
 bluetile [\-\-help] [\-\-version] [\-\-restart]
 .SH "DESCRIPTION"
 .IX Header "DESCRIPTION"
-\&\fBBluetile\fR is a tiling window manager for X based on xmonad. Windows are
-arranged to use the entire screen without overlapping. \fBBluetile\fR's focus
-lies on making the tiling paradigm easily accessible to users coming
-from traditional window managers by drawing on known conventions and
-providing both mouse and keyboard access for all features. It also tries
-to be usable 'out of the box', requiring minimal to no configuration in
-most cases.
+\&\fBBluetile\fR is a tiling window manager designed to integrate with the
+\&\s-1GNOME\s0 desktop environment. It provides both a traditional, stacking
+layout mode as well as tiling layouts where windows are arranged to
+use the entire screen without overlapping. \fBBluetile\fR tries to make the
+tiling paradigm easily accessible to users coming from traditional
+window managers by drawing on known conventions and providing both
+mouse and keyboard access for all features.
 .IP "\(bu" 4
-Hybrid approach: Stacking window layout & tiling layouts available
+Designed to integrate with the \s-1GNOME\s0 desktop environment
 .IP "\(bu" 4
-Maximizing & minimizing windows in all layouts
+Hybrid approach: Stacking window layout & tiling layouts available
 .IP "\(bu" 4
 All features accessible from mouse, as well as keyboard
 .IP "\(bu" 4
+Maximizing & minimizing windows in all layouts
+.IP "\(bu" 4
 Good multihead support
 .IP "\(bu" 4
 Proper handling of fullscreen applications
-.IP "\(bu" 4
-Designed to integrate with the \s-1GNOME\s0 desktop environment
+.SH "OVERVIEW"
+.IX Header "OVERVIEW"
+To quickly get up and running just start \fBBluetile\fR from your current
+window manager/desktop environment (preferably \s-1GNOME\s0). \fBBluetile\fR will
+replace the currently running window manager (if the window manager
+supports this) and start up.
+.PP
+One way to set up \fBBluetile\fR as your default window manager under \s-1GNOME\s0 is
+to make sure that the environment variable \s-1WINDOW_MANAGER\s0 contains the
+path to the \fBBluetile\fR binary before \s-1GNOME\s0 starts. This can be achieved by
+putting something like the following line into ~/.gnomerc:
+.PP
+.Vb 1
+\&  export WINDOW_MANAGER=bluetile
+.Ve
+.PP
+If you use a packaged version of \fBBluetile\fR, your distribution might
+already provide you with a preconfigured xsession.
 .SH "OPTIONS"
 .IX Header "OPTIONS"
 \&\fB\-\-help\fR    print help message
diff --git a/man/gnome-bluetile-session.1 b/man/gnome-bluetile-session.1
new file mode 100644
--- /dev/null
+++ b/man/gnome-bluetile-session.1
@@ -0,0 +1,144 @@
+.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.07)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.el \{\
+.    de IX
+..
+.\}
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "GNOME-BLUETILE-SESSION 1"
+.TH GNOME-BLUETILE-SESSION 1 "2010-06-24" "perl v5.10.1" ""
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+gnome\-bluetile\-session \- Invoke gnome\-session with Bluetile as window manager
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+gnome-bluetile-session
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+Invokes gnome-session after setting the environment variable
+\&\s-1WINDOW_MANAGER\s0 to the path of the \fBBluetile\fR binary. This will start up
+the \s-1GNOME\s0 desktop environment with Bluetile as the window manager.
+.SH "AUTHOR"
+.IX Header "AUTHOR"
+Jan Vornberger <jan.vornberger@informatik.uni\-oldenburg.de>
diff --git a/misc/bluetile-session.desktop b/misc/bluetile-session.desktop
new file mode 100644
--- /dev/null
+++ b/misc/bluetile-session.desktop
@@ -0,0 +1,7 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=Bluetile
+Comment=Tiling window manager
+Exec=bluetile
+Icon=bluetile.png
+Type=XSession
diff --git a/misc/bluetile.desktop b/misc/bluetile.desktop
new file mode 100644
--- /dev/null
+++ b/misc/bluetile.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Type=Application
+Encoding=UTF-8
+Name=Bluetile
+Exec=bluetile
+NoDisplay=true
+X-GNOME-WMName=bluetile
+X-GNOME-Autostart-Phase=WindowManager
+X-GNOME-Provides=windowmanager
+X-GNOME-Autostart-Notify=true
diff --git a/misc/gnome-bluetile-session.desktop b/misc/gnome-bluetile-session.desktop
new file mode 100644
--- /dev/null
+++ b/misc/gnome-bluetile-session.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=GNOME + Bluetile
+Comment=Tiling window manager
+TryExec=/usr/bin/gnome-session
+Exec=gnome-bluetile-session
+Icon=bluetile.png
+Type=XSession
diff --git a/src/Config.hs b/src/Config.hs
--- a/src/Config.hs
+++ b/src/Config.hs
@@ -180,6 +180,7 @@
 bluetileConfig =
     defaultConfig
         { modMask = mod4Mask,   -- logo key
+          startupHook = ewmhDesktopsStartup,
           manageHook = bluetileManageHook,
           layoutHook = bluetileLayoutHook,
           logHook = currentWorkspaceOnTop >> ewmhDesktopsLogHook,
diff --git a/src/Main.hs b/src/Main.hs
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -8,7 +8,7 @@
 -- Stability   :  unstable
 -- Portability :  not portable
 --
--- Bluetile - a modern tiling window manager with a gentle learning curve
+-- Bluetile - full-featured tiling for the GNOME desktop environment
 --
 -----------------------------------------------------------------------------
 
