XMonad updates
18e75b9e116bc66c5b65b7a11edc07c86be04fbf
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" |