X.A.WorkspaceNames: Adapt EwmhDesktops integration to the new interface

Related: https://github.com/xmonad/xmonad-contrib/pull/105
Related: https://github.com/xmonad/xmonad-contrib/pull/122
Related: f271d59c34 ("X.A.WorkspaceNames: Provide workspaceListTransform for EwmhDesktops")
This commit is contained in:
Tomas Janousek
2021-10-18 16:39:22 +01:00
parent fe933c3707
commit 3175f276be
2 changed files with 20 additions and 19 deletions

View File

@@ -545,8 +545,8 @@
* `XMonad.Actions.WorkspaceNames` * `XMonad.Actions.WorkspaceNames`
- Added `workspaceNamesListTransform` which makes workspace names visible - Added `workspaceNamesEwmh` which makes workspace names visible to
to external pagers. external pagers.
* `XMonad.Util.PureX` * `XMonad.Util.PureX`

View File

@@ -22,7 +22,6 @@ module XMonad.Actions.WorkspaceNames (
-- * Workspace naming -- * Workspace naming
renameWorkspace, renameWorkspace,
workspaceNamesPP,
getWorkspaceNames', getWorkspaceNames',
getWorkspaceNames, getWorkspaceNames,
getWorkspaceName, getWorkspaceName,
@@ -38,8 +37,9 @@ module XMonad.Actions.WorkspaceNames (
-- * Workspace prompt -- * Workspace prompt
workspaceNamePrompt, workspaceNamePrompt,
-- * EwmhDesktops integration -- * StatusBar, EwmhDesktops integration
workspaceNamesListTransform workspaceNamesPP,
workspaceNamesEwmh,
) where ) where
import XMonad import XMonad
@@ -50,6 +50,7 @@ import qualified XMonad.Util.ExtensibleState as XS
import XMonad.Actions.CycleWS (findWorkspace, WSType(..), Direction1D(..), anyWS) import XMonad.Actions.CycleWS (findWorkspace, WSType(..), Direction1D(..), anyWS)
import qualified XMonad.Actions.SwapWorkspaces as Swap import qualified XMonad.Actions.SwapWorkspaces as Swap
import XMonad.Hooks.StatusBar.PP (PP(..)) import XMonad.Hooks.StatusBar.PP (PP(..))
import XMonad.Hooks.EwmhDesktops (addEwmhWorkspaceRename)
import XMonad.Prompt (mkXPrompt, XPConfig) import XMonad.Prompt (mkXPrompt, XPConfig)
import XMonad.Prompt.Workspace (Wor(Wor)) import XMonad.Prompt.Workspace (Wor(Wor))
import XMonad.Util.WorkspaceCompare (getSortByIndex) import XMonad.Util.WorkspaceCompare (getSortByIndex)
@@ -72,6 +73,11 @@ import qualified Data.Map as M
-- Check "XMonad.Hooks.StatusBar" for more information on how to incorprate -- Check "XMonad.Hooks.StatusBar" for more information on how to incorprate
-- this into your status bar. -- this into your status bar.
-- --
-- To expose workspace names to pagers and other EWMH clients, integrate this
-- with "XMonad.Hooks.EwmhDesktops":
--
-- > main = xmonad $ … . workspaceNamesEwmh . ewmh . … $ def{…}
--
-- We also provide a modification of "XMonad.Actions.SwapWorkspaces"\'s -- We also provide a modification of "XMonad.Actions.SwapWorkspaces"\'s
-- functionality, which may be used this way: -- functionality, which may be used this way:
-- --
@@ -135,11 +141,6 @@ renameWorkspace conf =
mkXPrompt pr conf (const (return [])) setCurrentWorkspaceName mkXPrompt pr conf (const (return [])) setCurrentWorkspaceName
where pr = Wor "Workspace name: " where pr = Wor "Workspace name: "
-- | Modify 'XMonad.Hooks.StatusBar.PP.PP'\'s pretty-printing format to show
-- workspace names as well.
workspaceNamesPP :: PP -> X PP
workspaceNamesPP pp = getWorkspaceNames ":" <&> \ren -> pp{ ppRename = ppRename pp >=> ren }
-- | See 'XMonad.Actions.SwapWorkspaces.swapTo'. This is the same with names. -- | See 'XMonad.Actions.SwapWorkspaces.swapTo'. This is the same with names.
swapTo :: Direction1D -> X () swapTo :: Direction1D -> X ()
swapTo dir = swapTo' dir anyWS swapTo dir = swapTo' dir anyWS
@@ -177,12 +178,12 @@ workspaceNamePrompt conf job = do
contains completions input = contains completions input =
return $ filter (isInfixOf input) completions return $ filter (isInfixOf input) completions
-- | Workspace list transformation for -- | Modify 'XMonad.Hooks.StatusBar.PP.PP'\'s pretty-printing format to show
-- 'XMonad.Hooks.EwmhDesktops.ewmhDesktopsLogHookCustom' that exposes -- workspace names as well.
-- workspace names to pagers and other EWMH-aware clients. workspaceNamesPP :: PP -> X PP
-- workspaceNamesPP pp = getWorkspaceNames ":" <&> \ren -> pp{ ppRename = ppRename pp >=> ren }
-- Usage:
-- > logHook = (workspaceNamesListTransform >>= ewmhDesktopsLogHookCustom) <+> … -- | Tell "XMonad.Hooks.EwmhDesktops" to append workspace names to desktop
workspaceNamesListTransform :: X ([WindowSpace] -> [WindowSpace]) -- names.
workspaceNamesListTransform = workspaceNamesEwmh :: XConfig l -> XConfig l
getWorkspaceNames ":" <&> \names -> map $ \ws -> ws{ W.tag = names (W.tag ws) ws } workspaceNamesEwmh = addEwmhWorkspaceRename $ getWorkspaceNames ":"