diff options
Diffstat (limited to 'etc/xmonad/xmonad.hs')
-rw-r--r-- | etc/xmonad/xmonad.hs | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/etc/xmonad/xmonad.hs b/etc/xmonad/xmonad.hs new file mode 100644 index 0000000..c80e006 --- /dev/null +++ b/etc/xmonad/xmonad.hs @@ -0,0 +1,86 @@ +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)) + +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 = + [ + ("<F1>", spawn "volume toggle") + , ("<F2>", spawn "volume down") + , ("<F3>", spawn "volume up") + , ("M-S-s", spawn "volume rotate") + + , ("<F4>", spawn "player backward") + , ("S-<F4>", spawn "player previous") + , ("<F5>", spawn "player play-pause") + , ("S-<F5>", spawn "player rotate") + , ("<F6>", spawn "player forward") + , ("S-<F6>", spawn "player next") + + , ("<F7>", spawn "brightness -1") + , ("<F8>", spawn "brightness +1") + + , ("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") + + , ("<Print>", spawn "shot") + , ("M-<Print>", spawn "shot -m") + + -- 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" |