import XMonad import XMonad.Actions.SpawnOn(spawnHere) import XMonad.Hooks.ManageDocks import XMonad.Util.EZConfig(additionalKeysP) import XMonad.Layout.NoBorders import XMonad.Hooks.SetWMName import XMonad.Hooks.ManageHelpers import XMonad.Util.Run(spawnPipe) import XMonad.Layout.ResizableTile import XMonad.Layout.ResizableTile(MirrorResize(MirrorShrink, MirrorExpand)) import XMonad.StackSet main :: IO () main = do xmproc <- spawnPipe "xmobar" xmonad $ docks $ def -- Fullscreen handling: -- https://stackoverflow.com/questions/20446348/xmonad-toggle-fullscreen-xmobar { manageHook = manageDocks <+> (isFullscreen --> doFullFloat) <+> (className =? "trayer" --> doIgnore) <+> manageHook def -- , handleEventHook = handleEventHook def <+> docksEventHook , layoutHook = myLayoutHook , modMask = mod4Mask -- User Super instead of Alt , terminal = myTerminal , startupHook = myStartup } `additionalKeysP` myKeyPBindings myTerminal :: String myTerminal = "st" dbg :: String dbg = "xmessage 'xmonad EuAndreh debug'" myKeyPBindings :: [(String, X ())] myKeyPBindings = [ ("", spawn "volume toggle") , ("", spawn "volume down") , ("", spawn "volume up") , ("M-S-s", spawn "volume rotate") , ("", spawn "player backward") , ("S-", spawn "player previous") , ("", spawn "player play-pause") , ("S-", spawn "player rotate") , ("", spawn "player forward") , ("S-", spawn "player next") , ("", spawn "brightnessctl -- set -10%") , ("", spawn "brightnessctl -- set +10%") , ("M-c", spawn "mate-calc") , ("M-u", spawn "wms uuid") , ("M-t", spawn "wms date") , ("M-m", spawn "wms clear-notification") , ("M-p", spawn "menu bin") , ("M-o", spawn "menu emoji") , ("M-v", spawn "menu clipboard") , ("M-i", spawn "menu password") , ("C-M-i", spawn "menu username") , ("C-M-S-i", spawn "menu yubikey") , ("", spawn "shot") , ("M-", spawn "shot -m") -- Stop floating , ("M-S-", withFocused $ windows . XMonad.StackSet.sink) -- Lock screen , ("C-M-l", spawn "dm-tool switch-to-greeter") -- Toggle appearence of xmobar -- https://stackoverflow.com/a/27646652 , ("M-f", sendMessage ToggleStruts) , ("M-รง", spawn dbg) -- Vertically resize, taken from: -- https://stackoverflow.com/questions/25857674/xmonad-vertical-resize-tile-window , ("M-a", sendMessage MirrorExpand) , ("M-z", sendMessage MirrorShrink) ] myLayoutHook = smartBorders $ avoidStruts $ (tiled ||| Mirror tiled ||| Full) where tiled = ResizableTall nmaster delta ratio [] nmaster = 1 delta = 3/100 ratio = 1/2 myStartup :: X () myStartup = do -- Taken from: -- https://stackoverflow.com/questions/30742662/java-swing-gui-not-displaying-in-xmonad setWMName "LG3D"