73 lines
2 KiB
Haskell
73 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 "wezterm start 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, "wezterm"),
|
|
-- (1, "firefox"),
|
|
-- (2, "Discord")
|
|
-- ]
|
|
|
|
startup :: X ()
|
|
startup = do
|
|
forM_ startupApps \(index, app) -> do
|
|
spawnOn (myWorkspaces !! index) app
|