X()
컨텍스트 내에서 작업 영역의 현재 창의 수는 어떻게 계산합니까?현재 작업 공간에서 창 수를 얻으려면 어떻게해야합니까?
나는 카운트를 WindowSet
에서 얻는 방법을 알고 있고 windows :: (WindowSet -> WindowSet) -> X()
의 기능이 있습니다. 그러나 실제로는 값을 반환하고 싶습니다. (WindowSet -> WindowSet) -> X Int
과 같아야합니다.
X()
컨텍스트 내에서 작업 영역의 현재 창의 수는 어떻게 계산합니까?현재 작업 공간에서 창 수를 얻으려면 어떻게해야합니까?
나는 카운트를 WindowSet
에서 얻는 방법을 알고 있고 windows :: (WindowSet -> WindowSet) -> X()
의 기능이 있습니다. 그러나 실제로는 값을 반환하고 싶습니다. (WindowSet -> WindowSet) -> X Int
과 같아야합니다.
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
짧은 버전. ws'
이 답변에서와 같이 창 목록의 길이를 나타내는 경우 다음과 같습니다.
ws' <- length . W.integrate' . W.stack . W.workspace . W.current . windowset <$> get