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