21 lines
576 B
Haskell
21 lines
576 B
Haskell
module TreeSelectUtils where
|
|
|
|
import XMonad.Actions.TreeSelect
|
|
import Data.Tree
|
|
import Data.List (sort, groupBy)
|
|
import Data.Function (on)
|
|
import qualified XMonad.StackSet as W
|
|
import XMonad.Core
|
|
import Control.Monad.State
|
|
|
|
-- fromWorkspace :: [String] -> Forest String
|
|
fromWorkspace = map go . group . sort
|
|
where
|
|
group = groupBy ((==) `on` (takeWhile (/= '.')))
|
|
go (root:xs) = Node root [Node x [] | x <- xs]
|
|
|
|
treeselectWorkspaces' conf f = withWindowSet $ \w -> do
|
|
let ws = map W.tag . W.hidden $ w
|
|
treeselectWorkspace conf (fromWorkspace ws) f
|
|
|