Advertisement
Guest User

Untitled

a guest
Dec 11th, 2018
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. {-# LANGUAGE DeriveDataTypeable, MultiParamTypeClasses, FlexibleInstances, TypeSynonymInstances #-}
  2. import Control.DeepSeq
  3. import Control.Monad(when)
  4. import Control.Monad.STM
  5. import Data.Char
  6. import Data.IORef
  7. import Data.List (delete, nub)
  8. import Data.Maybe
  9. import Data.Word
  10. import GHC.Conc.Sync
  11. import Graphics.X11.ExtraTypes.XF86
  12. import XMonad
  13. import XMonad.Actions.NoBorders
  14. import XMonad.Actions.SpawnOn
  15. import XMonad.Hooks.DynamicLog
  16. import XMonad.Hooks.ManageDocks
  17. import XMonad.Hooks.ManageHelpers
  18. import XMonad.Layout.Fullscreen as FS
  19. import XMonad.Layout.LayoutModifier (LayoutModifier(..), ModifiedLayout(..))
  20. import XMonad.Layout.NoBorders
  21. import XMonad.Util.Run(spawnPipe, runProcessWithInput)
  22. import XMonad.Util.EZConfig(additionalKeys)
  23. import System.IO
  24.  
  25. data FullscreenToggleStruts a = FullscreenToggleStruts [a]
  26.      deriving (Read, Show)
  27. instance LayoutModifier FullscreenToggleStruts Window where
  28.     handleMess ff@(FullscreenToggleStruts fulls) m = case fromMessage m of
  29.         Just (FS.AddFullscreen win) -> setStruts $ nub $ win:fulls
  30.         Just (FS.RemoveFullscreen win) -> setStruts $ delete win fulls
  31.         Just FS.FullscreenChanged -> return $ Just ff
  32.         _ -> return Nothing
  33.         where setStruts f = do
  34.                 let m = if null f
  35.                         then SetStruts [minBound .. maxBound] []
  36.                         else SetStruts [] [minBound .. maxBound]
  37.                 sendMessage m
  38.                 return $ Just $ FullscreenToggleStruts f
  39.        
  40. myManageHook = composeAll [
  41.      (className =? "Vncviewer" --> doFloat)
  42.     ]
  43.  
  44. main = do
  45.     spawn "/usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1"
  46.     spawn "sudo /etc/init.d/network-manager restart"
  47.     spawn "feh --bg-scale ~/Pictures/swahili.png"
  48.     xmproc <- spawnPipe "/usr/bin/xmobar /home/julek/.xmobarrc"
  49.     xmonad $ defaultConfig
  50.         { manageHook = manageDocks <+> (isFullscreen --> doFullFloat) <+> myManageHook
  51.                         <+> manageHook defaultConfig
  52.         , layoutHook = fullscreenToggleStruts . FS.fullscreenFocus . avoidStruts . smartBorders . layoutHook $ defaultConfig
  53.     , handleEventHook = mconcat
  54.                            [ fullscreenEventHook
  55.                            , docksEventHook
  56.                    , handleEventHook defaultConfig
  57.                            ]
  58.         , logHook = dynamicLogWithPP defaultPP
  59.                         { ppOutput = hPutStrLn xmproc
  60.                         , ppTitle = xmobarColor "green" "" . shorten 50
  61.                         }
  62.         , modMask = mod4Mask
  63.         , normalBorderColor = "gray"
  64.         , focusedBorderColor = "gray"
  65.         } `additionalKeys`
  66.         [ ((0, xK_Print), spawn "scrot")
  67.         , ((mod1Mask .|. controlMask, xK_l), spawn "gnome-screensaver-command -l")
  68.     , ((noModMask, xF86XK_MonBrightnessDown), liftIO $ brightnessDown xmproc)
  69.     , ((noModMask, xF86XK_MonBrightnessUp), liftIO $ brightnessUp xmproc)
  70.     , ((mod4Mask, xK_d), liftIO $ spawn "pactl set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo -5%")
  71.     , ((mod4Mask, xK_u), liftIO $ spawn "pactl set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo +5%")
  72.     , ((noModMask, xF86XK_AudioMute), liftIO $ spawn "amixer -D pulse set Master 1+ toggle")
  73.         ]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement