aboutsummaryrefslogtreecommitdiff
path: root/xmonad.hs
blob: bd4b2bdad4d62183addcbc221f9969ea9bac097a (plain)
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
import           XMonad
import           XMonad.Config.Desktop

-- Utilities
import           XMonad.Util.EZConfig        (additionalKeysP)
import           XMonad.Util.SpawnOnce

-- Layouts
import           XMonad.Layout.NoBorders

-- Hooks
import           XMonad.Hooks.InsertPosition

-- xmonad :: XConfig -> IO ()
-- https://hackage.haskell.org/package/xmonad-0.15/docs/XMonad-Core.html#t:XConfig
main = xmonad $ desktopConfig
        { normalBorderColor  = "#292d3e"
        , focusedBorderColor = "#bbc5ff"
        , terminal           = "st"
        , layoutHook         = myLayouts
        , manageHook         = myManageHook
        , modMask            = mod4Mask       -- mod key to super
        , borderWidth        = 1
        , startupHook        = myStartupHook
        , focusFollowsMouse  = False          -- don't change window based on mouse position (need to click)
        , workspaces         = ["code", "compile", "web"] ++ map show [4..9]
        } `additionalKeysP` myKeys

myLayouts = tiledBigMaster        -- bigger master for code and smaller slave for compiling
            ||| Mirror tiledEven  -- 50/50 horizontal split
            ||| noBorders Full    -- disable borders for fullscreen layout
    where tiledBigMaster = Tall 1 (3 / 100) (3 / 5)
          tiledEven      = Tall 1 (3 / 100) (1 / 2)

myStartupHook = do
    spawnOnce "xinput disable 'ETPS/2 Elantech Touchpad' &"        -- disable touchpad
    spawnOnce "redshift -c /home/charles/.config/redshift.conf &"  -- start redshift

myManageHook = insertPosition End Newer  -- insert new window at the end of the current layout

myKeys = [ ("<XF86AudioRaiseVolume>",  spawn "pulseaudio-ctl up")    -- volume up
         , ("<XF86AudioLowerVolume>",  spawn "pulseaudio-ctl down")  -- volume down
         , ("<XF86AudioMute>",         spawn "pulseaudio-ctl mute")  -- volume mute
         , ("<XF86MonBrightnessUp>",   spawn "light -A 5")    -- backlight up
         , ("<XF86MonBrightnessDown>", spawn "light -U 5")    -- backlight down
         , ("<XF86ScreenSaver>",       spawn "slock")                -- lock screen
         ]