From 64ca36c4174c09821d3774de3816fba964ce2de4 Mon Sep 17 00:00:00 2001 From: qvalentin Date: Thu, 21 Apr 2022 13:42:43 +0200 Subject: [PATCH] Add signal to autostart --- xmonad.hs | 121 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 71 insertions(+), 50 deletions(-) diff --git a/xmonad.hs b/xmonad.hs index b24e8c1..0c01cc6 100644 --- a/xmonad.hs +++ b/xmonad.hs @@ -30,26 +30,35 @@ import XMonad terminal, workspaces ), + button1, + button3, className, composeAll, doF, doFloat, doIgnore, doShift, + focus, handleEventHook, mod4Mask, + mouseMoveWindow, + mouseResizeWindow, resource, sendMessage, + shiftMask, spawn, title, withWindowSet, xmonad, (-->), + (.|.), (<&&>), (<+>), (=?), (|||), ) +import XMonad.Actions.FloatSnap +import XMonad.Actions.Navigation2D (windowGo, withNavigation2DConfig) import XMonad.Actions.WindowGo (raise, runOrRaise) import XMonad.Hooks.DynamicLog ( PP @@ -84,8 +93,8 @@ import XMonad.Hooks.StatusBar statusBarProp, withEasySB, ) -import XMonad.Layout (Resize (Expand, Shrink)) -import XMonad.Layout.Fullscreen (fullscreenEventHook) +import XMonad.Layout (JumpToLayout (JumpToLayout), Resize (Expand, Shrink)) +import XMonad.Layout.Fullscreen (fullscreenEventHook, fullscreenFull, fullscreenManageHook) import XMonad.Layout.LayoutModifier import qualified XMonad.Layout.LayoutModifier import XMonad.Layout.Named (named) @@ -102,7 +111,7 @@ import XMonad.Layout.WindowNavigation windowNavigation, ) import XMonad.StackSet (RationalRect (RationalRect), Stack (Stack), Workspace (tag), currentTag, greedyView, integrate', shift, stack) -import XMonad.Util.EZConfig (additionalKeysP) +import XMonad.Util.EZConfig (additionalKeysP, additionalMouseBindings) import XMonad.Util.Font (fi) import XMonad.Util.Loggers (logTitles, wrapL) import XMonad.Util.SpawnOnce (spawnOnce) @@ -114,44 +123,51 @@ main = do colors <- getWalColors xmonad . ewmhFullscreen . ewmh . withEasySB (statusBarProp "xmobar ~/.config/xmobar/xmobarrc" (pure $ myXmobarPP colors)) defToggleStrutsKey - $ def - { modMask = mod4Mask, - terminal = "st", - startupHook = myStartupHook, - borderWidth = 2, - normalBorderColor = "#000000", - focusedBorderColor = colors !! 7, - workspaces = myWorkspaces, - manageHook = myManageHook, - layoutHook = myLayout, - handleEventHook = - handleEventHook def <+> fullscreenEventHook - } - `additionalKeysP` [ ("M-S-z", spawn "xscreensaver-command -lock"), - ("M-S-s", unGrab *> spawn "cast_screenshot"), - ("M-f", runOrRaise "brave" (className =? "Brave-browser")), - ("M-i", raise (className =? "jetbrains-idea")), - ("M-", spawn "rofi -show drun"), - ("M-p", spawn "dmenu-with-suggestions"), - -- audio settings - ("", spawn "amixer set Master 5%- unmute"), - ("", spawn "amixer set Master 5%+ unmute"), - ("", spawn "amixer set Master toggle"), - ("", spawn "playerctl play-pause"), - ("", spawn "playerctl previous"), - ("", spawn "playerctl next"), - -- window navigation - ("M-l", sendMessage $ Go R), - ("M-h", sendMessage $ Go L), - ("M-S-h", sendMessage Shrink), -- Shrink horiz window width - ("M-S-l", sendMessage Expand), -- Expand horiz window width - -- layout switching - ("M-", sendMessage NextLayout), - -- dmenu stuff - ("M1-", spawn "powerbutton"), - -- lockscreen - ("M-", spawn "betterlockscreen -l") - ] + $ withNavigation2DConfig def $ + def + { modMask = mod4Mask, + terminal = "st", + startupHook = myStartupHook, + borderWidth = 2, + normalBorderColor = head colors, + focusedBorderColor = colors !! 4, + workspaces = myWorkspaces, + manageHook = myManageHook, + layoutHook = myLayout, + handleEventHook = + handleEventHook def <+> fullscreenEventHook + } + `additionalKeysP` [ ("M-S-z", spawn "xscreensaver-command -lock"), + ("M-S-s", unGrab *> spawn "cast_screenshot"), + ("M-f", runOrRaise "brave" (className =? "Brave-browser")), + ("M-o", runOrRaise "emacs" (className =? "Emacs")), + ("M-i", raise (className =? "jetbrains-idea")), + ("M-", spawn "rofi -show drun"), + ("M-p", spawn "dmenu-with-suggestions"), + -- audio settings + ("", spawn "amixer set Master 5%- unmute"), + ("", spawn "amixer set Master 5%+ unmute"), + ("", spawn "amixer set Master toggle"), + ("", spawn "playerctl play-pause"), + ("", spawn "playerctl previous"), + ("", spawn "playerctl next"), + -- window navigation + ("M-l", windowGo R False), + ("M-h", windowGo L False), + ("M-S-h", sendMessage Shrink), -- Shrink horiz window width + ("M-S-l", sendMessage Expand), -- Expand horiz window width + -- layout switching + ("M-", sendMessage NextLayout), + ("M-", sendMessage $ JumpToLayout "Full"), -- jump directly to the Full layout + -- dmenu stuff + ("M1-", spawn "powerbutton"), + -- lockscreen + ("M-", spawn "betterlockscreen -l & sleep 4 && xdg-screensaver activate") + ] + `additionalMouseBindings` [ ((mod4Mask, button1), \w -> focus w >> mouseMoveWindow w >> afterDrag (snapMagicMove (Just 200) (Just 200) w)), + ((mod4Mask .|. shiftMask, button1), \w -> focus w >> mouseMoveWindow w >> afterDrag (snapMagicResize [L, R, U, D] (Just 200) (Just 200) w)), + ((mod4Mask, button3), \w -> focus w >> mouseResizeWindow w >> afterDrag (snapMagicResize [R, D] (Just 50) (Just 50) w)) + ] myXmobarPP :: [String] -> PP myXmobarPP colors = @@ -159,8 +175,8 @@ myXmobarPP colors = { ppSep = walXmobarColor 1 " \63617 ", ppTitleSanitize = xmobarStrip, ppCurrent = wrap " " "" . xmobarBorder "Top" (colors !! 6) 2, - ppHidden = white . wrap " " "", - ppHiddenNoWindows = lowWhite . wrap " " "", + ppHidden = walXmobarColor 2 . wrap " " "", + ppHiddenNoWindows = walXmobarColor 1 . wrap " " "", ppUrgent = red . wrap (yellow "!") (yellow "!"), ppVisible = wrap " " "" . xmobarBorder "Bottom" (colors !! 6) 2, ppOrder = \[ws, l, _, wins] -> [ws, l, wins], @@ -168,8 +184,8 @@ myXmobarPP colors = ppSort = hideWorkspaces } where - formatFocused = wrap (walXmobarColor 7 "\58279") (walXmobarColor 7 "\58254") . walXmobarColor 7 . ppWindow - formatUnfocused = wrap (walXmobarColor 4 "\58279") (walXmobarColor 4 "\58254") . walXmobarColor 4 . ppWindow + formatFocused = wrap (walXmobarColor 4 "\58279") (walXmobarColor 4 "\58254") . walXmobarColor 4 . ppWindow + formatUnfocused = wrap (walXmobarColor 7 "\58279") (walXmobarColor 7 "\58254") . walXmobarColor 7 . ppWindow walXmobarColor index = xmobarColor (colors !! index) "" ppWindow :: String -> String ppWindow = xmobarRaw . (\w -> if null w then "untitled" else w) . shorten 30 @@ -193,10 +209,14 @@ myXmobarPP colors = myStartupHook :: X () myStartupHook = do - spawnOnce "picom &" - spawnOnce "sh $HOME/.fehbg" - spawnOnce "setxkbmap -option caps:escape" - spawnOnce "xset r rate 300 50" + mapM_ + spawnOnce + [ "picom --experimental-backends &", + "sh $HOME/.fehbg", + "setxkbmap -option caps:escape", + "xset r rate 300 50", + "signal-deskto &" + ] getWalColors :: IO [String] getWalColors = do @@ -212,7 +232,7 @@ mySpacing' i = spacingRaw True (Border i 0 i i) True (Border i 0 i i) True myWorkspaces :: [String] myWorkspaces = show <$> ([1 .. 9] :: [Integer]) -myLayout = smartBorders $ windowNavigation tiled ||| smartBorders Full ||| Mirror (fullWSpacing 8 $ Tall nmaster delta ratio) +myLayout = fullscreenFull $ smartBorders $ tiled ||| smartBorders Full ||| Mirror (fullWSpacing 8 $ Tall nmaster delta ratio) where tiled = named "Tall" $ mySpacing' 8 $ Tall nmaster delta ratio nmaster = 1 -- Default number of windows in the master pane @@ -251,6 +271,7 @@ myManageHook = (className =? "TelegramDesktop") <&&> (title ~=? "Media viewer") --> doFloat ] <+> insertPosition End Newer + <+> fullscreenManageHook where viewShift = doF . liftM2 (.) greedyView shift