我想要 9 個工作區作為網格。並使用箭頭鍵導航它們。到目前為止,我可以使用箭頭鍵進行導航,但我想擺脫“環繞”。例如,如果工作區 9 是目前工作區,並且我按下向上箭頭,則最終會得到工作區 1(應保留在工作區 9 上)。如果有辦法取得目前工作空間,那麼實作起來應該沒有問題。
這是到目前為止我的一些程式碼:
myKeys = [
, ((myModMask , xK_Down), (switchWorkspace (-3))) -- prevWS
, ((myModMask , xK_Up), (switchWorkspace 3)) -- nextWS
, ((myModMask , xK_Left), prevWS)
, ((myModMask , xK_Right), nextWS)
]
switchWorkspace :: Int -> X ()
switchWorkspace d = wsBy d >>= windows . W.greedyView
wsBy :: Int -> X (WorkspaceId)
wsBy = findWorkspace C.getSortByIndex Next AnyWS
我發現下面的程式碼可能有用,但不知道如何「提取」結果或結果是否有用?如何取得目前工作空間?謝謝。
-- | Lookup the index of a workspace id in the user's config, return Nothing
-- if that workspace does not exist in the config.
getWsIndex :: X (WorkspaceId -> Maybe Int)
getWsIndex = do
spaces <- asks (workspaces . config)
return $ flip elemIndex spaces
答案1
您可以使用以下命令取得目前工作區logCurrent
https://hackage.haskell.org/package/xmonad-contrib-0.15/docs/XMonad-Util-Loggers.html#v:logCurrent
所以不要這樣做nextWS
:
do
x <- logCurrent
if x /= "9" then nextWS else pure ()