Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Core
- import XMonad
- import qualified XMonad.StackSet as W
- import System.IO (hPutStrLn)
- import System.Exit
- import qualified Data.Map as M
- import XMonad.Util.EZConfig
- -- Util
- import XMonad.Util.NamedScratchpad (NamedScratchpad(NS), namedScratchpadManageHook, namedScratchpadAction, customFloating)
- import XMonad.Util.Run (safeSpawn, unsafeSpawn, runInTerm, spawnPipe)
- import XMonad.Util.SpawnOnce
- import XMonad.Util.Scratchpad
- -- Hooks
- import XMonad.Hooks.EwmhDesktops
- import XMonad.Hooks.DynamicLog
- import XMonad.Hooks.ManageDocks
- import XMonad.Hooks.Place (placeHook, withGaps, smart)
- import XMonad.Hooks.InsertPosition
- import XMonad.Hooks.ManageHelpers
- import XMonad.Hooks.FloatNext (floatNextHook, toggleFloatNext, toggleFloatAllNew)
- import XMonad.Hooks.WorkspaceByPos
- -- Actions
- import XMonad.Actions.Promote
- import XMonad.Actions.FloatSnap
- import XMonad.Actions.FloatKeys
- -- Layouts
- import XMonad.Layout.Spacing (spacing)
- import XMonad.Layout.NoBorders
- import XMonad.Layout.Gaps
- import XMonad.Layout.ResizableTile
- import XMonad.Layout.OneBig
- import XMonad.Layout.AutoMaster
- import XMonad.Layout.Circle
- import XMonad.Layout.Grid
- import XMonad.Layout.Spiral
- import XMonad.Layout.NoBorders
- -- Constants
- myModMask = mod4Mask
- myBrowser = "vivaldi-stable"
- browserClass = "Vivaldi-stable"
- myTerminal = "urxvtc"
- terminalClass = "URxvt"
- myNormalBorderColor = "#000000"
- myFocusedBorderColor = "#51c4d4"
- myBackgroundColor = "#fe8e38"
- myForegroundColor = "#c7c9cb"
- myBorderWidth = 2
- myFocusFollowsMouse :: Bool
- myFocusFollowsMouse = True
- myClickJustFocuses :: Bool
- myClickJustFocuses = False
- scratchPad = scratchpadSpawnActionTerminal "urxvtc -name scratchpad"
- -- Workspaces
- myWorkspaces :: [String]
- myWorkspaces = [ "W", "F", "T", "C"] ++ map show [5..9]
- -- Keybindings
- myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
- [
- ((0, 0xff61), spawn "scrot -e 'mv $f ~/Pictures/Screenshots/ 2>/dev/null'")
- , ((mod1Mask, 0xff61), spawn "scrot -s -e 'mv $f ~/Pictures/Screenshots/ 2>/dev/null'")
- , ((modm, xK_a), spawn "urxvt -name ncmpcpp -e ncmpcpp")
- , ((modm, xK_t), spawn "urxvt")
- , ((modm, xK_v), spawn "viewnior")
- , ((modm, xK_p), spawn "dmenu_run")
- , ((modm, xK_f), spawn "pcmanfm")
- , ((modm .|. shiftMask, xK_p), spawn "gmrun")
- , ((modm, xK_w), spawn "vivaldi-stable")
- , ((modm, xK_g), spawn "subl")
- , ((modm, xK_e), spawn "thunderbird")
- , ((modm, xK_r), spawn "urxvt -name ranger -e ranger")
- , ((modm .|. shiftMask, xK_b), spawn "urxvt -name vim -e vim ~/.xmobarrc")
- , ((modm .|. shiftMask, xK_x), spawn "urxvt -name vim -e vim ~/.xmonad/xmonad.hs")
- , ((modm .|. shiftMask, xK_c), kill)
- , ((modm, xK_space), sendMessage NextLayout)
- , ((modm .|. shiftMask, xK_space), setLayout $ XMonad.layoutHook conf)
- , ((modm, xK_n), refresh)
- , ((0, 0x1008ff13), spawn "amixer -q set Master 2dB+")
- , ((0, 0x1008ff11), spawn "amixer -q set Master 2dB-")
- , ((0, 0x1008ff12), spawn "amixer -q set Master toggleMute")
- , ((modm .|. shiftMask, xK_e), spawn "eject /dev/sr0")
- , ((modm, xK_Tab), windows W.focusDown)
- , ((modm, xK_j), windows W.focusDown)
- , ((modm, xK_k), windows W.focusUp)
- , ((modm, xK_m), windows W.focusMaster)
- , ((modm, xK_Return), windows W.swapMaster)
- , ((modm .|. shiftMask, xK_j), windows W.swapDown)
- , ((modm .|. shiftMask, xK_k), windows W.swapUp)
- , ((modm, xK_s), sendMessage Shrink)
- , ((modm, xK_d), sendMessage Expand)
- , ((modm .|.shiftMask, xK_t), withFocused $ windows . W.sink)
- , ((modm, xK_comma ), sendMessage (IncMasterN 1))
- , ((modm, xK_period), sendMessage (IncMasterN (-1)))
- , ((modm .|. shiftMask, xK_q), io (exitWith ExitSuccess))
- , ((modm, xK_q), spawn "xmonad --recompile && xmonad --restart && killall xmobar && xmobar")
- ]
- ++
- [((m .|. modm, k), windows $ f i)
- | (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9]
- , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]
- ++
- [((m .|. modm, key), screenWorkspace sc >>= flip whenJust (windows . f))
- | (key, sc) <- zip [xK_u, xK_o, xK_i] [0..]
- , (f, m) <- [(W.view, 0), (W.shift, shiftMask)]]
- -- My Layouts
- myLayout = gaps [(U,16),(L,0),(R,0)] $ spacing 0 $ lessBorders OnlyFloat $ tiled ||| Mirror tiled ||| Full
- where
- tiled = Tall nmaster delta ratio
- nmaster = 1
- ratio = 1/2
- delta = 3/100
- -- XP
- myXPConfig = def {
- font = "xft:Terminus Re33:size=12:antialias=true:hinting=true"
- , bgColor = "#151515"
- , fgColor = "#959595"
- , bgHLight = "#151515"
- , fgHLight = "#9df"
- , promptBorderWidth = 0
- , position = Top
- , height = 20
- , alwaysHighlight = True
- , historySize = 100
- }
- -- Window rules
- myManageHook :: ManageHook
- myManageHook = composeAll . concat $
- [
- [isFullscreen --> doFullFloat]
- ,[isDialog --> doCenterFloat]
- ,[className =? "mpv" --> doFullFloat]
- ,[className =? c --> doF (W.shift "W") | c <- myWeb]
- ,[className =? c --> doF (W.shift "F") | c <- myFile]
- ,[className =? c --> doF (W.shift "T") | c <- myTerm]
- ,[className =? c --> doF (W.shift "C") | c <- myCode]
- ,[manageDocks]
- ]
- where
- myWeb = ["vivaldi-stable","thunderbird"]
- myFile = ["pcmanfm","ranger"]
- myTerm = ["xterm","urxvt"]
- myCode = ["subl","vim"]
- -- Event handling
- myEventHook = ewmhDesktopsEventHook <+> fullscreenEventHook <+> docksEventHook
- -- Status bars and logging
- myLogHook = do
- currentWorkspaceOnTop
- dynamicLogString $ xmobarPP {
- ppCurrent = xmobarColor "#9fdfff" ""
- , ppTitle = (\str -> "")
- }
- -- Startup hook
- myStartupHook = return () <+> adjustEventInput
- -- Scratchpad
- manageScratchPad :: ManageHook
- manageScratchPad = scratchpadManageHook (W.RationalRect l t w h)
- where
- h = 0.333 -- terminal height
- w = 1 -- terminal width
- t = 1 - h -- distance from top edge
- l = 1 - w -- distance from left edge
- main = do
- xmonad =< xmobar myConfig
- myConfig = def {
- terminal = myTerminal,
- focusFollowsMouse = myFocusFollowsMouse,
- clickJustFocuses = myClickJustFocuses,
- borderWidth = myBorderWidth,
- modMask = myModMask,
- workspaces = myWorkspaces,
- normalBorderColor = myNormalBorderColor,
- focusedBorderColor = myFocusedBorderColor,
- keys = myKeys,
- layoutHook = myLayout,
- manageHook = manageHook def <+> myManageHook <+> manageScratchPad <+> handleEventHook
- handleEventHook = myEventHook,
- logHook = myLogHook,
- startupHook = myStartupHook
- }
Advertisement
Add Comment
Please, Sign In to add comment