aboutsummaryrefslogtreecommitdiff
path: root/etc/xmonad/xmonad.hs
diff options
context:
space:
mode:
Diffstat (limited to 'etc/xmonad/xmonad.hs')
-rw-r--r--etc/xmonad/xmonad.hs100
1 files changed, 100 insertions, 0 deletions
diff --git a/etc/xmonad/xmonad.hs b/etc/xmonad/xmonad.hs
new file mode 100644
index 0000000..d459ced
--- /dev/null
+++ b/etc/xmonad/xmonad.hs
@@ -0,0 +1,100 @@
+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 $XDG_CONFIG_HOME/xmonad/xmobarrc"
+ 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 = 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 =
+ [ -- Volume
+ ("<F1>", spawn "amixer -q sset Master toggle")
+ , ("<F2>", spawn "amixer -q sset Master 5%- unmute")
+ , ("<F3>", spawn "amixer -q sset Master 5%+ unmute")
+
+ -- Playback
+ , ("<F4>", spawn "playerctl --player=$(cat ~/.cache/euandreh/mpris-player.txt) position 5-")
+ , ("S-<F4>", spawn "playerctl --player=$(cat ~/.cache/euandreh/mpris-player.txt) previous")
+ , ("<F5>", spawn "~/dev/libre/dotfiles/xmonad/scripts/playerctl-play-pause.sh")
+ , ("S-<F5>", spawn "~/dev/libre/dotfiles/xmonad/scripts/rotate-mpris-player.sh")
+ , ("<F6>", spawn "playerctl --player=$(cat ~/.cache/euandreh/mpris-player.txt) position 5+")
+ , ("S-<F6>", spawn "playerctl --player=$(cat ~/.cache/euandreh/mpris-player.txt) next")
+
+ -- Brightness
+ , ("<F7>", spawn "~/dev/libre/dotfiles/xmonad/scripts/brightness.sh -10")
+ , ("S-<F7>", spawn "~/dev/libre/dotfiles/xmonad/scripts/zero-brightness.sh")
+ , ("<F8>", spawn "~/dev/libre/dotfiles/xmonad/scripts/brightness.sh +10")
+
+ , ("M-p", spawnHere "exe=$(dmenu_path | dmenu) && exec $exe")
+ , ("M-o", spawnHere "~/dev/libre/dotfiles/xmonad/scripts/dmenu-emoji.sh")
+ , ("M-v", spawnHere "~/dev/libre/dotfiles/xmonad/scripts/dmenu-clipmenu.sh")
+ , ("M-i", spawn "~/dev/libre/dotfiles/xmonad/scripts/dmenu-pass.sh")
+ , ("C-M-i", spawnHere "~/dev/libre/dotfiles/xmonad/scripts/dmenu-pass-login.sh")
+
+ -- Lock screen
+ , ("C-M-l", spawn "dm-tool switch-to-greeter")
+
+ -- print whole screen
+ , ("M-<Print>", spawn "escrotum ~/Downloads/Screenshots/%Y-%m-%d-%T-screenshot.png")
+ -- print screen of clicked window
+ , ("C-M-<Print>", spawn "escrotum ~/Downloads/Screenshots/%Y-%m-%d-%T-screenshot.png -s")
+
+ -- xrandr single monitor setup
+ , ("C-M-1", spawn "~/dev/libre/dotfiles/xmonad/scripts/single-monitor.sh")
+
+ -- xrandr three monitor setup
+ , ("C-M-3", spawn "~/dev/libre/dotfiles/xmonad/scripts/three-monitors.sh")
+
+ -- 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)
+
+
+ -- Toggle PulseAudio sink
+ , ("M-s", spawn "~/dev/libre/dotfiles/xmonad/scripts/toggle-pulseaudio-sink.sh")
+ ]
+
+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"