2017-11-01 4 views
1

X()のコンテキスト内で、ワークスペース内の現在のウィンドウの数を取得するにはどうすればよいですか?現在のワークスペースのウィンドウ数を取得するにはどうすればよいですか?

私はWindowSetからカウントを取得する方法を知っており、windows :: (WindowSet -> WindowSet) -> X()の機能があります。しかし、私は実際に値を返すようにしたいので、(WindowSet -> WindowSet) -> X Intのようなものでなければなりません。

答えて

1

私はwindowsの実装を見てこれを理解することができました。

import XMonad (windows, X, WindowSet, XState(XState, windowset)) 
import qualified XMonad.StackSet as W 
import Control.Monad.State 


getWindowState :: X (WindowSet) 
getWindowState = do 
    XState { windowset = old } <- get 
    return $ old 

そしてX()のコンテキスト内

:追加機能のないクリスの答えの

ws <- getWindowState >>= (return . W.stack . W.workspace . W.current) 
let ws' = maybe 0 (length . W.integrate) ws 
2

短いバージョン。 ws'が答えのようにウィンドウリストの長さを表す場合、
ws' <- length . W.integrate' . W.stack . W.workspace . W.current . windowset <$> get

関連する問題