Ich möchte 9 Arbeitsbereiche als Raster haben. Und darin mit den Pfeiltasten navigieren. Bisher kann ich mit den Pfeiltasten navigieren, aber ich möchte das „Umbrechen“ loswerden. Wenn beispielsweise Arbeitsbereich 9 der aktuelle Arbeitsbereich ist und ich die Pfeiltaste NACH OBEN drücke, lande ich bei Arbeitsbereich 1 (sollte bei Arbeitsbereich 9 bleiben). Dies sollte kein Problem bei der Implementierung sein, wenn es eine Möglichkeit gibt, den aktuellen Arbeitsbereich abzurufen.
Hier ist ein Teil meines bisherigen Codes:
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
Ich habe den folgenden Code gefunden, der nützlich sein könnte, weiß aber nicht, wie ich das Ergebnis „extrahieren“ kann oder ob das Ergebnis nützlich ist. Wie erhalte ich den aktuellen Arbeitsbereich? Danke.
-- | 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
Antwort1
Den aktuellen Arbeitsbereich erhalten Sie mitlogCurrent
https://hackage.haskell.org/package/xmonad-contrib-0.15/docs/XMonad-Util-Loggers.html#v:logCurrent
Anstatt also Folgendes zu nextWS
tun:
do
x <- logCurrent
if x /= "9" then nextWS else pure ()