diff options
Diffstat (limited to 'xmonad/xmonad.hs')
-rw-r--r-- | xmonad/xmonad.hs | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/xmonad/xmonad.hs b/xmonad/xmonad.hs new file mode 100644 index 0000000..299053f --- /dev/null +++ b/xmonad/xmonad.hs @@ -0,0 +1,106 @@ +import XMonad +import XMonad.Actions.SpawnOn +import XMonad.Hooks.DynamicLog() +import XMonad.Hooks.ManageDocks +import XMonad.Util.EZConfig(additionalKeys) +import System.IO() +import XMonad.Layout.NoBorders +import XMonad.Hooks.SetWMName +import XMonad.Hooks.ManageHelpers +import XMonad.Util.Scratchpad +import qualified XMonad.StackSet as W + +main :: IO () +main = + xmonad $ def + -- Fullscreen handling: + -- https://stackoverflow.com/questions/20446348/xmonad-toggle-fullscreen-xmobar + { manageHook = manageDocks <+> (isFullscreen --> doFullFloat) <+> manageHook def <+> manageScratchPad + , handleEventHook = handleEventHook def <+> docksEventHook + , layoutHook = smartBorders $ lessBorders OnlyFloat $ avoidStruts $ layoutHook def + , modMask = mod4Mask -- User Super instead of Alt + , terminal = myTerminal + , startupHook = startup + } `additionalKeys` myKeyBindings + +myTerminal = "gnome-terminal" + +manageScratchPad :: ManageHook +manageScratchPad = scratchpadManageHook (W.RationalRect l t w h) + where + h = 0.1 -- terminal height, 10% + w = 1 -- terminal width, 100% + t = 1 - h -- distance from top edge, 90% + l = 1 - w -- distance from left edge, 0% + +myKeyBindings :: [((ButtonMask, KeySym), X())] +myKeyBindings = + [ -- XF86MonBrightnessUp + ((0, 0x1008ff02), + spawn "xbacklight +10") + + -- XF86MonBrightnessDown + , ((0, 0x1008ff03), + spawn "xbacklight -10") + + -- XF86AudioMute + , ((0, 0x1008ff12), + spawn "amixer -q sset Master toggle") + + -- XF86AudioLowerVolume + , ((0, 0x1008ff11), + spawn "amixer -q sset Master 5%- unmute") + + -- XF86AudioRaiseVolume + , ((0, 0x1008ff13), + spawn "amixer -q sset Master 5%+ unmute") + + -- XF86AudioPrev + , ((0, 0x1008ff16), + spawn "playerctl previous") + + -- XF86AudioPlay + , ((0, 0x1008ff14), + spawn "playerctl play-pause") + + -- XF86AudioNext + , ((0, 0x1008ff17), + spawn "playerctl next") + + -- yeganesh launcher + , ((mod4Mask, xK_p), + spawnHere "exe=$(~/.local/bin/yeganesh -x) && exec $exe") + + -- Lock screen + , ((mod4Mask .|. controlMask, xK_l), + spawn "dm-tool lock & systemctl suspend") + + -- print screen of clicked window + , ((mod4Mask .|. controlMask, xK_Print), + spawn "escrotum ~/Desktop/%Y-%m-%d-%T-screenshot.png -s") + + -- print whole screen + , ((mod4Mask, xK_Print), + spawn "escrotum ~/Desktop/%Y-%m-%d-%T-screenshot.png") + + -- xrandr single monitor setup + , ((mod4Mask .|. controlMask, xK_1), + spawn "~/annex/dev/code/dotfiles/scripts/single-monitor.sh") + + -- xrandr three monitor setup + , ((mod4Mask .|. controlMask, xK_3), + spawn "~/annex/dev/code/dotfiles/scripts/three-monitors.sh") + + -- restart network + , ((mod4Mask, xK_x), + spawn "gksudo -S systemctl restart network-manager") + ] + +startup :: X() +startup = do + spawn "xbacklight =100" + spawn "xmobar ~/.xmobarrc" + spawn "killall trayer; trayer --edge top --align right --SetDockType true --SetPartialStrut true --expand true --width 10 --transparent true --tint 0x191970 --height 17 --monitor 1" + spawn "nm-applet" + spawn "~/annex/dev/code/dotfiles/scripts/once-only-nextcloud.sh" + setWMName "LG3D" -- https://stackoverflow.com/questions/30742662/java-swing-gui-not-displaying-in-xmonad |