module XMonad.Util.Themes
    ( 
      
      listOfThemes
    , ppThemeInfo
    , xmonadTheme
    , smallClean
    , robertTheme
    , deiflTheme
    , oxymor00nTheme
    , donaldTheme
    , wfarrTheme
    , kavonForestTheme
    , kavonLakeTheme
    , kavonPeacockTheme
    , kavonVioGreenTheme
    , kavonBluesTheme
    , kavonAutumnTheme
    , kavonFireTheme
    , kavonChristmasTheme
    , ThemeInfo (..)
    ) where
import XMonad.Layout.Decoration
data ThemeInfo =
    TI { themeName        :: String
       , themeAuthor      :: String
       , themeDescription :: String
       , theme            :: Theme
       }
newTheme :: ThemeInfo
newTheme = TI "" "" "" defaultTheme
ppThemeInfo :: ThemeInfo -> String
ppThemeInfo t = themeName t <> themeDescription t <> "by" <> themeAuthor t
    where "" <> x = x
          x <> y = x ++ " - " ++ y
listOfThemes :: [ThemeInfo]
listOfThemes = [ xmonadTheme
               , smallClean
               , deiflTheme
               , oxymor00nTheme
               , robertTheme
               , donaldTheme
               , wfarrTheme
               , kavonForestTheme
               , kavonLakeTheme
               , kavonPeacockTheme
               , kavonVioGreenTheme
               , kavonBluesTheme
               , kavonAutumnTheme
               , kavonFireTheme
               , kavonChristmasTheme
               ]
xmonadTheme :: ThemeInfo
xmonadTheme =
    newTheme { themeName        = "xmonadTheme"
             , themeAuthor      = "David Roundy"
             , themeDescription = "The default xmonad theme"
             , theme            = defaultTheme
             }
smallClean :: ThemeInfo
smallClean =
    newTheme { themeName        = "smallClean"
             , themeAuthor      = "Andrea Rossato"
             , themeDescription = "Small decorations with a Ion3 remembrance"
             , theme            = defaultTheme { activeColor         = "#8a999e"
                                               , inactiveColor       = "#545d75"
                                               , activeBorderColor   = "white"
                                               , inactiveBorderColor = "grey"
                                               , activeTextColor     = "white"
                                               , inactiveTextColor   = "grey"
                                               , decoHeight          = 14
                                               }
             }
donaldTheme  :: ThemeInfo
donaldTheme =
    newTheme { themeName        = "donaldTheme"
             , themeAuthor      = "Andrea Rossato"
             , themeDescription = "Don's preferred colors - from DynamicLog...;)"
             , theme            = defaultTheme { activeColor         = "#2b4f98"
                                               , inactiveColor       = "#cccccc"
                                               , activeBorderColor   = "#2b4f98"
                                               , inactiveBorderColor = "#cccccc"
                                               , activeTextColor     = "white"
                                               , inactiveTextColor   = "black"
                                               , decoHeight          = 16
                                               }
             }
robertTheme  :: ThemeInfo
robertTheme =
    newTheme { themeName        = "robertTheme"
             , themeAuthor      = "Andrea Rossato"
             , themeDescription = "From Robert Manea's prompt theme"
             , theme            = defaultTheme { activeColor         = "#aecf96"
                                               , inactiveColor       = "#111111"
                                               , activeBorderColor   = "#aecf96"
                                               , inactiveBorderColor = "#111111"
                                               , activeTextColor     = "black"
                                               , inactiveTextColor   = "#d5d3a7"
                                               , fontName            = "-*-profont-*-*-*-*-11-*-*-*-*-*-iso8859"
                                               , decoHeight          = 16
                                               }
             }
deiflTheme :: ThemeInfo
deiflTheme =
    newTheme { themeName        = "deiflTheme"
             , themeAuthor      = "deifl"
             , themeDescription = "deifl's Theme"
             , theme            = defaultTheme { inactiveBorderColor = "#708090"
                                               , activeBorderColor   = "#5f9ea0"
                                               , activeColor         = "#000000"
                                               , inactiveColor       = "#333333"
                                               , inactiveTextColor   = "#888888"
                                               , activeTextColor     = "#87cefa"
                                               , fontName            = "-xos4-terminus-*-*-*-*-12-*-*-*-*-*-*-*"
                                               , decoHeight          = 15
                                               }
             }
oxymor00nTheme :: ThemeInfo
oxymor00nTheme =
    newTheme { themeName        = "oxymor00nTheme"
             , themeAuthor      = "Tom Rauchenwald"
             , themeDescription = "oxymor00n's theme"
             , theme            = defaultTheme { inactiveBorderColor = "#000"
                                               , activeBorderColor = "aquamarine3"
                                               , activeColor = "aquamarine3"
                                               , inactiveColor = "DarkSlateGray4"
                                               , inactiveTextColor = "#222"
                                               , activeTextColor = "#222"
                                               
                                               
                                               , fontName = "-*-Bandal-*-*-*-*-12-*-*-*-*-*-*-*"
                                               , decoHeight = 15
                                               , urgentColor = "#000"
                                               , urgentTextColor = "#63b8ff"
                                               }
             }
