xmonad-contrib-0.10: Third party extensions for xmonad

Portability | unportable
Stability | experimental
Maintainer | Tomas Janousek <tomi@nomi.cz>

XMonad.Actions.WorkspaceNames

Contents

- Usage
- Workspace naming
- Workspace swapping

Description

Provides bindings to rename workspaces, show these names in DynamicLog 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.

Synopsis

- renameWorkspace :: XPConfig -> X ()
- workspaceNamesPP :: PP -> X PP
- getWorkspaceNames :: X (WorkspaceId -> String)
- setWorkspaceName :: WorkspaceId -> String -> X ()
- setCurrentWorkspaceName :: String -> X ()
- swapTo :: Direction1D -> X ()
- swapTo' :: Direction1D -> WSType -> X ()
- swapWithCurrent :: WorkspaceId -> X ()

# Usage

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 defaultXPConfig)

and apply workspaceNamesPP to your DynamicLog pretty-printer:

     myLogHook =
         workspaceNamesPP xmobarPP >>= dynamicLogString >>= xmonadPropLog

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 ()

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

workspaceNamesPP :: PP -> X PP

Modify XMonad.Hooks.DynamicLog's pretty-printing format to show workspace names as well.

getWorkspaceNames :: X (WorkspaceId -> String)

Returns a function that maps workspace tag `"t"` to `"t:name"` for workspaces with a name, and to `"t"` otherwise.

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

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

setCurrentWorkspaceName :: String -> X ()

Sets the name of the current workspace. See `setWorkspaceName`.

# Workspace swapping

swapTo :: Direction1D -> X ()

See `XMonad.Actions.SwapWorkspaces.swapTo`. This is the same with names.

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

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

swapWithCurrent :: WorkspaceId -> X ()

See `XMonad.Actions.SwapWorkspaces.swapWithCurrent`. This is almost the same with names.