Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- xmonad.hs --
- import XMonad
- import XMonad.Actions.CycleWS
- import XMonad.Actions.FloatKeys
- import XMonad.Hooks.DynamicLog
- import XMonad.Hooks.EwmhDesktops
- import XMonad.Hooks.FadeInactive
- import XMonad.Hooks.ManageDocks
- import XMonad.Hooks.ManageHelpers
- import XMonad.Hooks.SetWMName
- import XMonad.Hooks.UrgencyHook
- import XMonad.Util.EZConfig
- import XMonad.Util.NamedScratchpad
- import XMonad.Util.Run
- import XMonad.Layout.Grid
- import XMonad.Layout.IM
- import XMonad.Layout.NoBorders
- import XMonad.Layout.PerWorkspace
- import XMonad.Layout.Reflect
- import XMonad.ManageHook
- import XMonad.Prompt
- import XMonad.Prompt.Shell
- import XMonad.Prompt.RunOrRaise
- import qualified XMonad.StackSet as S
- import Data.Ratio
- import System.Directory
- import System.FilePath.Posix
- import System.IO.Unsafe
- import Helpers
- import Layouts
- -- Prompt configuration
- promptXP = defaultXPConfig {
- font = "xft:Envy Code R:style=regular:size=8",
- bgColor = "#1B1D1E",
- defaultText = "",
- fgColor = "#F8F8F2",
- bgHLight = "#66D9EF",
- fgHLight = "#000000",
- borderColor = "#202030",
- promptBorderWidth = 2,
- position = Bottom,
- height = 19,
- historySize = 256
- }
- -- Main config
- myWorkspaces = ["1:dev", "2:mail", "3:cal", "4:web", "5:comm", "6:ham", "7:doc", "8:tmp", "9:full"]
- myTerminal = "urxvt"
- myRestart = spawn "pkill dzen2; pkill trayer; xmonad --recompile && xmonad --restart"
- myHomeDir = unsafePerformIO getHomeDirectory
- myDzenCmd = joinPath [myHomeDir, ".xmonad/scripts/dzen.py"] ++ " | /usr/bin/dzen2 -x 1000 -ta r -fn 'Envy Code R-10' -h 16 -p -e 'onstart=lower'"
- myInfoCmd = "/usr/bin/dzen2 -w 1000 -ta l -fn 'Envy Code R-10' -h 16 -p -e 'onstart=lower'"
- myTrayCmd = "/usr/bin/trayer --edge top --align right --widthtype pixel --width 102 --heighttype pixel --height 16 --tint \"0x111111\" --alpha 0 --transparent true --distancefrom 1 --distance 64"
- myBitmapsDir = joinPath [myHomeDir, ".xmonad/dzen2/"]
- myManageHook = manageDocks <+> composeAll [
- className =? "feh" --> doCenterFloat,
- className =? "dosbox" --> doCenterFloat,
- className =? "Eclipse" <&&> title =? "Eclipse" --> doCenterFloat,
- className =? "XMind" <&&> title =? "XMind" --> doCenterFloat,
- className =? "Dbeaver" <&&> title =? "Dbeaver" --> doCenterFloat,
- className =? "." <&&> title =? "." --> doCenterFloat,
- className =? "Wine" --> doCenterFloat,
- className =? "Lanikai" --> doShift "2:mail",
- className =? "Sunbird-bin" --> doShift "3:cal",
- -- className =? "Firefox" --> doShift "4:web",
- -- className =? "Opera" --> doShift "4:web",
- -- className =? "Chromium" --> doShift "4:web",
- className =? "Pidgin" --> doShift "5:comm",
- className =? "Skype" --> doFloat <+> doShift "5:comm",
- className =? "Gmpc" --> doShift "6:ham",
- className =? "Ario" --> doShift "6:ham",
- className =? "Minitube" --> doShift "6:ham",
- className =? "Xpdf" --> doShift "7:doc",
- className =? "Epdfview" --> doShift "7:doc",
- className =? "Evince" --> doShift "7:doc",
- className =? "Djview4" --> doShift "7:doc",
- className =? "Ggv" --> doShift "7:doc",
- className =? "Lyx" --> doShift "7:doc",
- className =? "Vncviewer" --> doCenterFloat,
- className =? "Xfce4-notifyd" --> doF S.focusDown,
- isGimp --> doTile <+> doShift "9:full",
- isFullscreen --> doFullFloat,
- isDialog --> doCenterFloat
- ] <+> manageHook defaultConfig
- -- Key configuration
- myKeys = [
- -- Media keys
- ("<XF86ScreenSaver>", spawn "/usr/bin/slock"),
- ("<XF86Sleep>", spawn "/usr/bin/slock"),
- ("<XF86Display>", spawn "/etc/acpi/xrandr-toggle"),
- ("<XF86AudioRaiseVolume>", spawn "/usr/bin/amixer set Master 5%+"),
- ("<XF86AudioLowerVolume>", spawn "/usr/bin/amixer set Master 5%-"),
- ("<XF86AudioMute>", spawn "/usr/bin/amixer set Master toggle"),
- ("<XF86AudioPrev>", spawn "/usr/bin/cmus-remote --prev"),
- ("<XF86AudioNext>", spawn "/usr/bin/cmus-remote --next"),
- ("<XF86AudioPlay>", spawn "/usr/bin/cmus-remote --pause"),
- -- Resizing windows
- ("M-S-h", withFocused (keysResizeWindow (-20,0) (0,0))),
- ("M-S-j", withFocused (keysResizeWindow (0,20) (0,0))),
- ("M-S-k", withFocused (keysResizeWindow (0,-20) (0,0))),
- ("M-S-l", withFocused (keysResizeWindow (20,0) (0,0))),
- -- Moving windows
- ("M-C-h", withFocused (keysMoveWindow (-20,0))),
- ("M-C-j", withFocused (keysMoveWindow (0,20))),
- ("M-C-k", withFocused (keysMoveWindow (0,-20))),
- ("M-C-l", withFocused (keysMoveWindow (20,0))),
- -- Moving around workspaces
- ("M-<Left>", moveTo Prev NonEmptyWS),
- ("M-<Right>", moveTo Next NonEmptyWS),
- ("M-u", focusUrgent),
- -- Layout switching
- ("C-S-h", spawn "setxkbmap hu"),
- ("C-S-u", spawn "setxkbmap us"),
- -- System
- ("M-p", shellPrompt promptXP),
- ("M-S-p", runOrRaisePrompt promptXP),
- ("M-q", myRestart)
- ]
- myDzenPP h = dzenPP
- {
- ppCurrent = dzenColor "#ebac54" "#1B1D1E" . pad
- , ppVisible = dzenColor "white" "#1B1D1E" . pad . wrap "(" ")"
- , ppHidden = dzenColor "white" "#1B1D1E" . pad
- , ppUrgent = dzenColor "black" "red" . pad
- , ppWsSep = " "
- , ppSep = " "
- , ppLayout = dzenColor "#ebac54" "#1B1D1E" .
- (\x -> case x of
- "Tall" -> "^i(" ++ myBitmapsDir ++ "/tall.xbm)"
- "Mirror Tall" -> "^i(" ++ myBitmapsDir ++ "/mtall.xbm)"
- "Full" -> "^i(" ++ myBitmapsDir ++ "/full.xbm)"
- "Grid" -> "^i(" ++ myBitmapsDir ++ "/grid.xbm)"
- "ReflectX IM Grid" -> "^i(" ++ myBitmapsDir ++ "/imgrid.xbm)"
- "Simple Float" -> "~"
- _ -> x
- )
- , ppTitle = (" " ++) . dzenColor "white" "#111111" . dzenEscape
- , ppOutput = hPutStrLn h
- }
- myLayoutHook = avoidStruts $ smartBorders $ onWorkspace "5:comm" imLayout $
- onWorkspace "9:full" (Full ||| Grid) $ layoutHook defaultConfig
- myLogHook h = ewmhDesktopsLogHook >> (dynamicLogWithPP $ myDzenPP h)
- myUrgencyHook = NoUrgencyHook
- myConfig h = defaultConfig {
- modMask = mod4Mask, -- set meta to WinKey
- terminal = myTerminal,
- workspaces = myWorkspaces,
- manageHook = myManageHook,
- layoutHook = myLayoutHook,
- logHook = myLogHook h,
- handleEventHook = ewmhDesktopsEventHook,
- startupHook = ewmhDesktopsStartup,
- normalBorderColor="#202030",
- focusedBorderColor="#00ffff",
- borderWidth=1
- } `additionalKeysP` myKeys
- main = do
- info <- spawnPipe myInfoCmd
- spawn myDzenCmd
- spawn myTrayCmd
- xmonad $ withUrgencyHook myUrgencyHook $ myConfig info
- -- lib/Helpers.hs --
- module Helpers (
- isGimp, doTile
- ) where
- import XMonad
- import XMonad.Hooks.ManageHelpers
- import qualified XMonad.StackSet as S
- -- Helper functions
- isGimp = role =? "gimp-toolbox" <||> role =? "gimp-image-window" <||> role =? "gimp-dock"
- where role = stringProperty "WM_WINDOW_ROLE"
- doTile = ask >>= doF . S.sink
- -- lib/Layouts.hs --
- module Layouts (
- imLayout
- ) where
- import XMonad.Layout.Grid
- import XMonad.Layout.IM
- import XMonad.Layout.Reflect
- import Data.Ratio
- -- Custom layouts
- imLayout = reflectHoriz $ withIM size roster $ Grid
- where
- roster = Title "Buddy List"
- size = 1%7
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement