aboutsummaryrefslogtreecommitdiff
path: root/xmonad/xmonad.hs
diff options
context:
space:
mode:
Diffstat (limited to 'xmonad/xmonad.hs')
-rw-r--r--xmonad/xmonad.hs106
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