Quiero tener 9 espacios de trabajo como una cuadrícula. Y para navegar por ellos usando las teclas de flecha. Hasta ahora puedo navegar con las teclas de flecha, pero quiero deshacerme del "envoltura". Por ejemplo, si el espacio de trabajo 9 es el espacio de trabajo actual y presiono la flecha ARRIBA, termino con el espacio de trabajo 1 (debería permanecer en el espacio de trabajo 9). Esto no debería ser un problema de implementar si hay una manera de obtener el espacio de trabajo actual.
Aquí está parte de mi código hasta ahora:
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
Encontré este código a continuación que podría ser útil pero no sé cómo "extraer" el resultado o si el resultado es útil. ¿Cómo obtengo el espacio de trabajo actual? Gracias.
-- | 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
Respuesta1
Puede obtener el espacio de trabajo actual conlogCurrent
https://hackage.haskell.org/package/xmonad-contrib-0.15/docs/XMonad-Util-Loggers.html#v:logCurrent
Entonces en lugar de nextWS
hacer:
do
x <- logCurrent
if x /= "9" then nextWS else pure ()