wfarrTheme :: ThemeInfo
wfarrTheme =
    newTheme { themeName        = "wfarrTheme"
             , themeAuthor      = "Will Farrington"
             , themeDescription = "A nice blue/black theme."
             , theme            = defaultTheme { activeColor         = "#4c7899"
                                               , inactiveColor       = "#333333"
                                               , activeBorderColor   = "#285577"
                                               , inactiveBorderColor = "#222222"
                                               , activeTextColor     = "#ffffff"
                                               , inactiveTextColor   = "#888888"
                                               , fontName            = "-*-fixed-medium-r-*--10-*-*-*-*-*-iso8859-1"
                                               , decoHeight          = 12
                                               }
             }
kavonForestTheme :: ThemeInfo
kavonForestTheme =
    newTheme { themeName        = "kavonForestTheme"
             , themeAuthor      = "Kathryn Andersen"
             , themeDescription = "Forest colours"
             , theme            = defaultTheme { activeColor         = "#115422"
                                               , activeBorderColor   = "#1a8033"
                                               , activeTextColor     = "white"
                                               , inactiveColor       = "#543211"
                                               , inactiveBorderColor = "#804c19"
                                               , inactiveTextColor   = "#ffcc33"
                                               }
             }
kavonLakeTheme :: ThemeInfo
kavonLakeTheme =
    newTheme { themeName        = "kavonLakeTheme"
             , themeAuthor      = "Kathryn Andersen"
             , themeDescription = "Lake (blue/green) colours"
             , theme            = defaultTheme { activeColor         = "#001166"
                                               , activeBorderColor   = "#1f3999"
                                               , activeTextColor     = "white"
                                               , inactiveColor       = "#09592a"
                                               , inactiveBorderColor = "#198044"
                                               , inactiveTextColor   = "#73e6a3"
                                               }
             }
kavonPeacockTheme :: ThemeInfo
kavonPeacockTheme =
    newTheme { themeName        = "kavonPeacockTheme"
             , themeAuthor      = "Kathryn Andersen"
             , themeDescription = "Peacock colours"
             , theme            = defaultTheme { activeColor         = "#190f4c"
                                               , activeBorderColor   = "#2b1980"
                                               , activeTextColor     = "white"
                                               , inactiveColor       = "#225173"
                                               , inactiveBorderColor = "#2a638c"
                                               , inactiveTextColor   = "#8fb2cc"
                                               }
             }
kavonVioGreenTheme :: ThemeInfo
kavonVioGreenTheme =
    newTheme { themeName        = "kavonVioGreenTheme"
             , themeAuthor      = "Kathryn Andersen"
             , themeDescription = "Violet-Green colours"
             , theme            = defaultTheme { activeColor         = "#37174c"
                                               , activeBorderColor   = "#333399"
                                               , activeTextColor     = "white"
                                               , inactiveColor       = "#174c17"
                                               , inactiveBorderColor = "#336633"
                                               , inactiveTextColor   = "#aaccaa"
                                               }
             }
kavonBluesTheme :: ThemeInfo
kavonBluesTheme =
    newTheme { themeName        = "kavonBluesTheme"
             , themeAuthor      = "Kathryn Andersen"
             , themeDescription = "Blue colours"
             , theme            = defaultTheme { activeColor         = "#000066"
                                               , activeBorderColor   = "#111199"
                                               , activeTextColor     = "white"
                                               , inactiveColor       = "#9999ee"
                                               , inactiveBorderColor = "#6666cc"
                                               , inactiveTextColor   = "black"
                                               }
             }
kavonChristmasTheme :: ThemeInfo
kavonChristmasTheme =
    newTheme { themeName        = "kavonChristmasTheme"
             , themeAuthor      = "Kathryn Andersen"
             , themeDescription = "Christmas (green + red) colours"
             , theme            = defaultTheme { activeColor         = "#660000"
                                               , activeBorderColor   = "#990000"
                                               , activeTextColor     = "white"
                                               , inactiveColor       = "#006600"
                                               , inactiveBorderColor = "#003300"
                                               , inactiveTextColor   = "#99bb99"
                                               }
             }
kavonAutumnTheme :: ThemeInfo
kavonAutumnTheme =
    newTheme { themeName        = "kavonAutumnTheme"
             , themeAuthor      = "Kathryn Andersen"
             , themeDescription = "Autumn (brown + red) colours"
             , theme            = defaultTheme { activeColor         = "#660000"
                                               , activeBorderColor   = "#990000"
                                               , activeTextColor     = "white"
                                               , inactiveColor       = "#542d11"
                                               , inactiveBorderColor = "#804d1A"
                                               , inactiveTextColor   = "#ffcc33"
                                               }
             }
kavonFireTheme :: ThemeInfo
kavonFireTheme =
    newTheme { themeName        = "kavonFireTheme"
             , themeAuthor      = "Kathryn Andersen"
             , themeDescription = "Fire (orange + red) colours"
             , theme            = defaultTheme { activeColor         = "#660000"
                                               , activeBorderColor   = "#990000"
                                               , activeTextColor     = "white"
                                               , inactiveColor       = "#ff8000"
                                               , inactiveBorderColor = "#d9b162"
                                               , inactiveTextColor   = "black"
                                               }
             }