Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import XMonad hiding ( (|||) )
- import XMonad.Hooks.EwmhDesktops
- import XMonad.Hooks.DynamicLog
- import XMonad.Actions.CycleWS
- import XMonad.Util.Ungrab
- import XMonad.Util.EZConfig
- -- Layout
- import XMonad.Layout.IndependentScreens
- import XMonad.Layout.LayoutCombinators
- import XMonad.Layout (Tall)
- import Data.Monoid (mempty)
- import System.Exit
- import qualified XMonad.StackSet as W
- import qualified Data.Map as M
- myTerminal = "xfce4-terminal"
- myModMask = mod4Mask -- Super
- myBorderWidth = 3
- -- Default workspaces
- -- Tagging: ["a", "b", "c"] ++ map show [4..9]
- --myWorkspaces = ["1", "2", "3", "4", "5", "6", "7", "8", "9"]
- myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
- -- workspaces
- [((m .|. modm, k), windows $ onCurrentScreen f i)
- | (i, k) <- zip (workspaces' conf) [xK_1 .. xK_9]
- , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]
- -- Mouse bindings
- myMouseBindings (XConfig {XMonad.modMask = modm}) = M.fromList $
- [
- -- mod+button1 - set to floating mode, and move by dragging
- ((modm, button1), \w -> focus w >> mouseMoveWindow w
- >> windows W.shiftMaster)
- -- mod+button3 - set to floating mode, resize by dragging
- , ((modm, button3), \w -> focus w >> mouseResizeWindow w
- >> windows W.shiftMaster)
- ]
- -- Layouts
- -- More info: https://wiki.haskell.org/Xmonad/Config_archive/Template_xmonad.hs_(0.9)
- myLayout = Tall 1 (3/100) (1/2) ||| Full ||| Full
- -- Window rules
- myManageHook = composeAll
- [ className =? "Krita" --> doFloat
- , className =? "Nemo" --> doFloat
- , resource =? "desktop_window" --> doIgnore ]
- -- Event handling
- --
- -- Defines a custom handler function for X Events. The function should
- -- return (All True) if the default handler is to be run afterwards. To
- -- combine event hooks use mappend or mconcat from Data.Monoid.
- myEventHook = mempty
- -- Status bars and logging
- myLogHook = return ()
- myStartupHook = return ()
- myConfig = def
- { terminal = myTerminal
- , workspaces = withScreens 2 ["1", "2", "3", "4", "5", "6","7","8","9"]
- , modMask = myModMask
- , borderWidth = myBorderWidth
- -- key bindings
- , keys = myKeys
- , mouseBindings = myMouseBindings
- -- hooks and layouts
- , layoutHook = myLayout
- , handleEventHook = myEventHook
- , logHook = myLogHook
- , startupHook = myStartupHook
- }
- `additionalKeysP`
- [ ("M-<Return>", spawn "xfce4-terminal")
- , ("M-r", spawn "rofi -show drun -show-icons")
- , ("M-p", unGrab *> spawn "maim -s -u | xclip -selection clipboard -t image/png -i")
- -- move focus to previous/next window
- , ("M-<Left>", windows W.focusUp)
- , ("M-<Right>", windows W.focusDown)
- , ("M-S-<Left>", sendMessage Shrink)
- , ("M-S-<Right>",sendMessage Expand)
- -- swap windows
- , ("M-S-j", windows W.swapDown)
- , ("M-S-k", windows W.swapUp) -- swap with previous
- -- switch screens/ws
- , ("M-,", prevScreen)
- , ("M-S-,", prevWS)
- , ("M-.", nextScreen)
- , ("M-S-.", nextWS)
- -- switch between layouts
- , ("M-t", withFocused $ windows . W.sink)
- , ("M-g", sendMessage $ JumpToLayout "Tall")
- , ("M-f", sendMessage $ JumpToLayout "Full")
- , ("M-q", kill)
- -- recompile/restart/quit xmonad
- , ("M-S-c", spawn "xmonad --recompile")
- , ("M-S-r", spawn "xmonad --restart")
- , ("M-S-q", io (exitWith ExitSuccess)) -- quit
- ]
- myXmobarPP :: PP
- myXmobarPP = def
- { ppSep = " "
- , ppTitle = wrap (white "[") (white "]") . ppWindow
- , ppTitleSanitize = xmobarStrip
- , ppCurrent = wrap (blue "[") (blue "]") . ppWindow
- , ppHidden = white . wrap " " " "
- , ppHiddenNoWindows = lowWhite . wrap " " " "
- , ppUrgent = red
- }
- where
- ppWindow :: String -> String
- ppWindow = xmobarRaw . (\w -> if null w then "untitled" else w) . shorten 30
- white = xmobarColor "#ffffff" ""
- lowWhite = xmobarColor "#fbfbfb" ""
- blue = xmobarColor "#0000ff" ""
- red = xmobarColor "#ff0000" ""
- main = xmonad . withSB hs . ewmhFullscreen . ewmh $ myConfig'
- where
- hs = statusBarPropTo ("_XMONAD_LOG_" ++ show n) ("xmobar -x " ++ show n ++ " ~/.xmobarrc" ++ show n) (pure myXmobarPP)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement