dotfiles/xmonad/xmonad.hs

104 lines
3.5 KiB
Haskell

-- Old Imports saved so I don't loose them
-- import qualified XMonad.StackSet as W
-- Also random comments for future reference:
-- https://gist.github.com/BinRoot/8154650
-- Fullscreen video hax Imports
-- https://www.reddit.com/r/xmonad/comments/4cnjhi/fullscreen_video_in_firefox/d1juwkl/
-- imports {{{
import XMonad
import XMonad.Wallpaper
import XMonad.Config.Desktop
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.FadeInactive
import XMonad.Hooks.ManageDocks
import XMonad.Hooks.ManageHelpers
import XMonad.Layout.Fullscreen
import XMonad.Layout.NoBorders ( smartBorders )
import XMonad.Layout.Spacing (smartSpacing)
import XMonad.Util.EZConfig ( additionalKeys )
import XMonad.Util.Run
import System.IO
import System.Exit
--}}}
-- fields {{{
-- set mod key (alt)
myModMask = mod1Mask
-- set terminal
myTerminal = "urxvt"
-- border spacing
myLayoutHook = smartSpacing 4 $ smartBorders ( avoidStruts $ layoutHook defaultConfig )
-- border sie
myBorderWidth = 0
-- status bar
myXmonadBar = "dzen2 -x '0' -y '0' -h '24' -w '1690' -ta 'l' -fg '#FFFFFF' -bg '#1B1D1E'"
myStatusBar = "conky -c $HOME/.xmonad/.conky_dzen | dzen2 -x '1690' -w '2560' -h '24' -ta 'r' -bg '#1B1D1E' -fg '#FFFFFF' -y '0'"
myBitmapsDir = "$HOME/.xmonad/dzen2"
--}}}
-- main-config {{{
main = do
dzenLeftBar <- spawnPipe myXmonadBar
dzenRightBar <- spawnPipe myStatusBar
setRandomWallpaper ["$HOME/images/wallpaper"]
xmonad $ fullscreenSupport defaultConfig
{ terminal = myTerminal
, layoutHook = myLayoutHook
, borderWidth = myBorderWidth
, logHook = myLogHook dzenLeftBar >> fadeInactiveLogHook 0xdddddddd
, handleEventHook = mconcat
[ docksEventHook
, handleEventHook defaultConfig]
} `additionalKeys` myAdditionalKeys
--}}}
-- key-bindings {{{
myAdditionalKeys =
[ ((myModMask, xK_q), spawn "i3lock -i $HOME/images/lock.png")
] ++
[ ((myModMask .|. shiftMask, xK_q), kill)
] ++
[ ((myModMask, xK_c), spawn "xmonad --recompile; xmonad --restart")
] ++
[ ((myModMask .|. shiftMask, xK_c), io (exitWith ExitSuccess))
]
--}}}
-- video-hax {{{
myManageHooks = composeAll
[ isFullscreen --> doFullFloat
]
--}}}
-- Hooks {{{
--Bar
myLogHook :: Handle -> X ()
myLogHook h = dynamicLogWithPP $ defaultPP
{
ppCurrent = dzenColor "#ebac54" "#1B1D1E" . pad
, ppVisible = dzenColor "white" "#1B1D1E" . pad
, ppHidden = dzenColor "white" "#1B1D1E" . pad
, ppHiddenNoWindows = dzenColor "#7b7b7b" "#1B1D1E" . pad
, ppUrgent = dzenColor "#ff0000" "#1B1D1E" . pad
, ppWsSep = " "
, ppSep = " | "
, ppLayout = dzenColor "#ebac54" "#1B1D1E" .
(\x -> case x of
"ResizableTall" -> "^i(" ++ myBitmapsDir ++ "/tall.xbm)"
"Mirror ResizableTall" -> "^i(" ++ myBitmapsDir ++ "/mtall.xbm)"
"Full" -> "^i(" ++ myBitmapsDir ++ "/full.xbm)"
"Simple Float" -> "~"
_ -> x
)
, ppTitle = (" " ++) . dzenColor "white" "#1B1D1E" . dzenEscape
, ppOutput = hPutStrLn h
}
--}}}