es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo cambio el espacio de trabajo en todos los monitores con el diseño IndependantScreens?

Estoy intentando replicar la forma en que PopOs maneja los espacios de trabajo en una configuración de múltiples monitores.

Hasta cierto punto, logré esto siguiendo la forma predeterminada en que XMonad maneja los sistemas de múltiples monitores utilizando XMonad.Layout.IndependentScreens y asignando 10 espacios de trabajo a cada pantalla.

Esto funciona hasta cierto punto, pero ahora cada monitor tiene espacios de trabajo que son independientes entre sí. Quiero cambiar eso para que cuando vaya al espacio de trabajo 1 en el monitor A o B, los otros monitores también vayan al espacio de trabajo con ese número.

¿Cómo lo hago?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para replicar la forma en que PopOS maneja los espacios de trabajo en una configuración de múltiples monitores en XMonad, debes modificar tu archivo de configuración de XMonad agregando el módulo XMonad.Actions.PhysicalScreens y una combinación personalizada de teclas para cambiar al mismo espacio de trabajo en todas las pantallas.

    Primero, importa el módulo requerido agregando la siguiente línea a tu archivo de configuración:

    import XMonad.Actions.PhysicalScreens
    

    Luego, define una combinación personalizada de teclas para cambiar al mismo espacio de trabajo en todas las pantallas:

      , ((modMask, xK_p), viewShiftAll)
    

    Esto vinculará la combinación de teclas mod+p a la función viewShiftAll, que cambiará todas las pantallas al espacio de trabajo en la pantalla actual.

    Finalmente, define la función viewShiftAll de la siguiente manera:

    viewShiftAll = do
      currentScreen <- gets (screen . current . windowset)
      windows $ \ws ->
        let screenId = unmarshallS (W.screen ws)
        in if currentScreen == screenId
             then view (W.tag ws) (W.shift (W.tag ws) ws)
             else viewOnScreen (W.screen ws) (W.tag ws) (W.shift (W.tag ws) ws)
    

    Esta función utiliza la función gets para obtener el ID de la pantalla actual, y luego itera sobre todas las ventanas, moviéndolas al espacio de trabajo correspondiente en la pantalla actual.

    Con estos cambios implementados, deberías poder cambiar al mismo espacio de trabajo en todas las pantallas presionando mod+p.

Comments are closed.