Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import XMonad hiding ((|||))
- import XMonad.Hooks.EwmhDesktops
- import XMonad.Hooks.FadeInactive
- import XMonad.Hooks.DynamicLog
- import XMonad.Hooks.ManageDocks
- import XMonad.Hooks.UrgencyHook
- import XMonad.Layout.Accordion
- import XMonad.Layout.GridVariants
- import XMonad.Layout.DecorationMadness
- import XMonad.Layout.Fullscreen
- import XMonad.Layout.Mosaic
- import XMonad.Layout.LayoutCombinators
- import XMonad.Layout.NoBorders
- import XMonad.Layout.PerWorkspace
- import XMonad.Layout.Renamed
- import XMonad.Layout.Tabbed
- import XMonad.Layout.Spacing
- import XMonad.Config.Desktop
- import XMonad.Prompt
- import XMonad.Prompt.Input
- import qualified XMonad.StackSet as W
- import XMonad.Actions.SpawnOn
- import XMonad.Util.EZConfig(additionalKeys,removeKeys)
- import XMonad.Util.Run(spawnPipe)
- import XMonad.Layout.PerWorkspace
- import Control.Monad (filterM,liftM, join)
- import Data.IORef
- import Data.List
- import qualified Data.Set as S
- import qualified XMonad.StackSet as W
- import Data.Ratio ((%))
- myFadeHook toggleFadeSet = fadeOutLogHook $ fadeIf (testCondition toggleFadeSet) 0.6
- doNotFadeOutWindows = title =? "Call with " <||> className =? "QupZilla" <||> className =? "qpdfview"
- testCondition :: IORef (S.Set Window) -> Query Bool
- testCondition floats =
- liftM not doNotFadeOutWindows <&&> isUnfocused
- <&&> (join . asks $ \w -> liftX . io $ S.notMember w `fmap` readIORef floats)
- toggleFadeOut :: Window -> S.Set Window -> S.Set Window
- toggleFadeOut w s | w `S.member` s = S.delete w s
- | otherwise = S.insert w s
- main = do
- toggleFadeSet <- newIORef S.empty
- xmonad $ desktopConfig
- { terminal = "xfce4-terminal"
- , modMask = mod4Mask
- , workspaces = map show [1 .. 9 :: Int]
- , borderWidth = 0
- , focusedBorderColor = "grey"
- , startupHook = ewmhDesktopsStartup
- , layoutHook = myLayoutHook
- , manageHook = manageHook desktopConfig <+> manageDocks <+> fullscreenManageHook
- , handleEventHook = ewmhDesktopsEventHook <+> docksEventHook
- , logHook = myFadeHook toggleFadeSet
- <+> ewmhDesktopsLogHook
- } `additionalKeys` myKeys toggleFadeSet
- where
- -- keybindings
- myKeys toggleFadeSet = [ ((mod4Mask, xK_b ), spawn "qupzilla")
- , ((mod4Mask, xK_r ), spawn "emacs")
- , ((mod4Mask, xK_t ), spawn "qpdfview")
- , ((mod4Mask, xK_z ), spawn "thunar")
- , ((mod4Mask, xK_y ), focusUrgent)
- , ((mod4Mask .|. controlMask, xK_space ), myLayoutPrompt)
- , ((mod4Mask .|. shiftMask, xK_q ), spawn "xfce4-session-logout")
- , ((mod4Mask, xK_s ), sendMessage ToggleStruts)
- , ((mod4Mask, xK_f), withFocused $ io . modifyIORef toggleFadeSet . toggleFadeOut)
- ]
- -- layouts
- myLayoutHook = avoidStruts $
- tall ||| wide ||| full ||| grid ||| sTabbed ||| acc
- tall = renamed [Replace "tall"] $ smartSpacingWithEdge 3 $ Tall 1 0.03 0.5
- wide = renamed [Replace "wide"] $ smartSpacingWithEdge 3 $ Mirror tall
- full = renamed [Replace "full"] $ Full
- grid = renamed [Replace "grid"] $ spacing 60 $ Grid (2/2)
- sTabbed = renamed [Replace "tabbed"] $ simpleTabbed
- acc = renamed [Replace "accordion"] $ Accordion
- -- layout prompt (w/ auto-completion and all layouts)
- myLayoutPrompt = inputPromptWithCompl myXPConfig "Layout"
- (mkComplFunFromList' allLayouts)
- ?+ (sendMessage . JumpToLayout)
- myXPConfig = defaultXPConfig { autoComplete = Just 1000 }
- allLayouts = ["tall", "wide", "grid", "full", "tabbed", "accordion"]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement