72 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Haskell
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Haskell
		
	
	
	
	
	
| {-# LANGUAGE BlockArguments #-}
 | |
| 
 | |
| import Control.Monad (forM_, join)
 | |
| import Data.Function ((&))
 | |
| import System.Environment
 | |
| import System.Process
 | |
| import XMonad
 | |
| import XMonad.Actions.SpawnOn
 | |
| import XMonad.Config
 | |
| import XMonad.Hooks.EwmhDesktops (ewmh, fullscreenEventHook)
 | |
| import XMonad.Hooks.ManageDocks
 | |
| import XMonad.Layout.NoBorders
 | |
| import XMonad.Layout.Spacing
 | |
| import XMonad.Layout.ThreeColumns
 | |
| import XMonad.Operations
 | |
| import XMonad.Util.EZConfig
 | |
| 
 | |
| main =
 | |
|   xmonad $
 | |
|     ewmh $
 | |
|       docks $
 | |
|         def
 | |
|           { modMask = mod4Mask,
 | |
|             terminal = myTerminal,
 | |
|             workspaces = myWorkspaces,
 | |
|             borderWidth = 5,
 | |
|             focusedBorderColor = "#{{base05-hex}}",
 | |
|             normalBorderColor = "#{{base05-hex}}",
 | |
|             startupHook = startup,
 | |
|             layoutHook = avoidStruts myLayoutHook,
 | |
|             manageHook = manageDocks <+> manageSpawn <+> manageHook def,
 | |
|             handleEventHook = fullscreenEventHook <+> docksEventHook <+> handleEventHook def
 | |
|           }
 | |
|           `additionalKeysP` keymap
 | |
|   where
 | |
|     myWorkspaces =
 | |
|       ["1:dev", "2:browser", "3:chat", "4:terminal", "5:reading", "6:music", "7:gaming"]
 | |
| 
 | |
|     myTerminal = "xmonad"
 | |
|     myBrowser = "firefox"
 | |
| 
 | |
|     keymap =
 | |
|       [ ("M-p", spawn "rofi -show drun"),
 | |
|         ("M-g", spawn myBrowser),
 | |
|         ("M-d", spawn "Discord"),
 | |
|         ("M-v", spawn "$TERMLAUNCH vimclip"),
 | |
|         ("M-s", spawn "spectacle -rcb"),
 | |
|         ("M-S-s", spawn "spectacle -mcb"),
 | |
|         ("M-C-s", spawn "spectacle -ucb"),
 | |
|         ("M-f", sendMessage ToggleStruts),
 | |
|         ("M-c", kill)
 | |
|       ]
 | |
| 
 | |
|     uniformBorder = join $ join $ join Border
 | |
|     border = uniformBorder 0
 | |
|     spacingHook = spacingRaw False border False border True
 | |
| 
 | |
|     tall = Tall 1 (3 / 100) (1 / 2)
 | |
| 
 | |
|     layouts = tall ||| Full
 | |
|     myLayoutHook = spacingHook layouts
 | |
| 
 | |
|     startupApps = []
 | |
|     -- [ (0, "$TERMSTART"),
 | |
|     --   (1, "firefox"),
 | |
|     --   (2, "Discord")
 | |
|     -- ]
 | |
| 
 | |
|     startup :: X ()
 | |
|     startup = do
 | |
|       forM_ startupApps \(index, app) -> do
 | |
|         spawnOn (myWorkspaces !! index) app
 |