    {-# LANGUAGE FlexibleInstances, MultiParamTypeClasses #-}
    ----------------------------------------------------------------------------
    -- |
    -- Module      :  XMonad.Layout.NoFrillsDecoration
    -- Copyright   :  (c) Jan Vornberger 2009
    -- License     :  BSD3-style (see LICENSE)
    --
    -- Maintainer  :  jan.vornberger@informatik.uni-oldenburg.de
    -- Stability   :  unstable
    -- Portability :  not portable
    --
    -- Most basic version of decoration for windows without any additional
    -- modifications. In contrast to "XMonad.Layout.SimpleDecoration" this will
    -- result in title bars that span the entire window instead of being only the
    -- length of the window title.
    --
    -----------------------------------------------------------------------------

    module XMonad.Layout.NoFrillsDecoration
        ( -- * Usage:
          -- $usage
          noFrillsDeco

        , module XMonad.Layout.SimpleDecoration
        , NoFrillsDecoration
        ) where

    import XMonad.Layout.Decoration
    import XMonad.Layout.SimpleDecoration

    -- $usage
    -- You can use this module with the following in your
    -- @~\/.xmonad\/xmonad.hs@:
    --
    -- > import XMonad.Layout.NoFrillsDecoration
    --
    -- Then edit your @layoutHook@ by adding the NoFrillsDecoration to
    -- your layout:
    --
    -- > myL = noFrillsDeco shrinkText def (layoutHook def)
    -- > main = xmonad def { layoutHook = myL }
    --

    -- | Add very simple decorations to windows of a layout.
    noFrillsDeco :: (Eq a, Shrinker s) => s -> Theme
                 -> l a -> ModifiedLayout (Decoration NoFrillsDecoration s) l a
    noFrillsDeco :: s
    -> Theme
    -> l a
    -> ModifiedLayout (Decoration NoFrillsDecoration s) l a
    noFrillsDeco s :: s
    s c :: Theme
    c = s
    -> Theme
    -> NoFrillsDecoration a
    -> l a
    -> ModifiedLayout (Decoration NoFrillsDecoration s) l a
    forall (ds :: * -> *) a s (l :: * -> *).
    (DecorationStyle ds a, Shrinker s) =>
    s -> Theme -> ds a -> l a -> ModifiedLayout (Decoration ds s) l a
    decoration s
    s Theme
    c (NoFrillsDecoration a
     -> l a -> ModifiedLayout (Decoration NoFrillsDecoration s) l a)
    -> NoFrillsDecoration a
    -> l a
    -> ModifiedLayout (Decoration NoFrillsDecoration s) l a
    forall a b. (a -> b) -> a -> b
    $ Bool -> NoFrillsDecoration a
    forall a. Bool -> NoFrillsDecoration a
    NFD Bool
    True

    data NoFrillsDecoration a = NFD Bool deriving (Int -> NoFrillsDecoration a -> ShowS
    [NoFrillsDecoration a] -> ShowS
    NoFrillsDecoration a -> String
    (Int -> NoFrillsDecoration a -> ShowS)
    -> (NoFrillsDecoration a -> String)
    -> ([NoFrillsDecoration a] -> ShowS)
    -> Show (NoFrillsDecoration a)
    forall a. Int -> NoFrillsDecoration a -> ShowS
    forall a. [NoFrillsDecoration a] -> ShowS
    forall a. NoFrillsDecoration a -> String
    forall a.
    (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
    showList :: [NoFrillsDecoration a] -> ShowS
    $cshowList :: forall a. [NoFrillsDecoration a] -> ShowS
    show :: NoFrillsDecoration a -> String
    $cshow :: forall a. NoFrillsDecoration a -> String
    showsPrec :: Int -> NoFrillsDecoration a -> ShowS
    $cshowsPrec :: forall a. Int -> NoFrillsDecoration a -> ShowS
    Show, ReadPrec [NoFrillsDecoration a]
    ReadPrec (NoFrillsDecoration a)
    Int -> ReadS (NoFrillsDecoration a)
    ReadS [NoFrillsDecoration a]
    (Int -> ReadS (NoFrillsDecoration a))
    -> ReadS [NoFrillsDecoration a]
    -> ReadPrec (NoFrillsDecoration a)
    -> ReadPrec [NoFrillsDecoration a]
    -> Read (NoFrillsDecoration a)
    forall a. ReadPrec [NoFrillsDecoration a]
    forall a. ReadPrec (NoFrillsDecoration a)
    forall a. Int -> ReadS (NoFrillsDecoration a)
    forall a. ReadS [NoFrillsDecoration a]
    forall a.
    (Int -> ReadS a)
    -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
    readListPrec :: ReadPrec [NoFrillsDecoration a]
    $creadListPrec :: forall a. ReadPrec [NoFrillsDecoration a]
    readPrec :: ReadPrec (NoFrillsDecoration a)
    $creadPrec :: forall a. ReadPrec (NoFrillsDecoration a)
    readList :: ReadS [NoFrillsDecoration a]
    $creadList :: forall a. ReadS [NoFrillsDecoration a]
    readsPrec :: Int -> ReadS (NoFrillsDecoration a)
    $creadsPrec :: forall a. Int -> ReadS (NoFrillsDecoration a)
    Read)

    instance Eq a => DecorationStyle NoFrillsDecoration a where
        describeDeco :: NoFrillsDecoration a -> String
    describeDeco _ = "NoFrillsDeco"