-- imports import XMonad import XMonad.Util.EZConfig import XMonad.Config.Kde import XMonad.Layout.SubLayouts import XMonad.Layout.PerWorkspace import XMonad.Layout.LayoutModifier import XMonad.Layout.Magnifier import XMonad.Layout.Master import XMonad.Layout.Mosaic import XMonad.Layout.MosaicAlt import XMonad.Layout.Spacing import XMonad.Layout.WindowArranger import XMonad.Layout.WindowNavigation as N import XMonad.Layout.Hidden import XMonad.Layout.Groups.Wmii import XMonad.Actions.Submap import XMonad.Hooks.ManageDocks import qualified Data.Map as M import qualified XMonad.Layout.Groups as G import XMonad.Layout.Master import qualified XMonad.Layout.BinarySpacePartition as BSP import XMonad.Hooks.DynamicLog import XMonad.Layout.Hidden import XMonad.Layout.Stoppable import XMonad.Hooks.EwmhDesktops import XMonad.Layout.Spacing import qualified XMonad.StackSet as W import XMonad.Actions.CopyWindow import Data.Monoid import System.Exit import Data.List import XMonad.Layout.ToggleLayouts import XMonad.Layout.LayoutScreens import XMonad.Layout.TwoPane import XMonad.Layout.ZoomRow import XMonad.Layout.Combo import XMonad.Layout.Groups.Examples import XMonad.Layout.BinaryColumn import qualified XMonad.Layout.GridVariants as GV import XMonad.Layout.AutoMaster import XMonad.Layout.Master import qualified XMonad.Layout.MultiToggle as MT import XMonad.Prompt import XMonad.Prompt.RunOrRaise import XMonad.Prompt.Shell import XMonad.Layout.Groups.Helpers import XMonad.Actions.FocusNth import XMonad.Layout.ResizableTile import XMonad.Layout.DwmStyle import XMonad.Layout.Spacing import XMonad.Layout.Maximize import XMonad.Actions.DynamicWorkspaces import XMonad.Actions.Navigation2D import XMonad.Actions.CycleWS import Data.Tree import XMonad.Actions.TreeSelect import XMonad.Hooks.WorkspaceHistory import XMonad.Actions.TagWindows import XMonad.Actions.LinkWorkspaces myLayouts = -- subLayout [] (ResizableTall 0 (3/100) (1/2) []) $ (Mirror $ ResizableTall 0 (3/100) (1/2) []) ||| BSP.emptyBSP ||| rowOfColumns ||| Mirror rowOfColumns ||| mastered (1/100) (1/2) rowOfColumns -- ||| Tall 1 (3/100) (1/2) ||| mosaic 2 [3,2] myWorkspaces :: Forest String myWorkspaces = [ Node "Home" -- for everyday activity's [ Node "1" [] -- with 4 extra sub-workspaces, for even more activity's , Node "2" [] , Node "3" [] , Node "4" [] ] , Node "Browser" [ Node "1" [] , Node "2" [] , Node "3" [] ] , Node "Programming" -- for all your programming needs [ Node "Intelij" [] , Node "Docs" [] -- documentation , Node "1" [] , Node "2" [] ] , Node "Mail" [] , Node "Media" [ Node "1" [] , Node "2" [] ] ] myTsConfig = TSConfig { ts_hidechildren = True , ts_background = 0x00000000 , ts_font = "xft:Sans-14" , ts_node = (0xff000000, 0xff50d0db) , ts_nodealt = (0xff000000, 0xff10b8d6) , ts_highlight = (0xffffffff, 0xffff0000) , ts_extra = 0xff000000 , ts_node_width = 200 , ts_node_height = 30 , ts_originX = 0 , ts_originY = 0 , ts_indent = 80 , ts_navigate = defaultNavigation } -- float krunner and plasmashell myManageHook = composeAll . concat $ [ [ className =? c --> doFloat | c <- myFloats] ] where myFloats = ["plasmashell","krunner"] main = xmonad $ withNavigation2DConfig def $ myconfig myconfig = ewmh $ kdeConfig { manageHook = manageHook kdeConfig <+> myManageHook , borderWidth = 2 , workspaces = toWorkspaces myWorkspaces , modMask = mod4Mask -- modifiers for all layouts, avoiding docks, hidding(minimizing) Windows, maximizing windows, window gaps , layoutHook = avoidStruts $ (hiddenWindows $ (maximize $ (spacing 4 $ myLayouts))) , logHook = workspaceHistoryHook >> dynamicLog , terminal = "alacritty" , normalBorderColor = "#1d252c" , focusedBorderColor = "#cd8b00" } `removeKeys` [(mod1Mask .|. shiftMask, n) | n <- [xK_1 .. xK_9] ] `additionalKeysP` [ -- ("M-S-", spawn $ Xmonad.terminal conf) ("M- ", sendMessage NextLayout) , ("M-S-C-r", spawn "xmonad --recompile; xmonad --restart > ~/.xmonad/xmonad.status") , ("M-q", kill1) --groups , ("M- g k", swapUp) , ("M- g j", swapDown) , ("M- g S-k", swapGroupUp) , ("M- g S-j", swapGroupDown) , ("M- g C-k", moveToNewGroupUp) , ("M- g C-j", moveToNewGroupDown) , ("M- g M1-k", (moveToGroupUp True)) , ("M- g M1-j", (moveToGroupDown True)) , ("M- g i", zoomWindowIn) , ("M- g o", zoomWindowOut) , ("M- g S-i", zoomGroupIn) , ("M- g S-o", zoomGroupOut) , ("M- g S-f", toggleGroupFull) , ("M- g f", toggleWindowFull) , ("M- g r", zoomWindowReset) , ("M- g n", groupToNextLayout) , ("M-g k", swapUp) , ("M-g j", swapDown) , ("M-g S-k", swapGroupUp) , ("M-g S-j", swapGroupDown) , ("M-g C-k", moveToNewGroupUp) , ("M-g C-j", moveToNewGroupDown) , ("M-g M1-k", (moveToGroupUp True)) , ("M-g M1-j", (moveToGroupDown True)) , ("M-g i", zoomWindowIn) , ("M-g o", zoomWindowOut) , ("M-g S-i", zoomGroupIn) , ("M-g S-o", zoomGroupOut) , ("M-g S-f", toggleGroupFull) , ("M-g f", toggleWindowFull) , ("M-g r", zoomWindowReset) , ("M-g n", groupToNextLayout) , ("M-i", zoomWindowIn) , ("M-o", zoomWindowOut) , ("M-S-i", zoomGroupIn) , ("M-S-o", zoomGroupOut) -- workspaces , ("M- w", selectWorkspace def) , ("M- ", selectWorkspace def) , ("M- e", selectWorkspace def) , ("M- x", removeWorkspace) , ("M- m", withWorkspace def (windows . W.shift)) , ("M- c", withWorkspace def (windows . copy)) , ("M- m", withWorkspace def (windows . W.shift)) , ("M- c", withWorkspace def (windows . copy)) , ("M- s", addWorkspacePrompt def) , ("M- r", renameWorkspace def) , ("M- j", nextWS) , ("M- k", prevWS) , ("M- S-j", shiftToNext) , ("M- S-k", shiftToPrev) , ("M- l", nextScreen) , ("M- h", prevScreen) , ("M- S-l", shiftNextScreen) , ("M- S-h", shiftPrevScreen) , ("M- z", toggleWS) -- BSP , ("M-M1-h", sendMessage $ BSP.ExpandTowards L) , ("M-M1-l", sendMessage $ BSP.ExpandTowards R) , ("M-M1-j", sendMessage $ BSP.ExpandTowards D) , ("M-M1-k", sendMessage $ BSP.ExpandTowards U) , ("M- b M1-j", sendMessage $ BSP.ExpandTowards D) , ("M- b M1-l", sendMessage $ BSP.ShrinkFrom R) , ("M- b M1-k", sendMessage $ BSP.ExpandTowards U) , ("M- b M1-j", sendMessage $ BSP.ShrinkFrom D) , ("M- b M1-C-h", sendMessage $ BSP.ShrinkFrom L) , ("M- b M1-C-l", sendMessage $ BSP.ExpandTowards R) , ("M- b M1-C-k", sendMessage $ BSP.ShrinkFrom U) , ("M- b M1-C-j", sendMessage $ BSP.ExpandTowards D) , ("M- b s", sendMessage $ BSP.Swap) , ("M- b r", sendMessage $ BSP.Rotate) , ("M- b b", sendMessage $ BSP.Balance) , ("m- b e", sendMessage $ BSP.Equalize) , ("M-b M1-h", sendMessage $ BSP.ExpandTowards L) , ("M-b M1-S-h", sendMessage $ BSP.ShrinkFrom R) , ("M-b M1-k", sendMessage $ BSP.ExpandTowards U) , ("M-b M1-S-k", sendMessage $ BSP.ShrinkFrom D) , ("M-b M1-S-l", sendMessage $ BSP.ShrinkFrom L) , ("M-b M1-l", sendMessage $ BSP.ExpandTowards R) , ("M-b M1-S-j", sendMessage $ BSP.ShrinkFrom U) , ("M-b M1-j", sendMessage $ BSP.ExpandTowards D) , ("M-b s", sendMessage $ BSP.Swap) , ("M-b r", sendMessage $ BSP.Rotate) , ("M-b b", sendMessage $ BSP.Balance) , ("m-b e", sendMessage $ BSP.Equalize) --run or Copy , ("M- r f", runOrCopy "firefox" (className =? "Firefox")) , ("M- r e", runOrCopy "Doom Emacs" (className =? "Emacs")) , ("M- r t", runOrCopy "Thunderbird" (className =? "Thunderbrid")) -- Prompts , ("M-p s", shellPrompt def) -- subLayouts -- navigation -- Directional navigation of windows , ("M-l", windowGo R False) , ("M-h", windowGo L False) , ("M-k", windowGo U False) , ("M-j", windowGo D False) -- -- Swap adjacent windows , ("M-C-l", windowSwap R False) , ("M-C-h", windowSwap L False) , ("M-C-k", windowSwap U False) , ("M-C-j", windowSwap D False) -- --Arrange Windows , ("M-a", sendMessage Arrange ) , ("M-S-a", sendMessage DeArrange ) , ("M-S-h", sendMessage (MoveLeft 1)) , ("M-S-l", sendMessage (MoveRight 1)) , ("M-S-j", sendMessage (MoveDown 1)) , ("M-S-k", sendMessage (MoveUp 1)) -- , ("M-M1-h", sendMessage (IncreaseLeft 1)) -- , ("M-M1-l", sendMessage (IncreaseRight 1)) -- , ("M-M1-j", sendMessage (IncreaseDown 1)) -- , ("M-M1-k", sendMessage (IncreaseUp 1)) -- , ("M-M1-S-h", sendMessage (DecreaseLeft 1)) -- , ("M-M1-S-l", sendMessage (DecreaseRight 1)) -- , ("M-M1-S-j", sendMessage (DecreaseDown 1)) -- , ("M-M1-S-k", sendMessage (DecreaseUp 1)) -- -- window , ("M- w l", windowGo R False) , ("M- w h", windowGo L False) , ("M- w k", windowGo U False) , ("M- w j", windowGo D False) , ("M- w S-l", windowSwap R False) , ("M- w S-h", windowSwap L False) , ("M- w S-k", windowSwap U False) , ("M- w S-j", windowSwap D False) , ("M- w C-h", sendMessage (DecreaseLeft 1)) , ("M- w C-l", sendMessage (DecreaseRight 1)) , ("M- w C-j", sendMessage (DecreaseDown 1)) , ("M- w C-k", sendMessage (DecreaseUp 1)) , ("M- w M1-h", sendMessage (IncreaseLeft 1)) , ("M- w M1-l", sendMessage (IncreaseRight 1)) , ("M- w M1-j", sendMessage (IncreaseDown 1)) , ("M- w M1-k", sendMessage (IncreaseUp 1)) , ("M- w m", withFocused hideWindow) , ("M- w S-m", popOldestHiddenWindow) , ("M- w C-m", withFocused (sendMessage . maximizeRestore)) , ("M- w i", zoomWindowIn) , ("M- w o", zoomWindowOut) , ("M- w S-i", zoomGroupIn) , ("M- w S-o", zoomGroupOut) , ("M- w S-f", toggleGroupFull) , ("M- w f", toggleWindowFull) , ("M- w r", zoomWindowReset) -- window , ("M-w q", kill1) , ("M-w l", windowGo R False) , ("M-w h", windowGo L False) , ("M-w k", windowGo U False) , ("M-w j", windowGo D False) , ("M-w S-l", windowSwap R False) , ("M-w S-h", windowSwap L False) , ("M-w S-k", windowSwap U False) , ("M-w S-j", windowSwap D False) , ("M-w C-h", sendMessage (DecreaseLeft 1)) , ("M-w C-l", sendMessage (DecreaseRight 1)) , ("M-w C-j", sendMessage (DecreaseDown 1)) , ("M-w C-k", sendMessage (DecreaseUp 1)) , ("M-w M1-h", sendMessage (IncreaseLeft 1)) , ("M-w M1-l", sendMessage (IncreaseRight 1)) , ("M-w M1-j", sendMessage (IncreaseDown 1)) , ("M-w M1-k", sendMessage (IncreaseUp 1)) , ("M-w m", withFocused hideWindow) , ("M-w S-m", popOldestHiddenWindow) , ("M-w C-m", withFocused (sendMessage . maximizeRestore)) , ("M-w i", zoomWindowIn) , ("M-w o", zoomWindowOut) , ("M-w S-i", zoomGroupIn) , ("M-w S-o", zoomGroupOut) , ("M-w S-f", toggleGroupFull) , ("M-w f", toggleWindowFull) , ("M-w r", zoomWindowReset) , ("M-w w", selectWorkspace def) , ("M-w ", selectWorkspace def) , ("M-w e", selectWorkspace def) , ("M-e", selectWorkspace def) , ("M-w x", removeWorkspace) , ("M-w m", withWorkspace def (windows . W.shift)) , ("M-w c", withWorkspace def (windows . copy)) , ("M-c m", withWorkspace def (windows . W.shift)) , ("M-c c", withWorkspace def (windows . copy)) , ("M-w s", addWorkspacePrompt def) , ("M-w r", renameWorkspace def) , ("M-w j", nextWS) , ("M-w k", prevWS) , ("M-w S-j", shiftToNext) , ("M-w S-k", shiftToPrev) , ("M-w l", nextScreen) , ("M-w h", prevScreen) , ("M-w S-l", shiftNextScreen) , ("M-w S-h", shiftPrevScreen) , ("M-w z", toggleWS) , ("M-w b M1-h", sendMessage $ BSP.ExpandTowards L) , ("M-w b M1-S-h", sendMessage $ BSP.ShrinkFrom R) , ("M-w b M1-k", sendMessage $ BSP.ExpandTowards U) , ("M-w b M1-S-k", sendMessage $ BSP.ShrinkFrom D) , ("M-w b M1-S-l", sendMessage $ BSP.ShrinkFrom L) , ("M-w b M1-l", sendMessage $ BSP.ExpandTowards R) , ("M-w b M1-S-j", sendMessage $ BSP.ShrinkFrom U) , ("M-w b M1-j", sendMessage $ BSP.ExpandTowards D) -- , ("M-M1-h", sendMessage $ BSP.ExpandTowards L) -- , ("M-M1-S-h", sendMessage $ BSP.ShrinkFrom R) -- , ("M-M1-k", sendMessage $ BSP.ExpandTowards U) -- , ("M-M1-S-k", sendMessage $ BSP.ShrinkFrom D) -- , ("M-M1-S-l", sendMessage $ BSP.ShrinkFrom L) -- , ("M-M1-l", sendMessage $ BSP.ExpandTowards R) -- , ("M-M1-S-j", sendMessage $ BSP.ShrinkFrom U) -- , ("M-M1-j", sendMessage $ BSP.ExpandTowards D) -- , ("M-w b s", sendMessage $ BSP.Swap) , ("M-w b r", sendMessage $ BSP.Rotate) , ("M-w b b", sendMessage $ BSP.Balance) , ("m-w b e", sendMessage $ BSP.Equalize) -- minimiz/maximize , ("M-m", withFocused hideWindow) , ("M-S-m", popOldestHiddenWindow) , ("M-C-m", withFocused (sendMessage . maximizeRestore)) , ("M-", spawn "rofi_run -w") , ("M-", spawn "rofi_run") , ("M3-", spawn "rofi_run -w") , ("M3-", spawn "rofi_run") , ("M-f", treeselectWorkspace myTsConfig myWorkspaces W.greedyView) , ("M-S-f", treeselectWorkspace myTsConfig myWorkspaces W.shift) -- , ("M-C-1", setWorkspaceIndex 1) -- , ("M-C-2", setWorkspaceIndex 2) -- , ("M-C-3", setWorkspaceIndex 3) -- , ("M-C-4", setWorkspaceIndex 4) -- , ("M-C-5", setWorkspaceIndex 5) -- , ("M-C-6", setWorkspaceIndex 6) -- , ("M-C-7", setWorkspaceIndex 7) -- , ("M-C-8", setWorkspaceIndex 8) -- , ("M-C-9", setWorkspaceIndex 9) -- tags , ("M- t t 1", withFocused (addTag "1")) , ("M- t t 2", withFocused (addTag "2")) , ("M- t t 3", withFocused (addTag "3")) , ("M- t t 4", withFocused (addTag "4")) , ("M- t t 5", withFocused (addTag "5")) , ("M- t t 6", withFocused (addTag "6")) , ("M- t t 7", withFocused (addTag "7")) , ("M- t t 8", withFocused (addTag "8")) , ("M- t t 9", withFocused (addTag "9")) , ("M- t t 0", withFocused (addTag "0")) , ("M- t f 1", focusUpTaggedGlobal "1") , ("M- t f 2", focusUpTaggedGlobal "2") , ("M- t f 3", focusUpTaggedGlobal "3") , ("M- t f 4", focusUpTaggedGlobal "4") , ("M- t f 5", focusUpTaggedGlobal "5") , ("M- t f 6", focusUpTaggedGlobal "6") , ("M- t f 7", focusUpTaggedGlobal "7") , ("M- t f 8", focusUpTaggedGlobal "8") , ("M- t f 9", focusUpTaggedGlobal "9") , ("M- t f 0", focusUpTaggedGlobal "0") , ("M- t f C-1", focusDownTaggedGlobal "1") , ("M- t f C-2", focusDownTaggedGlobal "2") , ("M- t f C-3", focusDownTaggedGlobal "3") , ("M- t f C-4", focusDownTaggedGlobal "4") , ("M- t f C-5", focusDownTaggedGlobal "5") , ("M- t f C-6", focusDownTaggedGlobal "6") , ("M- t f C-7", focusDownTaggedGlobal "7") , ("M- t f C-8", focusDownTaggedGlobal "8") , ("M- t f C-9", focusDownTaggedGlobal "9") , ("M- t f C-0", focusDownTaggedGlobal "0") , ("M- t u", withFocused unTag) , ("M- t a", tagPrompt def (\s -> withFocused (addTag s))) , ("M- t x", tagDelPrompt def) , ("M-t a 1", withFocused (addTag "1")) , ("M-t a 2", withFocused (addTag "2")) , ("M-t a 3", withFocused (addTag "3")) , ("M-t a 4", withFocused (addTag "4")) , ("M-t a 5", withFocused (addTag "5")) , ("M-t a 6", withFocused (addTag "6")) , ("M-t a 7", withFocused (addTag "7")) , ("M-t a 8", withFocused (addTag "8")) , ("M-t a 9", withFocused (addTag "9")) , ("M-t a 0", withFocused (addTag "0")) , ("M-t a q", withFocused (addTag "q")) , ("M-t a w", withFocused (addTag "w")) , ("M-t a e", withFocused (addTag "e")) , ("M-t a r", withFocused (addTag "r")) , ("M-t a t", withFocused (addTag "t")) , ("M-t a z", withFocused (addTag "z")) , ("M-t a u", withFocused (addTag "u")) , ("M-t a i", withFocused (addTag "i")) , ("M-t a o", withFocused (addTag "o")) , ("M-t a p", withFocused (addTag "p")) , ("M-t 1", focusUpTaggedGlobal "1") , ("M-t 2", focusUpTaggedGlobal "2") , ("M-t 3", focusUpTaggedGlobal "3") , ("M-t 4", focusUpTaggedGlobal "4") , ("M-t 5", focusUpTaggedGlobal "5") , ("M-t 6", focusUpTaggedGlobal "6") , ("M-t 7", focusUpTaggedGlobal "7") , ("M-t 8", focusUpTaggedGlobal "8") , ("M-t 9", focusUpTaggedGlobal "9") , ("M-t 0", focusUpTaggedGlobal "0") , ("M-t q", focusUpTaggedGlobal "q") , ("M-t w", focusUpTaggedGlobal "w") , ("M-t e", focusUpTaggedGlobal "e") , ("M-t r", focusUpTaggedGlobal "r") , ("M-t t", focusUpTaggedGlobal "t") , ("M-t z", focusUpTaggedGlobal "z") , ("M-t u", focusUpTaggedGlobal "u") , ("M-t i", focusUpTaggedGlobal "i") , ("M-t o", focusUpTaggedGlobal "o") , ("M-t p", focusUpTaggedGlobal "p") , ("M-t S-1", focusDownTaggedGlobal "1") , ("M-t S-2", focusDownTaggedGlobal "2") , ("M-t S-3", focusDownTaggedGlobal "3") , ("M-t S-4", focusDownTaggedGlobal "4") , ("M-t S-5", focusDownTaggedGlobal "5") , ("M-t S-6", focusDownTaggedGlobal "6") , ("M-t S-7", focusDownTaggedGlobal "7") , ("M-t S-8", focusDownTaggedGlobal "8") , ("M-t S-9", focusDownTaggedGlobal "9") , ("M-t S-0", focusDownTaggedGlobal "0") , ("M-t S-q", focusDownTaggedGlobal "q") , ("M-t S-w", focusDownTaggedGlobal "w") , ("M-t S-e", focusDownTaggedGlobal "e") , ("M-t S-r", focusDownTaggedGlobal "r") , ("M-t S-t", focusDownTaggedGlobal "t") , ("M-t S-z", focusDownTaggedGlobal "z") , ("M-t S-u", focusDownTaggedGlobal "u") , ("M-t S-i", focusDownTaggedGlobal "i") , ("M-t S-o", focusDownTaggedGlobal "o") , ("M-t S-p", focusDownTaggedGlobal "p") , ("M- s",withFocused $ windows . W.sink) -- , ("M-c 1", copy 1) -- , ("M-c 2", copy 2) -- , ("M-c 3", copy 3) -- , ("M-c 4", copy 4) -- , ("M-c 5", copy 5) -- , ("M-c 6", copy 6) -- , ("M-c 7", copy 7) -- , ("M-c 8", copy 8) -- , ("M-c 9", copy 9) ]