Advertisement
n3phr_is

xfce_xmonad.hs

Mar 25th, 2017
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import           XMonad                          hiding ((|||))
  2. import           XMonad.Hooks.EwmhDesktops
  3. import           XMonad.Hooks.FadeInactive
  4. import           XMonad.Hooks.DynamicLog
  5. import           XMonad.Hooks.ManageDocks
  6. import           XMonad.Hooks.UrgencyHook
  7. import           XMonad.Layout.Accordion
  8. import           XMonad.Layout.GridVariants
  9. import           XMonad.Layout.DecorationMadness
  10. import           XMonad.Layout.Fullscreen
  11. import           XMonad.Layout.Mosaic
  12. import           XMonad.Layout.LayoutCombinators
  13. import           XMonad.Layout.NoBorders
  14. import           XMonad.Layout.PerWorkspace
  15. import           XMonad.Layout.Renamed
  16. import           XMonad.Layout.Tabbed
  17. import           XMonad.Layout.Spacing
  18. import           XMonad.Config.Desktop
  19. import           XMonad.Prompt
  20. import           XMonad.Prompt.Input
  21. import qualified XMonad.StackSet                 as W
  22. import           XMonad.Actions.SpawnOn
  23. import           XMonad.Util.EZConfig(additionalKeys,removeKeys)
  24. import           XMonad.Util.Run(spawnPipe)
  25. import           XMonad.Layout.PerWorkspace
  26. import           Control.Monad (filterM,liftM, join)
  27. import           Data.IORef
  28. import           Data.List
  29. import qualified Data.Set as S
  30. import qualified XMonad.StackSet as W
  31. import           Data.Ratio                      ((%))
  32.  
  33. myFadeHook toggleFadeSet = fadeOutLogHook $ fadeIf (testCondition toggleFadeSet) 0.6
  34. doNotFadeOutWindows = title =? "Call with " <||> className =? "QupZilla" <||> className =? "qpdfview"
  35.  
  36. testCondition :: IORef (S.Set Window) -> Query Bool
  37. testCondition floats =
  38.     liftM not doNotFadeOutWindows <&&> isUnfocused
  39.     <&&> (join . asks $ \w -> liftX . io $ S.notMember w `fmap` readIORef floats)
  40.  
  41. toggleFadeOut :: Window -> S.Set Window -> S.Set Window
  42. toggleFadeOut w s | w `S.member` s = S.delete w s
  43.                   | otherwise = S.insert w s
  44.  
  45.  
  46. main = do
  47.   toggleFadeSet <- newIORef S.empty
  48.   xmonad $ desktopConfig
  49.     { terminal = "xfce4-terminal"
  50.     , modMask = mod4Mask
  51.     , workspaces = map show [1 .. 9 :: Int]
  52.     , borderWidth = 0
  53.     , focusedBorderColor = "grey"
  54.     , startupHook = ewmhDesktopsStartup
  55.     , layoutHook = myLayoutHook
  56.     , manageHook = manageHook desktopConfig <+> manageDocks <+> fullscreenManageHook
  57.     , handleEventHook = ewmhDesktopsEventHook <+> docksEventHook
  58.     , logHook = myFadeHook toggleFadeSet
  59.           <+> ewmhDesktopsLogHook
  60.                        
  61.     } `additionalKeys` myKeys toggleFadeSet
  62.   where
  63.       -- keybindings
  64.       myKeys toggleFadeSet = [ ((mod4Mask,                 xK_b           ), spawn "qupzilla")
  65.                , ((mod4Mask,                 xK_r           ), spawn "emacs")
  66.                , ((mod4Mask,                 xK_t           ), spawn "qpdfview")
  67.                , ((mod4Mask,                 xK_z           ), spawn "thunar")
  68.                , ((mod4Mask,                 xK_y           ), focusUrgent)
  69.                , ((mod4Mask .|. controlMask, xK_space       ), myLayoutPrompt)
  70.                , ((mod4Mask .|. shiftMask,   xK_q           ), spawn "xfce4-session-logout")
  71.                , ((mod4Mask,                 xK_s           ), sendMessage ToggleStruts)
  72.                , ((mod4Mask, xK_f), withFocused $ io . modifyIORef toggleFadeSet . toggleFadeOut)
  73.                ]
  74.      
  75.  
  76.       -- layouts
  77.        
  78.       myLayoutHook = avoidStruts $
  79.                      tall ||| wide ||| full ||| grid ||| sTabbed ||| acc
  80.       tall   = renamed [Replace "tall"] $ smartSpacingWithEdge 3 $ Tall 1 0.03 0.5
  81.       wide   = renamed [Replace "wide"] $ smartSpacingWithEdge 3 $ Mirror tall
  82.       full   = renamed [Replace "full"] $ Full
  83.       grid = renamed [Replace "grid"] $ spacing 60 $ Grid (2/2)
  84.       sTabbed = renamed [Replace "tabbed"] $ simpleTabbed
  85.       acc = renamed [Replace "accordion"] $ Accordion
  86.  
  87.       -- layout prompt (w/ auto-completion and all layouts)
  88.       myLayoutPrompt = inputPromptWithCompl myXPConfig "Layout"
  89.                        (mkComplFunFromList' allLayouts)
  90.                       ?+ (sendMessage . JumpToLayout)
  91.      myXPConfig = defaultXPConfig { autoComplete = Just 1000 }
  92.      allLayouts = ["tall", "wide", "grid", "full", "tabbed", "accordion"]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement