XMonad updates

18e75b9e116bc66c5b65b7a11edc07c86be04fbf
Alexis Sellier committed ago 1 parent a14355f6
.xmonad/xmonad.hs +32 -3
8 8
import XMonad.ManageHook
9 9
import XMonad.Layout.NoBorders
10 10
import XMonad.Layout.ThreeColumns
11 11
import XMonad.Hooks.EwmhDesktops
12 12
import XMonad.Actions.CycleWS
13 +
import XMonad.Util.EZConfig (additionalKeys, additionalKeysP)
14 +
import XMonad.Prompt
15 +
import XMonad.Prompt.XMonad
16 +
13 17
import XMonad.Hooks.UrgencyHook
14 18
import XMonad.Hooks.FloatNext
15 19
20 +
import Graphics.X11.ExtraTypes.XF86
21 +
16 22
import System.Directory
17 23
import System.IO
24 +
import System.Exit
18 25
import Text.Printf
19 26
import Data.Map (Map)
20 27
import qualified Data.Map as Map
21 28
import Control.Monad
22 29
30 +
data EnterPrompt = EnterPrompt String
31 +
32 +
instance XPrompt EnterPrompt where
33 +
    showXPrompt (EnterPrompt n) = " " ++ n ++ " "
34 +
35 +
confirmPrompt :: XPConfig -> String -> X () -> X ()
36 +
confirmPrompt config app func = mkXPrompt (EnterPrompt app) config (mkComplFunFromList []) $ const func
37 +
23 38
termName :: FilePath
24 39
termName = "urxvt"
25 40
26 41
main :: IO ()
27 42
main = do
37 52
        , keys               = myKeys home
38 53
        , logHook            = dynamicLogWithPP (barConfig xmproc)
39 54
        , layoutHook         = avoidStruts $ smartBorders $ myLayout
40 55
        , manageHook         = floatNextHook <+> manageDocks <+> manageHook def
41 56
        , startupHook        = startup <+> docksStartupHook
42 -
        }
57 +
        } `additionalKeysP` myXF86Keys
43 58
  where
44 59
    myLayout = layoutHook def
60 +
    myXF86Keys =
61 +
       [ ("<XF86MonBrightnessUp>",              safeSpawn "xbacklight" ["-inc", "10"])
62 +
       , ("<XF86MonBrightnessDown>",            safeSpawn "xbacklight" ["-dec", "10"])
63 +
       ]
45 64
46 65
startup :: X ()
47 66
startup = do
48 67
    -- Open a terminal if none are open.
49 68
    withWindowSet $ \wins -> do
73 92
    grey  = "#555555"
74 93
75 94
toggleStrutsKey :: XConfig t -> (KeyMask, KeySym)
76 95
toggleStrutsKey XConfig { XMonad.modMask = modMask } = (modMask, xK_b)
77 96
97 +
myXPConfig :: XPConfig
98 +
myXPConfig = def
99 +
  { position          = CenteredAt 0.5 0.09
100 +
  , alwaysHighlight   = True
101 +
  , height            = 60
102 +
  , promptBorderWidth = 1
103 +
  , font              = "xft:Inconsolata:size=14"
104 +
  , borderColor       = "#555555"
105 +
  , bgColor           = "#111111"
106 +
  }
107 +
78 108
myKeys :: FilePath -> XConfig Layout -> Map (KeyMask, KeySym) (X ())
79 109
myKeys home conf@XConfig { XMonad.modMask = modMask } =
80 110
    Map.union ks (XMonad.keys def conf)
81 111
  where
82 112
    ks = Map.fromList
92 122
       , ((modMask .|. shiftMask, xK_Print),    safeSpawn "screenshot-region" [])
93 123
       , ((modMask, xK_0),                      windows $ greedyView "ω")
94 124
       , ((modMask .|. shiftMask, xK_0),        windows $ shift "ω")
95 125
       , ((modMask, xK_Left),                   prevWS)
96 126
       , ((modMask, xK_Right),                  nextWS)
97 -
       , ((noModMask, 0x1008ff02),              safeSpawn "xbacklight" ["-inc", "10"]) -- XF86MonBrightnessUp
98 -
       , ((noModMask, 0x1008ff03),              safeSpawn "xbacklight" ["-dec", "10"]) -- XF86MonBrightnessDown
127 +
       , ((modMask .|. shiftMask, xK_q),        confirmPrompt myXPConfig "Exit XMonad?" $ io (exitWith ExitSuccess))
99 128
       ]
100 129
    dmenu :: X ()
101 130
    dmenu = safeSpawn
102 131
        "dmenu_run" [ "-fn", "Inconsolata-14,Monospace-12"
103 132
                    , "-i"