diff options
author | Wirt Wolff <wirtwolff@gmail.com> | 2009-10-22 06:27:48 +0200 |
---|---|---|
committer | Wirt Wolff <wirtwolff@gmail.com> | 2009-10-22 06:27:48 +0200 |
commit | 14c7b7c5149909b90a10fdaf86d561fa7f736a8f (patch) | |
tree | 9a38635f7f97454dbd1244d37a09da0be73ec222 | |
parent | 7141da81104fae9e1892f580192a44713d52efe5 (diff) | |
download | XMonadContrib-14c7b7c5149909b90a10fdaf86d561fa7f736a8f.tar.gz XMonadContrib-14c7b7c5149909b90a10fdaf86d561fa7f736a8f.tar.xz XMonadContrib-14c7b7c5149909b90a10fdaf86d561fa7f736a8f.zip |
C.Desktop doc explaining common desktop config customizations
Ignore-this: 83d1f026ae4f4b7f5796269b51e98349
To close http://code.google.com/p/xmonad/issues/detail?id4
darcs-hash:20091022042748-18562-1ba7b4393b64cd6c0393f5472a023fd4bfff197e.gz
-rw-r--r-- | XMonad/Config/Desktop.hs | 143 | ||||
-rw-r--r-- | XMonad/Config/Gnome.hs | 2 | ||||
-rw-r--r-- | XMonad/Config/Kde.hs | 2 | ||||
-rw-r--r-- | XMonad/Config/Xfce.hs | 3 |
4 files changed, 148 insertions, 2 deletions
diff --git a/XMonad/Config/Desktop.hs b/XMonad/Config/Desktop.hs index 2831913..439a057 100644 --- a/XMonad/Config/Desktop.hs +++ b/XMonad/Config/Desktop.hs @@ -12,10 +12,45 @@ -- -- This module provides a config suitable for use with a desktop -- environment such as KDE or GNOME. - +----------------------------------------------------------------------------- module XMonad.Config.Desktop ( + + -- | Several basic integration settings are common to all of xmonad\'s + -- desktop integration configurations. The specific desktop environment + -- (DE) modules like "XMonad.Config.Gnome" use this module\'s + -- @desktopConfig@ to set up basic communication between xmonad and + -- the DE via a subset of the Extended Window Manager Hints (EWMH) + -- specification. Extra xmonad settings unique to specific DE\'s are + -- added by overriding or modifying @desktopConfig@ fields in the + -- same way that @defaultConfig@ is customized in @~/.xmonad/xmonad.hs@. + -- + -- For more information about EWMH see: + -- + -- <http://standards.freedesktop.org/wm-spec/wm-spec-latest.html> + -- + -- See also: "XMonad.Hooks.EwmhDesktops", "XMonad.Hooks.ManageDocks", + -- "XMonad.Util.EZConfig". + + -- * Usage + -- $usage + desktopConfig, + + -- * Customizing a desktop config + -- $customizing + + -- ** Modifying layouts, manageHook, or key bindings + -- $layouts desktopLayoutModifiers + + -- ** Modifying the logHook + -- $logHook + + -- ** Modifying the handleEventHook + -- $eventHook + + -- ** Modifying the startupHook + -- $startupHook ) where import XMonad @@ -26,6 +61,111 @@ import XMonad.Util.Cursor import qualified Data.Map as M +-- $usage +-- While this document describes how to configure xmonad, you also need +-- to set up your Desktop Environment (DE) and display manager to use +-- xmonad as its window manager. For DE and distro specific tips on +-- how to do so, see the xmonad wiki: +-- +-- <http://haskell.org/haskellwiki/Xmonad> +-- +-- To configure xmonad for use with a DE or with DE tools like panels +-- and pagers, in place of @defaultConfig@ in your @~/.xmonad/xmonad.hs@, +-- use @desktopConfig@ or one of the other desktop configs from the +-- @XMonad.Config@ hierarchy. The following setup and customization examples +-- work the same way for the other desktop configs as for @desktopConfig@. +-- If you are using a specific DE config, import its module instead, and +-- use its config in place of @desktopConfig@ in the following examples. +-- +-- > import XMonad +-- > import XMonad.Config.Desktop +-- > +-- > main = xmonad desktopConfig +-- +-- @desktopConfig@ is an 'XConfig' that configures xmonad to +-- ignore and leave room for dock type windows like panels and trays, adds +-- the default key binding to toggle panel visibility, and activates basic +-- EWMH support. It also sets a prettier root window mouse pointer. + +-- $customizing +-- To customize a desktop config, modify its fields as is illustrated with +-- @defaultConfig@ in the \"Extending xmonad\" section of "XMonad.Doc.Extending". + +-- $layouts +-- See also "XMonad.Util.EZConfig" for more options for modifying key bindings. +-- To add to layouts, manageHook or key bindings use something like the following +-- to combine your modifications with the desktop config settings: +-- +-- > import XMonad +-- > import XMonad.Config.Desktop +-- > import XMonad.Layout.Tabbed +-- > import XMonad.Util.EZConfig (additionalKeys) +-- > +-- > main = +-- > xmonad $ desktopConfig { +-- > -- add manage hooks while still ignoring panels and using default manageHooks +-- > manageHook = myManageHook <+> manageHook desktopConfig +-- > +-- > -- add a fullscreen tabbed layout that does not avoid covering +-- > -- up desktop panels before the desktop layouts +-- > , layoutHook = simpleTabbed ||| layoutHook desktopConfig +-- > } +-- > -- add a screenshot key to the default desktop bindings +-- > `additionalKeys` [ ((mod4Mask, xK_F8), spawn "scrot") ] +-- +-- To replace the desktop layouts with your own choices, but still +-- allow toggling panel visibility, use 'desktopLayoutModifiers' to +-- modify your layouts: +-- +-- > , layoutHook = desktopLayoutModifiers $ simpleTabbed ||| Tall 1 0.03 0.5 +-- +-- @desktopLayoutModifiers@ modifies a layout to avoid covering docks, panels, +-- etc. that set the @_NET_WM_STRUT_PARTIAL@ property. +-- See also "XMonad.Hooks.ManageDocks". + +-- $logHook +-- To add to the logHook while still sending workspace and window information +-- to DE apps use something like: +-- +-- > , logHook = myLogHook >> logHook desktopConfig +-- +-- Or for more elaborate logHooks you can use @do@: +-- +-- > , logHook = do +-- > dynamicLogWithPP xmobarPP +-- > updatePointer (Relative 0.9 0.9) +-- > logHook desktopConfig +-- + +-- $eventHook +-- To customize xmonad\'s event handling while still having it respond +-- to EWMH events from pagers, task bars, etc. add to your imports: +-- +-- > import Data.Monoid +-- +-- and use 'Data.Monoid.mappend' to combine event hooks (right to left application like @\<+\>@) +-- +-- > , handleEventHook = mappend myEventHooks (handleEventHook desktopConfig) +-- +-- or 'Data.Monoid.mconcat' (like @composeAll@) +-- +-- > , handleEventHook = mconcat +-- > [ myMouseHandler +-- > , myMessageHandler +-- > , handleEventHook desktopConfig ] +-- + +-- $startupHook +-- To run the desktop startupHook, plus add further actions to be run each +-- time xmonad starts or restarts, use '>>' to combine actions as in the +-- logHook example, or something like: +-- +-- > , startupHook = do +-- > startupHook desktopConfig +-- > spawn "xmonad-restart.sh" +-- > adjustEvenInput +-- + desktopConfig = defaultConfig { logHook = ewmhDesktopsLogHook , layoutHook = desktopLayoutModifiers $ layoutHook defaultConfig @@ -38,3 +178,4 @@ desktopKeys (XConfig {modMask = modm}) = M.fromList $ [ ((modm, xK_b), sendMessage ToggleStruts) ] desktopLayoutModifiers layout = avoidStruts layout + diff --git a/XMonad/Config/Gnome.hs b/XMonad/Config/Gnome.hs index 67c1537..8fa6b36 100644 --- a/XMonad/Config/Gnome.hs +++ b/XMonad/Config/Gnome.hs @@ -36,6 +36,8 @@ import System.Environment (getEnvironment) -- > import XMonad.Config.Gnome -- > -- > main = xmonad gnomeConfig +-- +-- For examples of how to further customize @gnomeConfig@ see "XMonad.Config.Desktop". gnomeConfig = desktopConfig { terminal = "gnome-terminal" diff --git a/XMonad/Config/Kde.hs b/XMonad/Config/Kde.hs index fca9f83..33daf65 100644 --- a/XMonad/Config/Kde.hs +++ b/XMonad/Config/Kde.hs @@ -35,6 +35,8 @@ import qualified Data.Map as M -- -- For KDE 4, replace 'kdeConfig' with 'kde4Config' -- +-- For examples of how to further customize @kdeConfig@ see "XMonad.Config.Desktop". + kdeConfig = desktopConfig { terminal = "konsole" diff --git a/XMonad/Config/Xfce.hs b/XMonad/Config/Xfce.hs index d3fb53e..6b2bd55 100644 --- a/XMonad/Config/Xfce.hs +++ b/XMonad/Config/Xfce.hs @@ -6,7 +6,7 @@ -- Copyright : (c) Ivan Miljenovic <Ivan.Miljenovic@gmail.com> -- License : BSD -- --- Maintainer : Ivan Miljenovic <Ivan.Miljenovic@gmail.com> +-- Maintainer : none -- Stability : unstable -- Portability : unportable -- @@ -32,6 +32,7 @@ import qualified Data.Map as M -- > -- > main = xmonad xfceConfig -- +-- For examples of how to further customize @xfceConfig@ see "XMonad.Config.Desktop". xfceConfig = desktopConfig { terminal = "Terminal" |