xmonad-contrib- Community-maintained extensions extensions for xmonad
Copyright(c) Tomas Janousek <tomi@nomi.cz>
LicenseBSD3-style (see LICENSE)
MaintainerTomas Janousek <tomi@nomi.cz>
Safe HaskellNone



Provides bindings to rename workspaces, show these names in a status bar and swap workspaces along with their names. These names survive restart. Together with XMonad.Layout.WorkspaceDir this provides for a fully dynamic topic space workflow.



You can use this module with the following in your ~/.xmonad/xmonad.hs file:

import XMonad.Actions.WorkspaceNames

Then add keybindings like the following:

  , ((modm .|. shiftMask, xK_r      ), renameWorkspace def)

and apply workspaceNamesPP to your pretty-printer:

myPP = workspaceNamesPP xmobarPP

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:

  , ((modMask .|. shiftMask, xK_Left  ), swapTo Prev)
  , ((modMask .|. shiftMask, xK_Right ), swapTo Next)
[((modm .|. controlMask, k), swapWithCurrent i)
    | (i, k) <- zip workspaces [xK_1 ..]]

For detailed instructions on editing your key bindings, see XMonad.Doc.Extending.

Workspace naming

renameWorkspace :: XPConfig -> X () Source #

Prompt for a new name for the current workspace and set it.

getWorkspaceNames' :: X (WorkspaceId -> Maybe String) Source #

Returns a lookup function that maps workspace tags to workspace names.

getWorkspaceNames :: String -> X (String -> WindowSpace -> String) Source #

Returns a function for ppRename that appends sep and the workspace name, if set.

getWorkspaceName :: WorkspaceId -> X (Maybe String) Source #

Gets the name of a workspace, if set, otherwise returns nothing.

getCurrentWorkspaceName :: X (Maybe String) Source #

Gets the name of the current workspace. See getWorkspaceName

setWorkspaceName :: WorkspaceId -> String -> X () Source #

Sets the name of a workspace. Empty string makes the workspace unnamed again.

setCurrentWorkspaceName :: String -> X () Source #

Sets the name of the current workspace. See setWorkspaceName.

Workspace swapping

swapTo :: Direction1D -> X () Source #

See swapTo. This is the same with names.

swapTo' :: Direction1D -> WSType -> X () Source #

Swap with the previous or next workspace of the given type.

swapWithCurrent :: WorkspaceId -> X () Source #

See swapWithCurrent. This is almost the same with names.

Workspace prompt

workspaceNamePrompt :: XPConfig -> (WorkspaceId -> X ()) -> X () Source #

Same behavior than workspacePrompt excepted it acts on the workspace name provided by this module.

StatusBar, EwmhDesktops integration

workspaceNamesPP :: PP -> X PP Source #

Modify PP's pretty-printing format to show workspace names as well.

workspaceNamesEwmh :: XConfig l -> XConfig l Source #

Tell XMonad.Hooks.EwmhDesktops to append workspace names to desktop names.