aboutsummaryrefslogtreecommitdiff
path: root/src/Main.hs
blob: 94fb5a7c214ae10bfbe83542d064fc410d9d657e (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
import XMonad

import XMonad.Hooks.ManageDocks (docks)
import System.Directory (getHomeDirectory)
import System.FilePath ((</>))
import XMonad.Hooks.EwmhDesktops (ewmhDesktopsStartup)
import XMonad.Hooks.ManageHelpers (isFullscreen, doFullFloat)
import XMonad.Layout.Fullscreen (fullscreenEventHook)
import System.Environment (setEnv)

import Internal.XMobarLog
import Internal.Keys
import Internal.Layout

import qualified XMonad as X
import qualified XMonad.StackSet as S

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

  setEnv "SUDO_ASKPASS" "/usr/bin/ssh-askpass"

  xmobar <- spawnXMobar

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