aboutsummaryrefslogtreecommitdiff
path: root/xmonad/.config
diff options
context:
space:
mode:
Diffstat (limited to 'xmonad/.config')
-rw-r--r--xmonad/.config/xmonad/xmonad.hs135
1 files changed, 135 insertions, 0 deletions
diff --git a/xmonad/.config/xmonad/xmonad.hs b/xmonad/.config/xmonad/xmonad.hs
new file mode 100644
index 0000000..5e14eea
--- /dev/null
+++ b/xmonad/.config/xmonad/xmonad.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# OPTIONS_GHC -Wno-deprecations #-}
+
+import Data.Map qualified as M
+import System.Exit (exitSuccess)
+import XMonad
+import XMonad.Actions.CycleWS (nextScreen, shiftNextScreen)
+import XMonad.Hooks.EwmhDesktops
+import XMonad.Hooks.InsertPosition
+import XMonad.Hooks.ManageHelpers (isDialog)
+import XMonad.Hooks.StatusBar
+import XMonad.Hooks.StatusBar.PP
+import XMonad.Layout.NoBorders (smartBorders)
+import XMonad.Layout.Renamed (Rename (Replace), renamed)
+import XMonad.StackSet qualified as W
+import XMonad.Util.ClickableWorkspaces
+import XMonad.Util.EZConfig (additionalKeysP)
+import XMonad.Util.Ungrab
+import XMonad.Util.SpawnOnce (spawnOnce)
+myModMask :: KeyMask
+myModMask = mod4Mask
+
+myTerminal :: String
+myTerminal = "alacritty"
+
+myBorderWidth :: Dimension
+myBorderWidth = 2
+
+colBg, colFg, colAccent, colGrey :: String
+colBg = "#101010"
+colFg = "#cccccc"
+colAccent = "#708090"
+colGrey = "#606060"
+
+myWorkspaces :: [String]
+myWorkspaces = map show [1 .. 9 :: Int]
+
+myLayout = renamed [Replace "[]="] tiled ||| renamed [Replace "[M]"] Full
+ where
+ tiled = Tall nmaster delta ratio
+ nmaster = 1
+ ratio = 0.50
+ delta = 3 / 100
+
+myManageHook :: ManageHook
+myManageHook =
+ composeAll
+ [ className =? "confirmreset" --> doFloat,
+ className =? "makebranch" --> doFloat,
+ className =? "maketag" --> doFloat,
+ className =? "ssh-askpass" --> doFloat,
+ className =? "Blueman-manager" --> doFloat,
+ className =? "Pavucontrol" --> doFloat,
+ title =? "branchdialog" --> doFloat,
+ title =? "pinentry" --> doFloat,
+ isDialog --> doFloat
+ ]
+
+myToggleFloat :: Window -> X ()
+myToggleFloat w = windows $ \s ->
+ if M.member w (W.floating s)
+ then W.sink w s
+ else W.float w (W.RationalRect 0.1 0.1 0.8 0.8) s
+
+myXmobarPP :: PP
+myXmobarPP =
+ def
+ { ppCurrent = xmobarColor colBg colAccent . wrap " " " ",
+ ppHidden = xmobarColor colFg "" . wrap " " " ",
+ ppHiddenNoWindows = xmobarColor colGrey "" . wrap " " " ",
+ ppUrgent = xmobarColor "#ff5555" "" . wrap " " " ",
+ ppTitle = xmobarColor colFg "" . shorten 60,
+ ppLayout = xmobarColor colAccent "",
+ ppSep = xmobarColor colGrey "" " "
+ }
+
+main :: IO ()
+main =
+ xmonad
+ . ewmhFullscreen
+ . ewmh
+ . withEasySB (statusBarProp "xmobar" (clickablePP myXmobarPP)) defToggleStrutsKey
+ $ myConfig
+
+startup :: X ()
+startup = do
+ spawnOnce "xmms2-launcher && ~/src/xmms2-mpris/xmms2-mpris"
+ spawnOnce "~/.cargo/bin/mprisence"
+ spawn "dbus-update-activation-environment DISPLAY XAUTHORITY"
+ spawn "feh --bg-scale ~/Pictures/floating_gnu.png"
+ spawn "xset m 0"
+
+myConfig =
+ def
+ { modMask = myModMask,
+ terminal = myTerminal,
+ borderWidth = myBorderWidth,
+ normalBorderColor = colGrey,
+ focusedBorderColor = colAccent,
+ workspaces = myWorkspaces,
+ layoutHook = myLayout,
+ manageHook = insertPosition End Newer <> myManageHook <+> manageHook def,
+ startupHook = startup
+ }
+ `additionalKeysP` [ ("M-<Return>", spawn myTerminal),
+ ("M-p", spawn "j4-dmenu-desktop"),
+ ("M-c", spawn "emacs"),
+ ("M-w", spawn "icecat"),
+ ("M-e", spawn "alacritty -e nnn"),
+ ("M-s", spawn "discord"),
+ ("M-x", spawn "loginctl lock-session"),
+ ("M-S-s", unGrab *> spawn "screenshot select"),
+ ("M-S-r", unGrab *> spawn "screenrecord select"),
+ ("M-q", kill),
+ ("M-f", withFocused myToggleFloat),
+ ("M-j", windows W.focusDown),
+ ("M-k", windows W.focusUp),
+ ("M-h", sendMessage Shrink),
+ ("M-l", sendMessage Expand),
+ ("M-S-h", sendMessage (IncMasterN 1)),
+ ("M-S-l", sendMessage (IncMasterN (-1))),
+ ("M-<Tab>", sendMessage NextLayout),
+ ("M-.", nextScreen),
+ ("M-S-.", shiftNextScreen),
+ ("M-C-q", io exitSuccess),
+ ("<XF86AudioRaiseVolume>", spawn "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"),
+ ("<XF86AudioLowerVolume>", spawn "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"),
+ ("<XF86AudioMute>", spawn "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"),
+ ("<XF86AudioPlay>", spawn "playerctl play-pause"),
+ ("<XF86AudioNext>", spawn "playerctl next"),
+ ("<XF86AudioPrev>", spawn "playerctl previous"),
+ ("<XF86AudioStop>", spawn "playerctl stop"),
+ ("<XF86MonBrightnessUp>", spawn "brightnessctl set +5%"),
+ ("<XF86MonBrightnessDown>", spawn "brightnessctl set 5%-")
+ ]