diff --git a/CHANGES.md b/CHANGES.md index 81b34fc8..954d1489 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -251,6 +251,11 @@ - Export `Minimize` type constructor. + * `XMonad.Actions.WorkspaceNames` + + - Added `workspaceNamesListTransform` which makes workspace names visible + to external pagers. + * Several `LayoutClass` instances now have an additional `Typeable` constraint which may break some advanced configs. The upside is that we can now add `Typeable` to `LayoutClass` in `XMonad.Core` and make it diff --git a/XMonad/Actions/WorkspaceNames.hs b/XMonad/Actions/WorkspaceNames.hs index 944da78d..c43371c2 100644 --- a/XMonad/Actions/WorkspaceNames.hs +++ b/XMonad/Actions/WorkspaceNames.hs @@ -37,7 +37,10 @@ module XMonad.Actions.WorkspaceNames ( swapWithCurrent, -- * Workspace prompt - workspaceNamePrompt + workspaceNamePrompt, + + -- * EwmhDesktops integration + workspaceNamesListTransform ) where import XMonad @@ -184,3 +187,14 @@ workspaceNamePrompt conf job = do Just i -> i contains completions input = return $ filter (Data.List.isInfixOf input) completions + +-- | Workspace list transformation for +-- 'XMonad.Hooks.EwmhDesktops.ewmhDesktopsLogHookCustom' that exposes +-- workspace names to pagers and other EWMH-aware clients. +-- +-- Usage: +-- > logHook = (workspaceNamesListTransform >>= ewmhDesktopsLogHookCustom) <+> … +workspaceNamesListTransform :: X ([WindowSpace] -> [WindowSpace]) +workspaceNamesListTransform = do + names <- getWorkspaceNames + return $ map $ \ws -> ws{ W.tag = names $ W.tag ws }