mirror of
https://github.com/xmonad/xmonad-contrib.git
synced 2025-07-26 09:41:52 -07:00
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:
@@ -545,8 +545,8 @@
|
||||
|
||||
* `XMonad.Actions.WorkspaceNames`
|
||||
|
||||
- Added `workspaceNamesListTransform` which makes workspace names visible
|
||||
to external pagers.
|
||||
- Added `workspaceNamesEwmh` which makes workspace names visible to
|
||||
external pagers.
|
||||
|
||||
* `XMonad.Util.PureX`
|
||||
|
||||
|
@@ -22,7 +22,6 @@ module XMonad.Actions.WorkspaceNames (
|
||||
|
||||
-- * Workspace naming
|
||||
renameWorkspace,
|
||||
workspaceNamesPP,
|
||||
getWorkspaceNames',
|
||||
getWorkspaceNames,
|
||||
getWorkspaceName,
|
||||
@@ -38,8 +37,9 @@ module XMonad.Actions.WorkspaceNames (
|
||||
-- * Workspace prompt
|
||||
workspaceNamePrompt,
|
||||
|
||||
-- * EwmhDesktops integration
|
||||
workspaceNamesListTransform
|
||||
-- * StatusBar, EwmhDesktops integration
|
||||
workspaceNamesPP,
|
||||
workspaceNamesEwmh,
|
||||
) where
|
||||
|
||||
import XMonad
|
||||
@@ -50,6 +50,7 @@ import qualified XMonad.Util.ExtensibleState as XS
|
||||
import XMonad.Actions.CycleWS (findWorkspace, WSType(..), Direction1D(..), anyWS)
|
||||
import qualified XMonad.Actions.SwapWorkspaces as Swap
|
||||
import XMonad.Hooks.StatusBar.PP (PP(..))
|
||||
import XMonad.Hooks.EwmhDesktops (addEwmhWorkspaceRename)
|
||||
import XMonad.Prompt (mkXPrompt, XPConfig)
|
||||
import XMonad.Prompt.Workspace (Wor(Wor))
|
||||
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
|
||||
-- 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
|
||||
-- functionality, which may be used this way:
|
||||
--
|
||||
@@ -135,11 +141,6 @@ renameWorkspace conf =
|
||||
mkXPrompt pr conf (const (return [])) setCurrentWorkspaceName
|
||||
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.
|
||||
swapTo :: Direction1D -> X ()
|
||||
swapTo dir = swapTo' dir anyWS
|
||||
@@ -177,12 +178,12 @@ workspaceNamePrompt conf job = do
|
||||
contains completions input =
|
||||
return $ filter (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 =
|
||||
getWorkspaceNames ":" <&> \names -> map $ \ws -> ws{ W.tag = names (W.tag ws) ws }
|
||||
-- | 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 }
|
||||
|
||||
-- | Tell "XMonad.Hooks.EwmhDesktops" to append workspace names to desktop
|
||||
-- names.
|
||||
workspaceNamesEwmh :: XConfig l -> XConfig l
|
||||
workspaceNamesEwmh = addEwmhWorkspaceRename $ getWorkspaceNames ":"
|
||||
|
Reference in New Issue
Block a user