Add signal to autostart

This commit is contained in:
qvalentin 2022-04-21 13:42:43 +02:00
parent f96ce2e628
commit 64ca36c417
Signed by: qvalentin
GPG Key ID: C979FA1EAFCABF1C
1 changed files with 71 additions and 50 deletions

121
xmonad.hs
View File

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