summaryrefslogtreecommitdiffhomepage
path: root/lib/Config.hs
diff options
context:
space:
mode:
authorjao <jao@gnu.org>2022-08-13 17:15:15 +0100
committerjao <jao@gnu.org>2022-08-13 17:15:15 +0100
commitf62d3d8c2bc488f26fa21a3f824879d614570aec (patch)
treec28fedc2bea27e7cc85df7d0e0b2fc9ee5bc1de9 /lib/Config.hs
parentc94a9349d25394726456efc8b1dbcca8385b1b77 (diff)
downloadxmobar-config-f62d3d8c2bc488f26fa21a3f824879d614570aec.tar.gz
xmobar-config-f62d3d8c2bc488f26fa21a3f824879d614570aec.tar.bz2
lib: clean ups
Diffstat (limited to 'lib/Config.hs')
-rw-r--r--lib/Config.hs117
1 files changed, 117 insertions, 0 deletions
diff --git a/lib/Config.hs b/lib/Config.hs
new file mode 100644
index 0000000..7e1b2bb
--- /dev/null
+++ b/lib/Config.hs
@@ -0,0 +1,117 @@
+module Config (
+ Palette(..), baseConfig, palette, (<~>), (>~<),
+ mkArgs, defaultHeight, fc, fn, fni)
+ where
+
+import System.Environment (lookupEnv)
+
+import Xmobar
+
+defaultHeight :: Int
+defaultHeight = 24
+
+data Palette = Palette { pNormal :: String
+ , pLow :: String
+ , pHigh :: String
+ , pDim :: String
+ , pFont :: String
+ , pBorder :: String
+ , pForeground :: String
+ , pBackground :: String
+ , pAlpha :: Int
+ , pIconRoot :: String
+ , pIsLight :: Bool
+ , pWm :: Maybe String
+ }
+
+fc color thing = "<fc=" ++ color ++ ">" ++ thing ++ "</fc>"
+fn n thing = "<fn=" ++ show n ++ ">" ++ thing ++ "</fn>"
+fni = fn 6
+
+lightTheme :: IO Bool
+lightTheme = fmap (== Just "light") (lookupEnv "JAO_COLOR_SCHEME")
+
+icons k = "/home/jao/.config/xmobar/icons/" ++ k
+
+lightPalette :: Palette
+lightPalette = Palette { pNormal = "#000000"
+ , pLow = "#4d4d4d"
+ , pHigh = "#a0522d"
+ , pDim = "#999999"
+ , pFont = "xft:DejaVu Sans Mono-8"
+ , pBorder = "#cccccc"
+ , pForeground = "#000000"
+ , pBackground = "#ffffff"
+ , pAlpha = 229
+ , pIconRoot = icons "light"
+ , pIsLight = True
+ , pWm = Nothing
+ }
+
+zenburnRed = "#CC9393"
+-- zenburnBack = "#2B2B2B"
+zenburnBack = "#1f1f1f"
+zenburnBackLight = "#383838"
+zenburnFg = "#989890" -- "#DCDCCC"
+zenburnYl = "#F0DFAF"
+zenburnGreen = "#7F9F7F"
+doomBack = "#22242b"
+
+darkPalette :: Palette
+darkPalette = Palette { pNormal = zenburnFg
+ , pLow = "darkseagreen4" -- zenburnGreen
+ , pHigh = zenburnRed
+ , pFont = "xft:DejaVu Sans Mono-8"
+ , pDim = "#7f7f7f"
+ , pBorder = "#000000" -- zenburnBackLight
+ , pForeground = zenburnFg
+ , pBackground = doomBack -- zenburnBack
+ , pAlpha = 255
+ , pIconRoot = icons "dark"
+ , pIsLight = False
+ , pWm = Nothing
+ }
+
+palette :: IO Palette
+palette = do
+ light <- lightTheme
+ wm <- lookupEnv "wm"
+ let p = if light then lightPalette else darkPalette
+ return $ p {pWm = wm}
+
+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:Symbola-12"
+ , "xft:FontAwesome-10"
+ , "xft:FontAwesome-9"]
+
+ , 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 =
+ args ++ [ "--low", pLow p , "--normal", pNormal p , "--high", pHigh p]
+
+(>~<) :: Palette -> [String] -> [String]
+(>~<) p args =
+ args ++ [ "--low", pHigh p , "--normal", pNormal p , "--high", pLow p]
+
+mkArgs :: Palette -> [String] -> [String] -> [String]
+mkArgs p args extra = concat [p <~> args, ["--"], extra]