anderstornvig / config-files

Various config files primarily for Linux stuff

This URL has Read+Write access

config-files / .xmonad / xmonad.hs
40bedfc6 » Anders Tornvig 2009-04-04 Loads of config files uploa... 1 {- xmonad.hs
2 - Author: Øyvind 'Mr.Elendig' Heggstad <mrelendig AT har-ikkje DOT net>
3 - Modified by: Anders Tornvig <anderstornvig AT gmail DOT com>
4 - Version: 0.0.9
5 -}
6
7 -------------------------------------------------------------------------------
8 -- Imports --
9 -- stuff
10 import XMonad
11 import qualified XMonad.StackSet as W
12 import qualified Data.Map as M
13 import System.Exit
14 import Graphics.X11.Xlib
15 import IO (Handle, hPutStrLn)
16
17 -- utils
18 import XMonad.Util.Run (spawnPipe, safeSpawn)
19 import XMonad.Util.NamedWindows (getName)
20
21 -- hooks
22 import XMonad.Hooks.ManageDocks
23 import XMonad.Hooks.DynamicLog
24
25 -- layouts
26 import XMonad.Layout.NoBorders
27 import XMonad.Layout.ResizableTile
28 import XMonad.Layout.Spiral
29
30 -- prompt
31 import XMonad.Prompt
32 import XMonad.Prompt.RunOrRaise
33 import XMonad.Prompt.Shell
34 import XMonad.Prompt.Ssh
35 import XMonad.Prompt.Workspace
36
37 -- float actions
38 import XMonad.Actions.FloatKeys
39
40 -- notifications
41 import XMonad.Hooks.UrgencyHook
42
43
44 -------------------------------------------------------------------------------
45 -- Main --
46 main = do
47 h <- spawnPipe "xmobar"
48 xmonad $ withUrgencyHook LibNotifyUrgencyHook defaultConfig
49 { workspaces = workspaces'
50 , modMask = modMask'
51 , borderWidth = borderWidth'
52 , normalBorderColor = normalBorderColor'
53 , focusedBorderColor = focusedBorderColor'
54 , terminal = terminal'
55 , keys = keys'
56 , logHook = logHook' h
57 , layoutHook = layoutHook'
58 , manageHook = manageHook'
59 }
60
61 -------------------------------------------------------------------------------
62 -- Hooks --
63 manageHook' :: ManageHook
64 manageHook' = (doF W.swapDown) <+> manageHook defaultConfig <+> manageDocks
65
66 logHook' :: Handle -> X ()
67 logHook' h = dynamicLogWithPP $ customPP { ppOutput = hPutStrLn h }
68
69 layoutHook' = customLayout
70
71
72 data LibNotifyUrgencyHook = LibNotifyUrgencyHook deriving (Read, Show)
73
74 instance UrgencyHook LibNotifyUrgencyHook where
75 urgencyHook LibNotifyUrgencyHook w = do
76 name <- getName w
77 ws <- gets windowset
78 whenJust (W.findTag w ws) (flash name)
79 where flash name index = safeSpawn "notify-send" (show name ++ " requests your attention on workspace " ++ index)
80
81
82 -------------------------------------------------------------------------------
83 -- Looks --
84 -- bar
85 customPP :: PP
86 customPP = defaultPP { ppCurrent = xmobarColor "#AFAF87" "" . wrap "<" ">"
87 , ppTitle = shorten 80
88 , ppSep = "<fc=#AFAF87> | </fc>"
89 , ppHiddenNoWindows = xmobarColor "#AFAF87" ""
90 , ppUrgent = xmobarColor "#FFFFAF" "" . wrap "[" "]"
91 }
92
93 -- borders
94 borderWidth' :: Dimension
95 borderWidth' = 1
96
97 normalBorderColor', focusedBorderColor' :: String
98 normalBorderColor' = "#333333"
99 focusedBorderColor' = "#AFAF87"
100
101 -- workspaces
102 workspaces' :: [WorkspaceId]
103 workspaces' = ["1", "2", "3", "4", "5", "6", "7", "8", "9"]
104
105 -- layouts
106 customLayout = avoidStruts $ smartBorders tiled ||| smartBorders (Mirror tiled) ||| noBorders Full ||| spiral (6/7)
107 where
108 tiled = ResizableTall 1 (2/100) (1/2) []
109
110 -------------------------------------------------------------------------------
111 -- Terminal --
112 terminal' :: String
113 terminal' = "urxvt"
114
115 -------------------------------------------------------------------------------
116 -- Keys/Button bindings --
117 -- modmask
118 modMask' :: KeyMask
119 modMask' = mod4Mask
120
121
122 -- The prompt config
123 myXPConfig :: XPConfig
124 myXPConfig = defaultXPConfig
125 { position = Bottom
126 , promptBorderWidth = 0
127 , font = "-*-terminus-*-*-*-*-10-*-*-*-*-*-*"
128 , height = 14
129 , bgColor = "#2A2733"
130 , fgColor = "#AA9DCF"
131 , bgHLight = "#6B6382"
132 , fgHLight = "#4A4459"
133 }
134
135
136 -- keys
137 keys' :: XConfig Layout -> M.Map (KeyMask, KeySym) (X ())
138 keys' conf@(XConfig {XMonad.modMask = modMask}) = M.fromList $
139 -- launching and killing programs
140 [ ((modMask, xK_Return), spawn $ XMonad.terminal conf)
141 , ((modMask, xK_p ), spawn "exe=`dmenu_path | dmenu` && eval \"exec $exe\"")
142 -- , ((modMask .|. shiftMask, xK_p ), spawn "gmrun")
143 , ((modMask .|. shiftMask, xK_c ), kill)
144 , ((modMask .|. shiftMask, xK_m ), spawn "claws-mail")
145
146 -- layouts
147 , ((modMask, xK_space ), sendMessage NextLayout)
148 , ((modMask .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf)
149 , ((modMask, xK_b ), sendMessage ToggleStruts)
150
151 -- floating layer stuff
152 , ((modMask, xK_t ), withFocused $ windows . W.sink)
153
154 -- refresh
155 , ((modMask, xK_n ), refresh)
156
157 -- focus
158 , ((modMask, xK_Tab ), windows W.focusDown)
159 , ((modMask, xK_j ), windows W.focusDown)
160 , ((modMask, xK_k ), windows W.focusUp)
161 , ((modMask, xK_m ), windows W.focusMaster)
162
163 -- swapping
164 , ((modMask .|. shiftMask, xK_Return), windows W.swapMaster)
165 , ((modMask .|. shiftMask, xK_j ), windows W.swapDown )
166 , ((modMask .|. shiftMask, xK_k ), windows W.swapUp )
167
168 -- increase or decrease number of windows in the master area
169 , ((modMask , xK_comma ), sendMessage (IncMasterN 1))
170 , ((modMask , xK_period), sendMessage (IncMasterN (-1)))
171
172 -- resizing
173 , ((modMask, xK_h ), sendMessage Shrink)
174 , ((modMask, xK_l ), sendMessage Expand)
175 , ((modMask .|. shiftMask, xK_h ), sendMessage MirrorShrink)
176 , ((modMask .|. shiftMask, xK_l ), sendMessage MirrorExpand)
177
178 -- mpd controls
179 , ((modMask .|. controlMask, xK_h ), spawn "mpc prev")
180 , ((modMask .|. controlMask, xK_t ), spawn "mpc pause")
181 , ((modMask .|. controlMask, xK_n ), spawn "mpc play")
182 , ((modMask .|. controlMask, xK_s ), spawn "mpc next")
183 , ((modMask .|. controlMask, xK_g ), spawn "mpc seek -2%")
184 , ((modMask .|. controlMask, xK_c ), spawn "mpc volume -4")
185 , ((modMask .|. controlMask, xK_r ), spawn "mpc volume +4")
186 , ((modMask .|. controlMask, xK_l ), spawn "mpc seek +2%")
187
c4781135 » anderstornvig 2009-05-15 Added ALSA keyboard control 188 -- Alsa keyboard control
189 -- XF86AudioMute
190 , ((0 , 0x1008ff12), spawn "amixer -q set PCM toggle")
191 -- XF86AudioLowerVolume
192 , ((0 , 0x1008ff11), spawn "amixer -q set PCM 2- unmute")
193 -- XF86AudioRaiseVolume
194 , ((0 , 0x1008ff13), spawn "amixer -q set PCM 2+ unmute")
195
40bedfc6 » Anders Tornvig 2009-04-04 Loads of config files uploa... 196 -- quit, or restart
197 , ((modMask .|. shiftMask, xK_q ), io (exitWith ExitSuccess))
198 , ((modMask , xK_q ), restart "xmonad" True)
199
200 -- Prompts
201 , ((modMask, xK_g ), runOrRaisePrompt myXPConfig)
202
203
204 -- float
205 , ((modMask, xK_Left), withFocused (keysMoveWindow (-20,0))) -- move float left
206 , ((modMask, xK_Right), withFocused (keysMoveWindow (20,0))) -- move float right
207 , ((modMask, xK_Up), withFocused (keysMoveWindow (0,-20))) -- move float up
208 , ((modMask, xK_Down), withFocused (keysMoveWindow (0,20))) -- move float down
209
210 , ((modMask .|. shiftMask, xK_Left), withFocused (keysResizeWindow (-20,0) (0,0))) --shrink float at right
211 , ((modMask .|. shiftMask, xK_Right), withFocused (keysResizeWindow (20,0) (0,0))) --expand float at right
212 , ((modMask .|. shiftMask, xK_Down), withFocused (keysResizeWindow (0,20) (0,0))) --expand float at bottom
213 , ((modMask .|. shiftMask, xK_Up), withFocused (keysResizeWindow (0,-20) (0,0))) --shrink float at bottom
214
215 , ((modMask .|. controlMask, xK_Left), withFocused (keysResizeWindow (20,0) (1,0))) --expand float at left
216 , ((modMask .|. controlMask, xK_Right), withFocused (keysResizeWindow (-20,0) (1,0))) --shrink float at left
217 , ((modMask .|. controlMask, xK_Up), withFocused (keysResizeWindow (0,20) (0,1))) --expand float at top
218 , ((modMask .|. controlMask, xK_Down), withFocused (keysResizeWindow (0,-20) (0,1))) --shrink float at top
219
220
221 ]
222 ++
223 -- Propmpts here
224 --[ --(modMask, runOrRaisePrompt myXPConfig)
225 {-, ("M-p M-p", runOrRaisePrompt myXPConfig)
226 , ("M-p t", prompt ("urxvt -e") myXPConfig)
227 , ("M-p M-t", prompt ("urxvt -e") myXPConfig)
228 , ("M-p s", sshPrompt myXPConfig)
229 , ("M-p M-s", sshPrompt myXPConfig)
230 , ("M-p w", workspacePrompt myXPConfig (windows . W.view))
231 , ("M-p S-w", workspacePrompt myXPConfig (windows . W.shift))
232 , ("M-p M-w", workspacePrompt myXPConfig (windows . W.view))
233 , ("M-p M-S-w", workspacePrompt myXPConfig (windows . W.shift))-}
234 --]
235
236 -- mod-[1..9] %! Switch to workspace N
237 -- mod-shift-[1..9] %! Move client to workspace N
238 [((m .|. modMask, k), windows $ f i)
239 | (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9]
240 , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]
241
242 -------------------------------------------------------------------------------