about summary refs log tree commit diff
path: root/src/lib/XMonad/Custom/Theme.hs
diff options
context:
space:
mode:
authorAzat Bahawi <azahi@teknik.io>2021-11-23 03:19:06 +0300
committerAzat Bahawi <azahi@teknik.io>2021-11-23 03:19:06 +0300
commit729e030dd25da2e36fa5a1312b8ecb3415dc1675 (patch)
tree53166b6c3bd96f860d0a7242353ef9cc7bb1790f /src/lib/XMonad/Custom/Theme.hs
parentRemove tests (diff)
Huge update
Diffstat (limited to 'src/lib/XMonad/Custom/Theme.hs')
-rw-r--r--src/lib/XMonad/Custom/Theme.hs126
1 files changed, 126 insertions, 0 deletions
diff --git a/src/lib/XMonad/Custom/Theme.hs b/src/lib/XMonad/Custom/Theme.hs
new file mode 100644
index 0000000..cfcd176
--- /dev/null
+++ b/src/lib/XMonad/Custom/Theme.hs
@@ -0,0 +1,126 @@
+-- |
+-- Module                  : XMonad.Custom.Theme
+-- Description             : Theming and styles
+-- Copyright               : (c) Azat Bahawi 2018-2021
+-- SPDX-License-Identifier : GPL-3.0-or-later
+-- Maintainer              : azahi@teknik.io
+-- Stability               : experimental
+-- Portability             : non-portable
+--
+
+module XMonad.Custom.Theme
+  ( font
+  , black1
+  , black2
+  , red1
+  , red2
+  , green1
+  , green2
+  , yellow1
+  , yellow2
+  , blue1
+  , blue2
+  , magenta1
+  , magenta2
+  , cyan1
+  , cyan2
+  , white1
+  , white2
+  , colorN
+  , colorF
+  , gapBase
+  , gapFull
+  , border
+  , tabTheme
+  , promptTheme
+  , hotPromptTheme
+  ) where
+
+import           Data.Char
+import           Data.Function
+import           Data.List                      ( isInfixOf )
+import           Data.Ratio
+import           Graphics.X11.Xlib.Types
+import           XMonad.Layout.Decoration
+import qualified XMonad.Prompt                 as P
+
+font :: String
+font = "xft:tewi:style=Regular:size=8" -- TODO CJKのフォールバックフォントを追加する
+
+black1, black2 :: String -- TODO get variables from Xresources
+(black1, black2) = ("#0b0806", "#2f2b2a")
+
+-- | Red
+red1, red2 :: String
+(red1, red2) = ("#844d2c", "#a64848")
+
+-- | Green
+green1, green2 :: String
+(green1, green2) = ("#57553a", "#897f5a")
+
+-- | Yellow
+yellow1, yellow2 :: String
+(yellow1, yellow2) = ("#a17c38", "#c8b38d")
+
+-- | Blue
+blue1, blue2 :: String
+(blue1, blue2) = ("#41434f", "#526274")
+
+-- | Magenta
+magenta1, magenta2 :: String
+(magenta1, magenta2) = ("#6b4444", "#755c47")
+
+-- | Cyan
+cyan1, cyan2 :: String
+(cyan1, cyan2) = ("#59664c", "#718062")
+
+-- | White
+white1, white2 :: String
+(white1, white2) = ("#a19782", "#c1ab83")
+
+colorN, colorF :: String
+colorN = black2
+colorF = white2
+
+gapBase, gapFull :: Int
+gapBase = 6
+gapFull = gapBase * 2
+
+height, border :: Dimension
+height = 12 * 2
+border = 1
+
+tabTheme :: Theme
+tabTheme = def { activeColor         = black1
+               , inactiveColor       = black2
+               , urgentColor         = red1
+               , activeBorderColor   = white1
+               , inactiveBorderColor = white2
+               , urgentBorderColor   = red2
+               , activeTextColor     = white1
+               , inactiveTextColor   = white2
+               , urgentTextColor     = red2
+               , fontName            = font
+               , decoHeight          = height
+               }
+
+promptTheme, hotPromptTheme :: P.XPConfig
+promptTheme = def
+  { P.font              = font
+  , P.bgColor           = black1
+  , P.fgColor           = white1
+  , P.fgHLight          = white2
+  , P.bgHLight          = black2
+  , P.borderColor       = white2
+  , P.promptBorderWidth = border
+  , P.position = P.CenteredAt { P.xpCenterY = 3 % 10, P.xpWidth = 9 % 10 }
+  , P.height            = height
+  , P.maxComplRows      = Just 5
+  , P.searchPredicate   = isInfixOf `on` map toLower
+  , P.alwaysHighlight   = True
+  }
+hotPromptTheme = promptTheme { P.bgColor  = black2
+                             , P.fgColor  = white2
+                             , P.fgHLight = white1
+                             , P.bgHLight = black1
+                             }

Consider giving Nix/NixOS a try! <3