xmonad-contrib-0.16.999: Third party extensions for xmonad
Copyright(c) Tomas Janousek <tomi@nomi.cz>
LicenseBSD3-style (see LICENSE)
MaintainerTomas Janousek <tomi@nomi.cz>
Stabilityexperimental
Portabilityunportable
Safe HaskellNone
LanguageHaskell98

XMonad.Actions.WorkspaceNames

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

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

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

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

workspaceNamesPP :: PP -> X PP Source #

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

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.

EwmhDesktops integration

workspaceNamesListTransform :: X ([WindowSpace] -> [WindowSpace]) Source #

Workspace list transformation for ewmhDesktopsLogHookCustom that exposes workspace names to pagers and other EWMH-aware clients.

Usage: > logHook = (workspaceNamesListTransform >>= ewmhDesktopsLogHookCustom) +