Advertisement
ArshiaAghaei

Untitled

Mar 11th, 2022
648
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import XMonad
  2.  
  3. import XMonad.Hooks.DynamicLog
  4. import XMonad.Hooks.ManageDocks
  5. import XMonad.Hooks.ManageHelpers
  6. import XMonad.Hooks.StatusBar
  7. import XMonad.Hooks.StatusBar.PP
  8.  
  9. import XMonad.Util.EZConfig
  10. import XMonad.Util.Loggers
  11. import XMonad.Util.Ungrab
  12.  
  13. import XMonad.Layout.Magnifier
  14. import XMonad.Layout.ThreeColumns
  15.  
  16. import XMonad.Hooks.EwmhDesktops
  17.  
  18.  
  19. main :: IO ()
  20. main = xmonad
  21.      . ewmhFullscreen
  22.      . ewmh
  23.      . withEasySB (statusBarProp "xmobar" (pure myXmobarPP)) defToggleStrutsKey
  24.      $ myConfig
  25.  
  26. myConfig = def
  27.     { modMask    = mod4Mask      -- Rebind Mod to the Super key
  28.     , focusedBorderColor = "#94e7e7"
  29.     , borderWidth = 3
  30.     , layoutHook = myLayout      -- Use custom layouts
  31.     , manageHook = myManageHook  -- Match on certain windows
  32.     }
  33.   `additionalKeysP`
  34.     [ ("<Print>", spawn "xfce4-screenshooter")
  35.     , ("M-S-=", unGrab *> spawn "scrot -s"        )
  36.     , ("M-]"  , spawn "vivaldi-stable")
  37.     , ("M-p", spawn "dmenu_run")
  38.     , ("M-N", spawn "nvim")
  39.     , ("M-T", spawn "thunar")
  40.     , ("M-<Return>", spawn "xfce4-terminal")
  41.     ]
  42.  
  43. myManageHook :: ManageHook
  44. myManageHook = composeAll
  45.     [ className =? "Gimp" --> doFloat
  46.     , isDialog            --> doFloat
  47.     ]
  48.  
  49. myLayout = avoidStruts $ (tiled ||| Mirror tiled ||| Full ||| threeCol)
  50.   where
  51.     threeCol = magnifiercz' 1.3 $ ThreeColMid nmaster delta ratio
  52.    tiled    = Tall nmaster delta ratio
  53.    nmaster  = 1      -- Default number of windows in the master pane
  54.    ratio    = 1/2    -- Default proportion of screen occupied by master pane
  55.    delta    = 3/100  -- Percent of screen to increment by when resizing panes
  56.  
  57. myXmobarPP :: PP
  58. myXmobarPP = def
  59.    { ppSep             = magenta " • "
  60.    , ppTitleSanitize   = xmobarStrip
  61.    , ppCurrent         = wrap " " "" . xmobarBorder "Top" "#8be9fd" 2
  62.    , ppHidden          = white . wrap " " ""
  63.    , ppHiddenNoWindows = lowWhite . wrap " " ""
  64.    , ppUrgent          = red . wrap (yellow "!") (yellow "!")
  65.    , ppOrder           = \[ws, l, _, wins] -> [ws, l, wins]
  66.    , ppExtras          = [logTitles formatFocused formatUnfocused]
  67.    }
  68.  where
  69.    formatFocused   = wrap (white    "[") (white    "]") . magenta . ppWindow
  70.    formatUnfocused = wrap (lowWhite "[") (lowWhite "]") . blue    . ppWindow
  71.  
  72.    -- | Windows should have *some* title, which should not not exceed a
  73.    -- sane length.
  74.    ppWindow :: String -> String
  75.    ppWindow = xmobarRaw . (\w -> if null w then "untitled" else w) . shorten 30
  76.  
  77.    blue, lowWhite, magenta, red, white, yellow :: String -> String
  78.    magenta  = xmobarColor "#ff79c6" ""
  79.    blue     = xmobarColor "#bd93f9" ""
  80.    white    = xmobarColor "#f8f8f2" ""
  81.    yellow   = xmobarColor "#f1fa8c" ""
  82.    red      = xmobarColor "#ff5555" ""
  83.    lowWhite = xmobarColor "#bbbbbb" ""
  84.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement