about summary refs log tree commit diff
path: root/src/XMonad/Custom/Theme.hs
blob: 50fa398eac0348a6e5e7235ca20d483af0d048e4 (plain) (blame)
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
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
import           Graphics.X11.Xlib.Types
import           XMonad.Layout.Decoration
import qualified XMonad.Prompt            as P

font :: String
font = "xft:lucy 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 = 12
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.Bottom
    , P.height            = height
    , P.searchPredicate   = isInfixOf `on` map toLower
    }
hotPromptTheme = promptTheme
    { P.bgColor           = black2
    , P.fgColor           = white2
    , P.fgHLight          = white1
    , P.bgHLight          = black1
    }

Consider giving Nix/NixOS a try! <3