Advertisement
Haron_Prime

2OFT.hs

Mar 8th, 2017
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- xmonad.hs: Configuration file for xmonad
  2.  
  3. -- Core
  4. import XMonad
  5. import qualified XMonad.StackSet as W
  6. import System.IO (hPutStrLn)
  7. import System.Exit
  8. import qualified Data.Map as M
  9. import XMonad.Util.EZConfig
  10.  
  11. -- Util
  12. import XMonad.Util.Scratchpad
  13. import XMonad.Util.NamedScratchpad
  14. import XMonad.Util.NamedScratchpad (NamedScratchpad(NS), namedScratchpadManageHook, namedScratchpadAction, customFloating)
  15. import XMonad.Util.Run (safeSpawn, unsafeSpawn, runInTerm, spawnPipe)
  16. import XMonad.Util.SpawnOnce
  17.  
  18. -- Hooks
  19. import XMonad.Hooks.EwmhDesktops
  20. import XMonad.Hooks.DynamicLog
  21. import XMonad.Hooks.ManageDocks
  22. import XMonad.Hooks.Place (placeHook, withGaps, smart)
  23. import XMonad.Hooks.InsertPosition
  24. import XMonad.Hooks.ManageHelpers
  25. import XMonad.Hooks.FloatNext (floatNextHook, toggleFloatNext, toggleFloatAllNew)
  26. import XMonad.Hooks.WorkspaceByPos
  27.  
  28. -- Actions
  29. import XMonad.Actions.Promote
  30. import XMonad.Actions.FloatSnap
  31. import XMonad.Actions.FloatKeys
  32.  
  33. -- Layouts
  34. import XMonad.Layout.Spacing (spacing)
  35. import XMonad.Layout.NoBorders
  36. import XMonad.Layout.Gaps
  37. import XMonad.Layout.ResizableTile
  38. import XMonad.Layout.OneBig
  39. import XMonad.Layout.AutoMaster
  40. import XMonad.Layout.Circle
  41. import XMonad.Layout.Grid
  42. import XMonad.Layout.Spiral
  43. import XMonad.Layout.NoBorders
  44. import XMonad.Layout.Mosaic
  45. import XMonad.Layout.TwoPane
  46. import XMonad.Layout.CenteredMaster
  47. import XMonad.Layout.Tabbed
  48. import XMonad.Layout.DragPane
  49. import XMonad.Layout.IM
  50.  
  51. -- Constants
  52. myModMask             =  mod4Mask
  53. myFocusFollowsMouse   =  False
  54. myClickJustFocuses    =  False
  55. myBorderWidth         =  1
  56. myTerminal            =  "urxvt"
  57. myNormalBorderColor   =  "#000000"
  58. myFocusedBorderColor  =  "#51c4d4"
  59. myBackgroundColor     =  "#fe8e38"
  60. myForegroundColor     =  "#c7c9cb"
  61.  
  62. -- Keybindings
  63. myKeys conf@(XConfig     {XMonad.modMask = modm})    =    M.fromList $
  64.     [ ((mod1Mask,                         0xff61),        spawn         "scrot  -s -e 'mv $f ~/Pictures/Screenshots/ 2>/dev/null'")
  65.     , ((0,                                0xff61),        spawn         "scrot  -e 'mv $f ~/Pictures/Screenshots/ 2>/dev/null'"   )
  66.     , ((0,                            0x1008ff13),        spawn         "amixer -q set Master       2dB+")
  67.     , ((0,                            0x1008ff11),        spawn         "amixer -q set Master       2dB-")
  68.     , ((0,                            0x1008ff12),        spawn         "amixer -q set Master toggleMute")
  69.     , ((modm,                               xK_a),        spawn         "urxvt  -e               ncmpcpp")
  70.     , ((modm         .|. shiftMask,         xK_b),        spawn         "urxvt  -e vim       ~/.xmobarrc")
  71.     , ((modm         .|. shiftMask,         xK_e),        spawn         "eject                  /dev/sr0")
  72.     , ((modm,                               xK_e),        spawn         "thunderbird"        )
  73.     , ((modm,                               xK_f),        spawn         "pcmanfm"            )
  74.     , ((modm,                               xK_p),        spawn         "dmenu_run"          )
  75.     , ((modm         .|. shiftMask,         xK_p),        spawn         "gmrun"              )
  76.     , ((modm,                               xK_q),        spawn         "xmonad --recompile && xmonad --restart && killall xmobar && xmobar")
  77.     , ((modm,                               xK_r),        spawn         "urxvt  -e ranger"   )
  78.     , ((modm,                               xK_s),        spawn         "subl"               )
  79.     , ((modm,                               xK_v),        spawn         "viewnior"           )
  80.     , ((modm,                               xK_w),        spawn         "vivaldi-stable"     )
  81.     , ((modm         .|. shiftMask,         xK_x),        spawn         "urxvt  -e vim ~/.xmonad/xmonad.hs")
  82.    
  83.  
  84.     , ((modm         .|. shiftMask,         xK_c),        kill)
  85.     , ((modm,                               xK_d),        sendMessage   Expand     )
  86.     , ((modm,                               xK_g),        sendMessage   Shrink     )
  87.     , ((modm,                               xK_j),        windows       W.focusDown)
  88.     , ((modm         .|. shiftMask,         xK_j),        windows       W.swapDown )
  89.     , ((modm,                               xK_k),        windows       W.focusUp  )
  90.     , ((modm         .|. shiftMask,         xK_k),        windows       W.swapUp   )
  91.     , ((modm,                               xK_m),        windows       W.focusMaster)
  92.     , ((modm,                               xK_n),                      refresh)
  93.     , ((modm         .|. shiftMask,         xK_q),        io            (exitWith ExitSuccess))
  94.     , ((modm         .|. shiftMask,         xK_t),        withFocused   $ windows . W.sink)
  95.     , ((modm,                               xK_t),        spawn         $ XMonad.terminal conf)
  96.     , ((modm,                             xK_Tab),        windows       W.focusDown)
  97.     , ((modm,                           xK_space),        sendMessage   NextLayout)
  98.     , ((modm         .|. shiftMask,     xK_space),        setLayout     $ XMonad.layoutHook conf)
  99.     , ((modm,                           xK_comma),        sendMessage   (IncMasterN 1))
  100.     , ((modm,                          xK_Return),        windows       W.swapMaster)
  101.     , ((modm,                          xK_period),        sendMessage   (IncMasterN (-1)))
  102.     ]
  103.  
  104.     ++
  105.     [ ((m            .|.                 modm, k),        windows       $ f i)
  106.     | (i, k) <- zip (XMonad.workspaces      conf)         [xK_1 .. xK_9]
  107.     , (f, m) <- [(W.greedyView,                0)
  108.     , (W.shift,                        shiftMask)         ]]
  109.     ++
  110.     [((m             .|.               modm, key),        screenWorkspace sc >>= flip whenJust (windows . f))
  111.     | (key, sc) <- zip [xK_u, xK_o, xK_i]   [0..]
  112.     , (f, m) <- [(W.view,                      0),
  113.       (W.shift,                      shiftMask)]]
  114.  
  115. -- Workspaces
  116. myWorkspaces          :: [String]
  117. myWorkspaces          =  [ "W", "M", "F", "T", "C"]
  118.  
  119. -- My Layouts
  120. myLayout              =  spacing 0
  121.                       $  lessBorders OnlyFloat
  122.                       $  tiled ||| Mirror tiled ||| Full
  123.    
  124.     where
  125.     tiled             =  Tall nmaster delta ratio
  126.     nmaster           =  1
  127.     ratio             =  1/2
  128.     delta             =  3/100
  129.  
  130. -- Window rules
  131. myManageHook          =  composeAll
  132.     [ isFullscreen                  --> doFloat
  133.     , className       =? "mpv"      --> doFullFloat
  134.     ]
  135.  
  136. -- MyBar
  137. myBar                 =  "xmobar"
  138.  
  139. -- Event handling
  140. myEventHook           =  ewmhDesktopsEventHook <+> fullscreenEventHook
  141.  
  142. -- Status bars and logging
  143. myLogHook             =  return ()
  144.  
  145. -- Startup hook
  146. myStartupHook         =  return ()
  147.  
  148. -- nameScratchpad
  149. mynameScratchpads = [ NS "update"       "urxvtc -name update -e yaourt -Syua" (appName    =? "update")       (customFloating $ W.RationalRect 0.15 0.2 0.7 0.6)
  150.                     ]
  151.  
  152. main = do
  153.        xmonad =<< xmobar myConfig
  154. myConfig = ewmh $ def {
  155.    terminal           =  myTerminal,
  156.    focusFollowsMouse  =  myFocusFollowsMouse,
  157.    clickJustFocuses   =  myClickJustFocuses,
  158.    borderWidth        =  myBorderWidth,
  159.    modMask            =  myModMask,
  160.    workspaces         =  myWorkspaces,
  161.    normalBorderColor  =  myNormalBorderColor,
  162.    focusedBorderColor =  myFocusedBorderColor,
  163.    keys               =  myKeys,
  164.    layoutHook         =  myLayout,
  165.    manageHook         =  manageHook def <+> myManageHook <+> namedScratchpadManageHook mynameScratchpads,
  166.    handleEventHook    =  myEventHook,
  167.    logHook            =  myLogHook,
  168.    startupHook        =  myStartupHook
  169.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement