summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Sima <ben@bsima.me>2019-04-10 21:39:30 -0700
committerBen Sima <ben@bsima.me>2019-04-10 21:39:30 -0700
commit535faaa791f2cecf0c9f8fba263183e7813be422 (patch)
treebc532087c4dcc442668d2078b09e479fc44bae14
parentf3e7a3dbb76f54608cd01b26cfdb3403d9822797 (diff)
xmonad: load colors from xtheme
-rw-r--r--xmonad.hs57
1 files changed, 40 insertions, 17 deletions
diff --git a/xmonad.hs b/xmonad.hs
index 4ea6da9..2aae9ce 100644
--- a/xmonad.hs
+++ b/xmonad.hs
@@ -29,16 +29,36 @@ import XMonad.Layout.TwoPane
import XMonad.Util.CustomKeys (customKeys)
import XMonad.Util.EZConfig (additionalKeys)
+-- Colors
+data Colors = Colors
+ { foreground :: String
+ , background :: String
+ }
+
+lightTheme = Colors
+ { foreground = "#2d9574"
+ , background = "#fbf8ef"
+ }
+
+darkTheme = Colors
+ { foreground = "#5d4d7a"
+ , background = "#292b2e"
+ }
+
+getColorsFromXtheme :: IO Colors
+getColorsFromXtheme = do
+ x <- readFile "/home/ben/.local/share/xtheme"
+ return $ case filter (/= '\n') x of
+ "light" -> lightTheme
+ "dark" -> darkTheme
+ _ -> darkTheme
+
nixBin :: String
nixBin = "/home/ben/.nix-profile/bin/"
altMask :: KeyMask
altMask = mod1Mask
--- Colors
-cyan = "#2aa198" -- ^ solarized cyan
-base3 = "#eee8d4" -- ^ solarized base3
-
insKeys :: XConfig l -> [((KeyMask, KeySym), X ())]
insKeys conf@(XConfig {modMask = modMask}) =
[ ((modMask, xK_y), spawn $ nixBin <> "passmenu")
@@ -86,15 +106,16 @@ addSpace = spacingRaw
True (Border 5 5 5 5)
True
-myTabCfg = def { fontName = "xft:mononoki:size=10:ant"
- , activeBorderColor = cyan
- , inactiveBorderColor = base3
- , activeColor = base3
- , inactiveColor = base3
- }
+myTabCfg theme = def
+ { fontName = "xft:mononoki:size=10:ant"
+ , activeBorderColor = foreground theme
+ , inactiveBorderColor = background theme
+ , activeColor = foreground theme
+ , inactiveColor = background theme
+ }
-myLayout = avoidStruts $
- noBorders (tabbed shrinkText myTabCfg) -- default tab config
+myLayout theme = avoidStruts $
+ noBorders (tabbed shrinkText $ myTabCfg theme) -- default tab config
||| tiled
||| Mirror tiled
-- ||| noBorders Full
@@ -116,17 +137,19 @@ myLayout = avoidStruts $
-- Percent of screen to increment by when resizing panes
delta = 3/100
-myConf = additionalKeys c (insKeys c)
+myConf theme = additionalKeys c (insKeys c)
where c = def
{ modMask = mod4Mask -- ^ super instead of alt
- , normalBorderColor = base3
- , focusedBorderColor = cyan
+ , normalBorderColor = background theme
+ , focusedBorderColor = foreground theme
, borderWidth = 3
, manageHook = manageDocks <+> manageHook def
- , layoutHook = myLayout
+ , layoutHook = myLayout theme
, terminal = "/home/ben/.nix-profile/bin/xterm"
, workspaces = myWorkspaces
}
main :: IO ()
-main = xmonad $ ewmh $ docks $ myConf
+main = do
+ theme <- getColorsFromXtheme
+ xmonad $ ewmh $ docks $ myConf theme