aboutsummaryrefslogtreecommitdiff
path: root/src/Main.hs
blob: eab10dc59a761fc59351eefbc7aea8a277cdc5e3 (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
import XMonad
import XMonad.Hooks.DynamicLog
import XMonad.Layout.Spacing
import XMonad.Actions.WindowNavigation
import XMonad.Util.CustomKeys
import System.Directory
import System.FilePath
import System.Process
import Internal.Layout
import XMonad.Hooks.ManageHelpers
import XMonad.Layout.IndependentScreens
import Text.Printf
import XMonad.Hooks.EwmhDesktops

import Internal.Keys
import Internal.LayoutDraw
import Data.List (partition, isPrefixOf)


main = do
  -- Execute some commands.
  homeDir <- getHomeDirectory
  let fp = homeDir </> ".xmonad" </> "startup"

  config <-
    applyKeys $ def
       { terminal    = "alacritty"
       , modMask     = mod3Mask
       , borderWidth = 2
       , keys = \config -> mempty
       , focusedBorderColor = "#ff6c00"
       , normalBorderColor = "#ffd9bf"
       , layoutHook = myLayout
       , startupHook = do
          ewmhDesktopsStartup
          spawn fp
       , manageHook = composeAll [
           isFullscreen --> doFullFloat
         , className =? "Tilda" --> doFloat
         , className =? "yakuake" --> doFloat
         , className =? "MPlayer" --> doFloat
         , title =? "Event Tester" --> doFloat
         , className =? "mpv" --> doFloat
         , className =? "gnubby_ssh_prompt" --> doFloat
         ]
       , workspaces = map return (['0'..'9'] ++ ['a'..'z'])
       , handleEventHook = fullscreenEventHook
       , focusFollowsMouse = False
       , clickJustFocuses = False
       }

  let toggleStructsKey XConfig {XMonad.modMask = modMask} = (modMask, xK_b)

  xmonad =<<
    statusBar
      "xmobar"
      xmobarPP {
                 ppCurrent = xmobarColor "#ffffff" "red" . printf "%s"
               , ppVisible = xmobarColor "#8888ff" "" . printf "%s"
               , ppHidden  = xmobarColor "#888888" "" . printf "%s"
               , ppWsSep = "<fn=1><fc=#808080> · </fc></fn>"
               , ppTitle =
                   xmobarColor "#8888ff" "" . printf "%s" .
                      (printf "<fn=1>%s</fn>" :: String -> String)

               , ppSep = xmobarColor "#404040" "" "   ────   "
               , ppLayout = const ""
               , ppExtras = [showLayout]
               , ppOrder =  \ss ->
                   let (icons, etc) = partition ("<icon"`isPrefixOf`) ss
                       in icons ++ etc
               }
      toggleStructsKey
      config { modMask = mod3Mask }