Last active
March 6, 2019 09:21
-
-
Save bobymicroby/8ba8f4bd23cb2756aa541a6d89cba4ea to your computer and use it in GitHub Desktop.
My xmonad config
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import XMonad | |
import XMonad.Hooks.SetWMName | |
import XMonad.Hooks.DynamicLog | |
import XMonad.Hooks.ManageDocks | |
import XMonad.Hooks.UrgencyHook | |
import XMonad.Hooks.ManageHelpers | |
import XMonad.Layout.NoBorders (smartBorders) | |
import XMonad.Hooks.EwmhDesktops | |
import XMonad.Hooks.FadeInactive | |
import XMonad.Actions.Volume | |
import Graphics.X11.ExtraTypes.XF86 | |
import XMonad.Util.Dzen | |
import XMonad.Util.Run | |
import XMonad.StackSet as W | |
import System.IO | |
import qualified Data.Map as M | |
import Data.Monoid (mappend) | |
centeredHalfWidthRect = W.RationalRect 0.25 0.25 0.5 0.5 | |
doDialogFloat = doRectFloat centeredHalfWidthRect | |
myScreenshot = "gnome-screenshot --interactive" | |
myManageHook = composeAll | |
[ | |
(stringProperty "WM_WINDOW_ROLE" =? "GtkFileChooserDialog") --> doDialogFloat, | |
className =? "Google-chrome" --> doShift "web", | |
className =? "jetbrains-studio" --> doShift "andr", | |
className =? "idea-community" --> doShift "idea", | |
manageDocks | |
] | |
myEventHook = docksEventHook <+> fullscreenEventHook | |
myLayoutHook = avoidStruts . smartBorders $ layoutHook defaultConfig | |
myKeys x = | |
[ | |
((0, xK_Print), spawn myScreenshot), | |
((0, xF86XK_AudioLowerVolume), fmap (max 0) (lowerVolume 4) >>= alert), | |
((0, xF86XK_AudioRaiseVolume) , fmap (min 100) (raiseVolume 4) >>= alert), | |
((0, xF86XK_AudioMute), toggleMute >>= (\b -> if(b) then getVolume else pure 0) >>= alert) | |
] | |
alert = dzenConfig centered . show . round | |
centered = | |
onCurr (center 150 66) | |
>=> font "-*-terminus-*-r-*-*-64-*-*-*-*-*-*-*" | |
>=> addArgs ["-fg", "#ffffff"] | |
>=> addArgs ["-bg", "#000000"] | |
newKeys x = M.union (keys defaultConfig x) (M.fromList (myKeys x)) | |
myLogHook h = dynamicLogWithPP $ defaultPP | |
-- display current workspace as darkgrey on light grey (opposite of | |
-- default colors) | |
{ ppCurrent = dzenColor "#303030" "#909090" . pad | |
-- display other workspaces which contain windows as a brighter grey | |
, ppHidden = dzenColor "#909090" "" . pad | |
-- display other workspaces with no windows as a normal grey | |
, ppHiddenNoWindows = dzenColor "#606060" "" . pad | |
-- display the current layout as a brighter grey | |
, ppLayout = dzenColor "#909090" "" . pad | |
-- if a window on a hidden workspace needs my attention, color it so | |
, ppUrgent = dzenColor "#ff0000" "" . pad . dzenStrip | |
-- shorten if it goes over 100 characters | |
, ppTitle = shorten 100 | |
-- no separator between workspaces | |
, ppWsSep = "" | |
-- put a few spaces between each object | |
, ppSep = " " | |
-- output to the handle we were given as an argument | |
, ppOutput = hPutStrLn h | |
} | |
--LG3D makes java swing (IntelliJ IDEA , Android studio etc) work | |
main = do | |
let conkyBarWidth = 1440 -- found this value experimentally | |
let screenWidth = 3440 -- one 3440 screen | |
let dzenConfig = "-h '23' -fn 'xft:Source Code Pro:size=10:antialias=true' -bg '#000000' -fg '#FFFFFF' -y '-1' " | |
dzenXMonadBar <- spawnPipe $ "dzen2 -dock -x '0' -w '" ++ show (screenWidth-conkyBarWidth)++ "' -ta 'l' " ++ dzenConfig | |
dzenConkyBar <- spawnPipe $ "conky -c ~/.conky.conf | dzen2 -dock -x '" ++ show (screenWidth-conkyBarWidth) ++ "' -w '" ++ show conkyBarWidth ++ "' -ta 'r' " ++ dzenConfig | |
xmonad . docks . ewmh $ withUrgencyHook NoUrgencyHook $ defaultConfig { | |
XMonad.workspaces = ["web","andr","idea","term1","term2","term3"] , | |
logHook = myLogHook dzenXMonadBar >> fadeInactiveLogHook 0xdddddddd , | |
startupHook = setWMName "LG3D", | |
manageHook = myManageHook , | |
keys = newKeys, | |
layoutHook = myLayoutHook, | |
handleEventHook = myEventHook | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment