nixos-configs/modules/desktop/xmonad/xmonad.hs

131 lines
4.4 KiB
Haskell
Raw Normal View History

2020-02-20 03:10:43 +01:00
import System.Exit
import Data.Maybe (Maybe, isNothing, fromJust)
import qualified Data.List as L
import qualified Data.Map as M
import GHC.IO.Handle
-- Xmonad Core
import XMonad
import qualified XMonad.StackSet as W
import XMonad.Config.Desktop
import XMonad.Config.Azerty
-- Layouts
import XMonad.Layout.LayoutModifier
import XMonad.Layout.Gaps
import XMonad.Layout.Spacing
import XMonad.Layout.MultiToggle
import XMonad.Layout.NoBorders
import XMonad.Layout.MultiToggle.Instances
import XMonad.Layout.ResizableTile
import XMonad.Layout.BinarySpacePartition
import XMonad.Layout.SimpleFloat
import XMonad.Layout.PerWorkspace (onWorkspace)
import XMonad.Layout.Minimize
import XMonad.Layout.Fullscreen
-- Actions
import XMonad.Actions.Navigation2D
import XMonad.Actions.GridSelect
import XMonad.Actions.UpdatePointer
import XMonad.Actions.SpawnOn
import XMonad.Actions.CycleWS
-- Hooks
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageHelpers
import XMonad.Hooks.SetWMName
import XMonad.Hooks.EwmhDesktops
import XMonad.Hooks.ManageDocks
-- Utils
import XMonad.Util.NamedScratchpad
import XMonad.Util.WorkspaceCompare
import XMonad.Util.Run
import XMonad.Util.EZConfig
2022-07-27 03:16:04 +02:00
myTerminal = "alacritty"
2020-02-20 03:10:43 +01:00
mySelectScreenshot = "scrot -s"
myScreenshot = "scrot"
myWorkspaces = ["1","2","3","4","5","6"] ++ map show [7..9]
myModMask = mod4Mask
myFocusFollowsMouse :: Bool
myFocusFollowsMouse = True
main = do
2023-03-21 23:02:30 +01:00
xmonad $ ewmh . docks $ myConfig
2020-02-20 03:10:43 +01:00
2023-03-21 23:02:30 +01:00
myConfig = azertyConfig {
2020-02-20 03:10:43 +01:00
terminal = myTerminal,
focusFollowsMouse = True,
borderWidth = 1,
modMask = mod4Mask,
workspaces = myWorkspaces,
normalBorderColor = "#474646",
focusedBorderColor = "#83a598",
layoutHook = myLayout,
2022-11-30 01:17:29 +01:00
manageHook = manageDocks <+> (isFullscreen --> doFullFloat) <+> manageHook def,
--handleEventHook = myEventHook <+> handleEventHook def,
2023-03-21 23:02:30 +01:00
logHook = logHook def,
2020-02-20 03:10:43 +01:00
--keys = \c -> mkKeymap c myAdditionalKeys,
2023-03-21 23:02:30 +01:00
startupHook = myStartupHook
2020-02-20 03:10:43 +01:00
} `removeKeysP` myRemoveKeys `additionalKeysP` myAdditionalKeys
myRemoveKeys = [
]
myAdditionalKeys = [
("M-q", kill),
2020-02-23 21:40:47 +01:00
("M-x", spawn "i3lock -e -f -c 000000 -i ~/.wallpaper.png"),
2020-02-20 03:10:43 +01:00
("M-S-h", sendMessage (IncMasterN 1)),
("M-S-l", sendMessage (IncMasterN (-1))),
("M-S-<Return>", windows W.swapMaster),
2023-03-17 13:02:05 +01:00
("M-d", spawn "rofi -show drun"),
2020-02-20 03:10:43 +01:00
("M-s", spawn "rofi -show ssh"),
("M-w", spawn "firefox"),
("M-i", spawn $ myTerminal ++ " -e htop"),
2023-03-17 13:02:05 +01:00
("M-e", spawn "emacsclient -c"),
2020-02-20 03:10:43 +01:00
("M-r", spawn $ myTerminal ++ " -e ranger"),
("M-y", spawn $ myTerminal ++ " -e calcurse"),
("M-v", spawn $ myTerminal ++ " -e ncmpcpp -s visualizer"),
("M-m", spawn $ myTerminal ++ " -e ncmpcpp"),
("M-n", spawn $ myTerminal ++ " -e newsboat"),
("M-c", spawn $ myTerminal ++ " -e weechat"),
("<Print>", spawn "scrot -e 'mv $f ~/Pictures/Screenshots'"),
("S-<Print>", spawn "~/.xmonad/scripts/screenshot.sh"),
("M-S-a", spawn $ myTerminal ++ " -e pulsemixer"),
("M-<Return>", spawn myTerminal),
("M-f", sendMessage $ Toggle FULL),
-- Switch workspaces and screens
--("M-<Right>", moveTo Next (WSIs hiddenNotNSP)),
--("M-<Left>", moveTo Prev (WSIs hiddenNotNSP)),
--("M-S-<Right>", shiftTo Next (WSIs hiddenNotNSP)),
--("M-S-<Left>", shiftTo Prev (WSIs hiddenNotNSP)),
("M-<Down>", nextScreen),
("M-<Up>", prevScreen),
("M-S-<Down>", shiftNextScreen),
("M-S-<Up>", shiftPrevScreen),
("M-S-r", spawn "xmonad --recompile; xmonad --restart"),
2020-05-04 09:46:23 +02:00
("<XF86AudioLowerVolume>" ,spawn "pulsemixer --change-volume -1"),
("<XF86AudioRaiseVolume>" ,spawn "pulsemixer --change-volume +1"),
2020-02-20 03:10:43 +01:00
("<XF86AudioMute>" ,spawn "pulsemixer --toggle-mute"),
2023-03-23 01:56:21 +01:00
("<XF86MonBrightnessDown>" ,spawn "light -U 5"),
("<XF86MonBrightnessUp>" ,spawn "light -A 5"),
2020-02-20 03:10:43 +01:00
("<XF86AudioPlay>" ,spawn "mpc toggle"),
("M-p" ,spawn "mpc toggle"),
("<XF86AudioPrev>" ,spawn "mpc prev"),
2020-10-11 20:33:37 +02:00
("<XF86AudioNext>" ,spawn "mpc next"),
("<XF86Sleep>" ,spawn "systemctl suspend")
2020-02-20 03:10:43 +01:00
]
myLayout = smartSpacing 5
2022-11-30 01:17:29 +01:00
$ smartBorders
2020-02-20 03:10:43 +01:00
$ mkToggle (NOBORDERS ?? FULL ?? EOT)
$ avoidStruts
2022-11-30 01:17:29 +01:00
$ layoutHook def
2020-02-20 03:10:43 +01:00
2023-03-21 23:02:30 +01:00
myStartupHook = do
2020-02-20 03:10:43 +01:00
setWMName "LG3D"
2023-03-21 23:02:30 +01:00
return () >> checkKeymap myConfig myAdditionalKeys