module Config (Palette(..), baseConfig, palette, (<~>), mkArgs, defaultHeight) where import System.Environment (lookupEnv) import Xmobar defaultHeight :: Int defaultHeight = 24 data Palette = Palette { pNormal :: String , pLow :: String , pHigh :: String , pFont :: String , pBorder :: String , pForeground :: String , pBackground :: String , pAlpha :: Int , pIconRoot :: String } lightTheme :: IO Bool lightTheme = fmap (== (Just "light")) (lookupEnv "JAO_COLOR_SCHEME") lightPalette :: Palette lightPalette = Palette { pNormal = "black" , pLow = "#4d4d4d" , pHigh = "#a0522d" , pFont = "xft:Source Code Pro Medium-9" , pBorder = "grey80" , pForeground = "#000000" , pBackground = "white" , pAlpha = 255 , pIconRoot = "/home/jao/.xmobar/icons/light" } darkPalette :: Palette darkPalette = Palette { pNormal = "grey60" , pLow = "gray50" , pHigh = "#a0522d" , pFont = "xft:Source Code Pro Medium-10" -- , pFont = "xft:NotoMono-9,xft:Inconsolata-11" , pBorder = "grey30" , pForeground = "grey60" , pBackground = "black" , pAlpha = 0 , pIconRoot = "/home/jao/.xmobar/icons/dark" } palette :: IO Palette palette = do light <- lightTheme if light then return lightPalette else return darkPalette baseConfig :: Palette -> Config baseConfig p = defaultConfig { font = pFont p , borderColor = pBorder p , fgColor = (pForeground p) , bgColor = (pBackground p) , additionalFonts = [ "xft:Symbola-9" , "xft:Symbola-10" , "xft:Symbola-11" , "xft:Symbola-11" , "xft:Hack-7"] , border = NoBorder , alpha = (pAlpha p) , overrideRedirect = True , lowerOnStart = True , hideOnStart = False , allDesktops = True , persistent = True , sepChar = "|" , alignSep = "{}" , iconRoot = (pIconRoot p) } (<~>) :: Palette -> [String] -> [String] (<~>) p args = concat [ args , [ "--low", (pLow p) , "--normal", (pNormal p) , "--high", (pHigh p) ] ] mkArgs :: Palette -> [String] -> [String] -> [String] mkArgs p args extra = concat [(p <~> args), ["--"], extra]