Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {-# LANGUAGE DeriveDataTypeable, MultiParamTypeClasses, FlexibleInstances, TypeSynonymInstances #-}
- import Control.DeepSeq
- import Control.Monad(when)
- import Control.Monad.STM
- import Data.Char
- import Data.IORef
- import Data.List (delete, nub)
- import Data.Maybe
- import Data.Word
- import GHC.Conc.Sync
- import Graphics.X11.ExtraTypes.XF86
- import XMonad
- import XMonad.Actions.NoBorders
- import XMonad.Actions.SpawnOn
- import XMonad.Hooks.DynamicLog
- import XMonad.Hooks.ManageDocks
- import XMonad.Hooks.ManageHelpers
- import XMonad.Layout.Fullscreen as FS
- import XMonad.Layout.LayoutModifier (LayoutModifier(..), ModifiedLayout(..))
- import XMonad.Layout.NoBorders
- import XMonad.Util.Run(spawnPipe, runProcessWithInput)
- import XMonad.Util.EZConfig(additionalKeys)
- import System.IO
- data FullscreenToggleStruts a = FullscreenToggleStruts [a]
- deriving (Read, Show)
- instance LayoutModifier FullscreenToggleStruts Window where
- handleMess ff@(FullscreenToggleStruts fulls) m = case fromMessage m of
- Just (FS.AddFullscreen win) -> setStruts $ nub $ win:fulls
- Just (FS.RemoveFullscreen win) -> setStruts $ delete win fulls
- Just FS.FullscreenChanged -> return $ Just ff
- _ -> return Nothing
- where setStruts f = do
- let m = if null f
- then SetStruts [minBound .. maxBound] []
- else SetStruts [] [minBound .. maxBound]
- sendMessage m
- return $ Just $ FullscreenToggleStruts f
- myManageHook = composeAll [
- (className =? "Vncviewer" --> doFloat)
- ]
- main = do
- spawn "/usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1"
- spawn "sudo /etc/init.d/network-manager restart"
- spawn "feh --bg-scale ~/Pictures/swahili.png"
- xmproc <- spawnPipe "/usr/bin/xmobar /home/julek/.xmobarrc"
- xmonad $ defaultConfig
- { manageHook = manageDocks <+> (isFullscreen --> doFullFloat) <+> myManageHook
- <+> manageHook defaultConfig
- , layoutHook = fullscreenToggleStruts . FS.fullscreenFocus . avoidStruts . smartBorders . layoutHook $ defaultConfig
- , handleEventHook = mconcat
- [ fullscreenEventHook
- , docksEventHook
- , handleEventHook defaultConfig
- ]
- , logHook = dynamicLogWithPP defaultPP
- { ppOutput = hPutStrLn xmproc
- , ppTitle = xmobarColor "green" "" . shorten 50
- }
- , modMask = mod4Mask
- , normalBorderColor = "gray"
- , focusedBorderColor = "gray"
- } `additionalKeys`
- [ ((0, xK_Print), spawn "scrot")
- , ((mod1Mask .|. controlMask, xK_l), spawn "gnome-screensaver-command -l")
- , ((noModMask, xF86XK_MonBrightnessDown), liftIO $ brightnessDown xmproc)
- , ((noModMask, xF86XK_MonBrightnessUp), liftIO $ brightnessUp xmproc)
- , ((mod4Mask, xK_d), liftIO $ spawn "pactl set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo -5%")
- , ((mod4Mask, xK_u), liftIO $ spawn "pactl set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo +5%")
- , ((noModMask, xF86XK_AudioMute), liftIO $ spawn "amixer -D pulse set Master 1+ toggle")
- ]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement