1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
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
, pIsLight :: Bool
}
lightTheme :: IO Bool
lightTheme = fmap (== (Just "light")) (lookupEnv "JAO_COLOR_SCHEME")
icons k = "/home/jao/.config/xmobar/icons/" ++ k
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 = icons "light"
, pIsLight = True
}
zenburnRed = "#CC9393"
zenburnBack = "#2B2B2B"
zenburnBackLight = "#383838"
zenburnFg = "#DCDCCC"
zenburnYl = "#F0DFAF"
zenburnGreen = "#7F9F7F"
darkPalette :: Palette
darkPalette = Palette { pNormal = zenburnFg
, pLow = zenburnGreen
, pHigh = zenburnRed
, pFont = "xft:Source Code Pro Medium-9"
-- , pFont = "xft:NotoMono-9,xft:Inconsolata-11"
, pBorder = zenburnBackLight
, pForeground = zenburnFg
, pBackground = zenburnBack
, pAlpha = 255
, pIconRoot = icons "dark"
, pIsLight = False
}
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)
]
]
(>~<) :: Palette -> [String] -> [String]
(>~<) p args = concat [ args
, [ "--low", (pHigh p)
, "--normal", (pNormal p)
, "--high", (pLow p)
]
]
mkArgs :: Palette -> [String] -> [String] -> [String]
mkArgs p args extra = concat [(p <~> args), ["--"], extra]
|