[XMonad] Ensure that the focused window is not minimized
This commit is contained in:
		| @@ -39,6 +39,7 @@ import XMonad.Layout.Spacing | |||||||
| import qualified XMonad.StackSet as W | import qualified XMonad.StackSet as W | ||||||
| import XMonad.Util.CustomKeys | import XMonad.Util.CustomKeys | ||||||
| import qualified XMonad.Util.ExtensibleState as XS | import qualified XMonad.Util.ExtensibleState as XS | ||||||
|  | import XMonad.Util.Minimize | ||||||
| import XMonad.Util.NamedWindows (getName) | import XMonad.Util.NamedWindows (getName) | ||||||
|  |  | ||||||
| main = xmonad $ def | main = xmonad $ def | ||||||
| @@ -46,7 +47,8 @@ main = xmonad $ def | |||||||
|        , terminal = "urxvt" |        , terminal = "urxvt" | ||||||
|        , manageHook = manageDocks <+> myManageHook <+> manageHook def |        , manageHook = manageDocks <+> myManageHook <+> manageHook def | ||||||
|        , layoutHook = myLayoutHook |        , layoutHook = myLayoutHook | ||||||
|        , logHook = toggleFadeInactiveLogHook 0.9 +++ ewmhWorkspaceNamesLogHook |        , logHook = toggleFadeInactiveLogHook 0.9 +++ ewmhWorkspaceNamesLogHook +++ | ||||||
|  |                    maybeUnminimizeFocused | ||||||
|        , handleEventHook = docksEventHook <+> fullscreenEventHook +++ |        , handleEventHook = docksEventHook <+> fullscreenEventHook +++ | ||||||
|                            ewmhDesktopsEventHook +++ pagerHintsEventHook |                            ewmhDesktopsEventHook +++ pagerHintsEventHook | ||||||
|        , startupHook = myStartup +++ ewmhWorkspaceNamesLogHook |        , startupHook = myStartup +++ ewmhWorkspaceNamesLogHook | ||||||
| @@ -73,7 +75,8 @@ virtualClasses = [ (hangoutsSelector, "Hangouts") | |||||||
|                  , (transmissionSelector, "Transmission") |                  , (transmissionSelector, "Transmission") | ||||||
|                  ] |                  ] | ||||||
|  |  | ||||||
| -- Startup hoo | -- Startup hook | ||||||
|  |  | ||||||
| myStartup = spawn "systemctl --user start wm.target" | myStartup = spawn "systemctl --user start wm.target" | ||||||
|  |  | ||||||
| -- Manage hook | -- Manage hook | ||||||
| @@ -188,7 +191,6 @@ toggleFadingForActiveWindow = withWindowSet $ \windowSet -> do | |||||||
|         let existingValue = M.findWithDefault True window toggleMap |         let existingValue = M.findWithDefault True window toggleMap | ||||||
|         XS.put $ ToggleFade (M.insert window (not existingValue) toggleMap) |         XS.put $ ToggleFade (M.insert window (not existingValue) toggleMap) | ||||||
|         return () |         return () | ||||||
|  |  | ||||||
|  |  | ||||||
| -- Minimize not in class | -- Minimize not in class | ||||||
|  |  | ||||||
| @@ -207,6 +209,13 @@ windowsWithOtherClasses workspace window = do | |||||||
|   let predicate = (/= windowClass) |   let predicate = (/= windowClass) | ||||||
|   filterM (\w -> predicate <$> getClass w) (W.integrate workspace) |   filterM (\w -> predicate <$> getClass w) (W.integrate workspace) | ||||||
|  |  | ||||||
|  | windowIsMinimized w = do | ||||||
|  |   minimized <- XS.gets minimizedStack | ||||||
|  |   return $ w `elem` minimized | ||||||
|  |  | ||||||
|  | maybeUnminimizeFocused = withFocused $ \w -> | ||||||
|  |   windowIsMinimized w >>= flip when (maximizeWindow w) | ||||||
|  |  | ||||||
| restoreAllMinimized = restoreFocus $ | restoreAllMinimized = restoreFocus $ | ||||||
|   withLastMinimized $ \w -> maximizeWindow w >> restoreAllMinimized |   withLastMinimized $ \w -> maximizeWindow w >> restoreAllMinimized | ||||||
|  |  | ||||||
| @@ -258,8 +267,7 @@ addKeys conf@XConfig {modMask = modm} = | |||||||
|     , ((modm .|. shiftMask, xK_m), restoreAllMinimized) |     , ((modm .|. shiftMask, xK_m), restoreAllMinimized) | ||||||
|     , ((modm, xK_backslash), toggleWS) |     , ((modm, xK_backslash), toggleWS) | ||||||
|  |  | ||||||
|     -- TODO: there seems to be a bug with these bindings |     -- These need to be rebound to support boringWindows | ||||||
|     -- Rebind these for boringWindows |  | ||||||
|     , ((modm, xK_j), focusDown) |     , ((modm, xK_j), focusDown) | ||||||
|     , ((modm, xK_k), focusUp) |     , ((modm, xK_k), focusUp) | ||||||
|     , ((modm, xK_m), focusMaster) |     , ((modm, xK_m), focusMaster) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user