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) <+> (className =? "trayer" --> doIgnore) <+> manageHook def , handleEventHook = handleEventHook def <+> docksEventHook -- , layoutHook = smartBorders $ lessBorders OnlyFloat $ avoidStruts $ layoutHook def , layoutHook = smartBorders $ avoidStruts $ layoutHook def , modMask = mod4Mask -- User Super instead of Alt , terminal = myTerminal , startupHook = startup } `additionalKeys` myKeyBindings myTerminal = "gnome-terminal" 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=$(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 "~/dev/libre/dotfiles/scripts/single-monitor.sh") -- xrandr three monitor setup , ((mod4Mask .|. controlMask, xK_3), spawn "~/dev/libre/dotfiles/scripts/three-monitors.sh") -- restart network , ((mod4Mask, xK_x), spawn "gksudo -S systemctl restart network-manager") -- save selection (link) in buku , ((mod4Mask, xK_c), spawn "$HOME/dev/libre/dotfiles/scripts/buku-add.sh >> /tmp/buku-xmonad.log") -- delete selection (link) from buku , ((mod4Mask, xK_d), spawn "$HOME/dev/libre/dotfiles/scripts/buku-delete.sh >> /tmp/buku-xmonad.log") -- archive selection (link) in buku , ((mod4Mask, xK_a), spawn "$HOME/dev/libre/dotfiles/scripts/buku-archive.sh >> /tmp/buku-xmonad.log") -- toggle appearence of xmobar -- https://stackoverflow.com/a/27646652 , ((mod4Mask .|. shiftMask, xK_f), sendMessage ToggleStruts) ] startup :: X() startup = do spawn "xbacklight =100" spawn "xmobar ~/.xmobarrc" spawn "killall trayer; trayer --edge top --align right --SetDockType false --SetPartialStrut false --expand false --width 10 --transparent true --tint 0x191970 --height 17 --monitor 1" spawn "nm-applet" spawn "~/dev/libre/dotfiles/scripts/once-only-owncloud.sh" setWMName "LG3D" -- https://stackoverflow.com/questions/30742662/java-swing-gui-not-displaying-in-xmonad