[XMonad] Add goFullscreenDWIM

This commit is contained in:
Ivan Malison 2017-04-14 19:37:30 -07:00
parent 14162c437e
commit f09ec7b7db
No known key found for this signature in database
GPG Key ID: 62530EFBE99DC2F8

View File

@ -522,6 +522,13 @@ actOnWindowsInWorkspace :: (Window -> X ())
actOnWindowsInWorkspace windowAction getWindowsAction = restoreFocus $
withWorkspace (getWindowsAction >=> mapM_ windowAction)
goFullscreenDWIM =
withWorkspace $ \ws -> do
wins <- windowsWithFocusedClass ws
if length wins > 1
then goFullscreen
else minimizeOtherClassesInWorkspace
windowsWithUnfocusedClass ws = windowsWithOtherClasses (W.focus ws) ws
windowsWithFocusedClass ws = windowsWithSameClass (W.focus ws) ws
windowsWithOtherClasses = windowsMatchingClassPredicate (/=)
@ -738,7 +745,7 @@ addKeys conf@XConfig { modMask = modm } =
, ((modm, xK_g), myGoToWindow)
, ((modm, xK_b), myBringWindow)
, ((modm .|. shiftMask, xK_b), myReplaceWindow)
, ((modm .|. controlMask, xK_space), goFullscreen)
, ((modm .|. controlMask, xK_space), deactivateFullOr goFullscreenDWIM)
, ((modm, xK_m), withFocused minimizeWindow)
, ((modm .|. shiftMask, xK_m),
deactivateFullOr $ withLastMinimized maximizeWindowAndFocus)