Skip to content

Instantly share code, notes, and snippets.

@markrwilliams
Created July 25, 2019 23:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save markrwilliams/4eca0977c420476d1cbb897c162cd679 to your computer and use it in GitHub Desktop.
Save markrwilliams/4eca0977c420476d1cbb897c162cd679 to your computer and use it in GitHub Desktop.
{-# LANGUAGE FlexibleContexts #-}
import XMonad hiding ( (|||) )
import XMonad.Hooks.ManageDocks
import XMonad.Util.EZConfig
import XMonad.Hooks.DynamicLog
import XMonad.Layout.LayoutCombinators
import XMonad.Layout.Renamed
import XMonad.Actions.CopyWindow
import XMonad.Actions.CycleWS
import XMonad.Layout.LayoutModifier
import qualified XMonad.StackSet as W
import XMonad.Hooks.EwmhDesktops (ewmh)
import XMonad.Hooks.UrgencyHook
import Graphics.X11.ExtraTypes.XF86
main :: IO()
main = do
xmonad =<< localXmobar localConfig
toggleStrutsKey :: XConfig t -> (KeyMask, KeySym)
toggleStrutsKey XConfig{modMask = modm} = (modm, xK_b )
localXmobar :: LayoutClass l Window
=> XConfig l -> IO (XConfig (ModifiedLayout AvoidStruts l))
localXmobar conf = statusBar "xmobar" localXmobarPP toggleStrutsKey conf
localXmobarPP :: PP
localXmobarPP = def { ppCurrent = xmobarColor "yellow" ""
, ppTitle = xmobarColor "yellow" ""
, ppUrgent = xmobarColor "red" ""
}
localConfig =
withUrgencyHook NoUrgencyHook $
ewmh $
def { modMask = mod4Mask
, terminal = "urxvt"
, manageHook = manageDocks <+> manageHook def
, layoutHook = avoidStruts $ localLayout
} `additionalKeysP` localKeys `additionalKeys` volumeKeys `additionalKeys` brightnessKeys
-- Good thing we have to define this ourselves
tiled :: Tall a
tiled = Tall 1 (3/100) (1/2)
-- Even better we have to define this
localLayout = renamed [Replace "tiled"] tiled
||| renamed [Replace "mirror-tiled"] (Mirror tiled)
||| renamed [Replace "full"] Full
localKeys :: [([Char], X ())]
localKeys = [ ("M-m", sendMessage (JumpToLayout "full"))
, ("M-t", sendMessage (JumpToLayout "tiled"))
, ("M-v", sendMessage (JumpToLayout "mirror-tiled"))
, ("M-S-0", windows copyToAll)
, ("M-u", prevWS)
, ("M-i", nextWS)
, ("M-S-t", withFocused $ windows . W.sink)
]
volumeKeys :: [((KeyMask, KeySym), X ())]
volumeKeys = [ ((0, xF86XK_AudioMute), spawn "amixer -q set Master,0 toggle")
, ((0, xF86XK_AudioLowerVolume), spawn "amixer -q set Master,0 2%- unmute")
, ((0, xF86XK_AudioRaiseVolume), spawn "amixer -q set Master,0 2%+ unmute")
, ((0, xF86XK_AudioMicMute), spawn "amixer -q set Capture,0 toggle")
]
brightnessKeys :: [((KeyMask, KeySym), X ())]
brightnessKeys = [ ((0, xF86XK_MonBrightnessDown), spawn "brightness down")
, ((0, xF86XK_MonBrightnessUp), spawn "brightness up")
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment