Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import XMonad
- import XMonad.Util.EZConfig
- import XMonad.Hooks.EwmhDesktops
- import XMonad.Util.Loggers
- import XMonad.Util.SpawnOnce
- import XMonad.Hooks.DynamicLog
- import XMonad.Hooks.ManageDocks
- import XMonad.Hooks.ManageHelpers -- doCenterFloat
- import XMonad.Hooks.StatusBar
- import XMonad.Hooks.StatusBar.PP
- import XMonad.Util.ClickableWorkspaces
- import XMonad.Actions.CycleWS
- import XMonad.Layout.Spacing
- import qualified Data.Map as M -- toggle float
- import qualified XMonad.StackSet as W -- window count
- import XMonad.Hooks.InsertPosition -- new window position always left
- import XMonad.Hooks.RefocusLast -- keep focus on last focused window
- import Graphics.X11.ExtraTypes.XF86 -- audio keys
- import XMonad.Layout.NoBorders -- NBFULL, FULL
- import XMonad.Layout.MultiToggle -- NBFULL, FULL, MIRROR
- import XMonad.Layout.MultiToggle.Instances -- NBFULL, FULL, MIRROR
- myWorkspaces = ["term","http","file","docs","misc","mail","edit","medi","sett"]
- myBorderWidth = 1
- myFocusedBorderColor = "#61afef"
- myNormalBorderColor = "#dddddd"
- myFocusFollowsMouse :: Bool
- myFocusFollowsMouse = False
- myClickJustFocuses :: Bool
- myClickJustFocuses = False
- main :: IO ()
- main = xmonad
- . ewmhFullscreen
- . ewmh
- . withEasySB (statusBarProp "xmobar ~/.config/xmonad/xmobarrc" (clickablePP myXmobarPP)) defToggleStrutsKey
- $ myConfig
- myConfig = def
- { modMask = mod4Mask -- Rebind Mod to the Super key
- , layoutHook = myLayout -- Use custom layouts
- , startupHook = myStartupHook
- , manageHook = myManageHook <+> insertPosition Master Newer -- new window position always left
- , workspaces = myWorkspaces
- , normalBorderColor = myNormalBorderColor
- , focusedBorderColor = myFocusedBorderColor
- , focusFollowsMouse = myFocusFollowsMouse
- , clickJustFocuses = myClickJustFocuses
- , borderWidth = myBorderWidth
- , handleEventHook = refocusLastWhen refocusingIsActive -- keep focus on last focused window
- , logHook = refocusLastLogHook <> logHook def -- keep focus on last focused window
- }
- `additionalKeysP`
- [ ("M-S-e" , spawn "geany" )
- , ("M-S-f" , spawn "thunar" )
- , ("M-S-w" , spawn "firefox" )
- , ("M-S-y" , spawn "thunderbird" )
- , ("M-S-<Return>" , spawn "st -c stfloat -g 100x25" )
- , ("M-<Return>" , spawn "st" )
- , ("M1-<F1>" , spawn "dmenu_run -h 30 -fn 'Iosevka:weight=bold:size=10' -nb '#212733' -nf '#c7c7c7' -sb '#212733' -sf '#54b0fc'" )
- , ("M1-p" , spawn "~/.config/dmenu/dmenu_run_history -h 30 -fn 'Iosevka:weight=bold:size=10' -nb '#212733' -nf '#c7c7c7' -sb '#212733' -sf '#54b0fc'" )
- , ("M-n" , spawn "nmd" )
- , ("C-M1-p" , spawn "st -c stfloat -g 100x25 -e pulsemixer" )
- , ("M-S-p" , spawn "st -c newsboat -e newsboat --config-file ~/.config/newsboat/config_st" )
- , ("M-S-m" , spawn "st -c micro -e micro" )
- , ("M-S-l" , spawn "st -c lf -T lf -e .local/bin/lf-filemanager" )
- , ("M-c" , kill )
- , ("C-M1-<Right>" , nextWS )
- , ("C-M1-<Left>" , prevWS )
- , ("M1-<Tab>" , toggleWS )
- , ("M-<Right>" , windows W.focusDown )
- , ("M-<Left>" , windows W.focusUp )
- , ("M-S-<Right>" , windows W.swapDown )
- , ("M-S-<Left>" , windows W.swapUp )
- , ("M-m" , sendMessage $ Toggle NBFULL )
- , ("M-i" , sendMessage $ Toggle MIRROR )
- , ("M-<Space>" , sendMessage NextLayout )
- , ("M-f" , withFocused toggleFloat )
- , ("<XF86AudioLowerVolume>" , spawn "~/.config/xmonad/bin/xmovolume.sh --dec" )
- , ("<XF86AudioRaiseVolume>" , spawn "~/.config/xmonad/bin/xmovolume.sh --inc" )
- , ("<XF86AudioMute>" , spawn "~/.config/xmonad/bin/xmovolume.sh --toggle" )
- , ("<XF86AudioPlay>" , spawn "playerctl play-pause" )
- , ("<XF86AudioStop>" , spawn "playerctl stop" )
- , ("<XF86AudioPrev>" , spawn "playerctl previous" )
- , ("<XF86AudioNext>" , spawn "playerctl next" )
- , ("C-M1-/" , spawn "mpc toggle" )
- , ("C-M1-m" , spawn "mpc stop" )
- , ("C-M1-." , spawn "mpc next" )
- , ("C-M1-," , spawn "mpc prev" )
- , ("C-M1-n" , spawn "~/.config/xmonad/bin/xmodunstsong.sh" )
- , ("M-p" , spawn "~/.config/xmonad/bin/xmocolorpicker.sh" )
- , ("<Print>" , spawn "maim ~/Pictures/Screenshots/$(date +%s).png && paplay /usr/share/sounds/freedesktop/stereo/screen-capture.oga" )
- , ("M-<Print>" , spawn "maim -i `xdotool getactivewindow` ~/Pictures/Screenshots/$(date +%s).png && paplay /usr/share/sounds/freedesktop/stereo/screen-capture.oga" )
- , ("M-S-<Print>" , spawn "maim -s ~/Pictures/Screenshots/$(date +%s).png && paplay /usr/share/sounds/freedesktop/stereo/screen-capture.oga" )
- ]
- where
- toggleFloat w = windows (\s -> if M.member w (W.floating s)
- then W.sink w s
- else (W.float w (W.RationalRect (1/4) (1/4) (1/2) (1/2)) s))
- myManageHook :: ManageHook
- myManageHook = composeAll
- [ className =? "Galculator" --> doCenterFloat
- , className =? "stfloat" --> doCenterFloat
- , className =? "Nm-connection-editor" --> doCenterFloat
- , className =? "Gsimplecal" --> doRectFloat (W.RationalRect 0.881 0.030 0.118 0.177)
- , className =? "newsboat" --> doShift (myWorkspaces !! 7)
- , className =? "firefox" --> doShift (myWorkspaces !! 1)
- , className =? "firefox" <&&> resource =? "Places" --> doCenterFloat
- , className =? "thunderbird" --> doShift (myWorkspaces !! 5)
- , className =? "Thunar" --> doShift (myWorkspaces !! 2)
- , className =? "Brave-browser" --> doShift (myWorkspaces !! 8)
- ]
- myStartupHook :: X ()
- myStartupHook = do
- spawnOnce "~/.config/xmonad/bin/autostart.sh"
- myLayout = avoidStruts $ lessBorders OnlyScreenFloat
- $ mkToggle (NBFULL ?? NOBORDERS ?? EOT)
- $ mkToggle (single MIRROR)
- $ spacingWithEdge 5 $ Tall 1 (495/10000) (55/100) ||| Full
- -- Xmobar config --
- myXmobarPP :: PP
- myXmobarPP = def
- { ppSep = lowWhite " : "
- , ppTitle = wrap "" "" . shorten 64
- , ppCurrent = blue . wrap " " ""
- , ppHidden = white . wrap " " ""
- , ppHiddenNoWindows = lowWhite . wrap " " ""
- , ppUrgent = red . wrap (yellow "!") (yellow "!")
- , ppOrder = \[ws, l, t, ex] -> [ws, l, ex, t]
- , ppExtras = [windowCount]
- , ppLayout = (\layout -> case layout of
- "Spacing Tall" -> "Tall"
- "Spacing Full" -> "Full"
- "Mirror Spacing Tall" -> "Mirror"
- "Full" -> "Mono"
- )
- }
- where
- windowCount :: X (Maybe String)
- windowCount = gets $ Just . show . length . W.integrate' . W.stack . W.workspace . W.current . windowset
- blue, lowWhite, magenta, red, white, yellow, green, cyan, lime, pink, parrot, orange :: String -> String
- magenta = xmobarColor "#c778dd" ""
- blue = xmobarColor "#54b0fc" ""
- white = xmobarColor "#c7c7c7" ""
- yellow = xmobarColor "#e5c07a" ""
- red = xmobarColor "#e06b74" ""
- green = xmobarColor "#98c379" ""
- cyan = xmobarColor "#55b6c2" ""
- lime = xmobarColor "#bbf545" ""
- pink = xmobarColor "#ff85cc" ""
- parrot = xmobarColor "#0fff00" ""
- orange = xmobarColor "#e09d6b" ""
- lowWhite = xmobarColor "#777777" ""
Advertisement
Add Comment
Please, Sign In to add comment