Xmonad - liga a chave à cadeia de comandos

3

Estou usando o módulo EZConfig para o Xmonad. Eu gostaria de ligar ModMask s para primeiro mover minha janela atual para a minha outra tela, depois mover meu foco para a minha outra tela.

Usando o módulo CycleWS, isso seria feito executando "shiftNextScreen" seguido de "nextScreen"

Posso ligar dois comandos a uma chave?

Além disso, eu tentei ir

((modMask, xK_s),
     shiftNextScreen nextScreen)

Mas isso não funciona porque o nextScreen se torna um argumento para shiftNextScreen, o que não faz sentido. Eu não conheço haskell em tudo.

    
por Fawkes5 08.03.2013 / 04:55

1 resposta

5

Parece que ninguém poderia responder sua pergunta até agora. Deixe-me fazer uma tentativa:

TL; DR

((modMask, xK_s),
     sequence_ [shiftNextScreen, nextScreen])

deve funcionar.

Por quê?

Se você olhar para o link ,

você vê os seguintes tipos para suas funções:

nextScreen :: X ()
shiftNextScreen :: X ()

junto com o conhecimento de que X é uma Mônada e o tipo de atalho de teclas é (ButtonMask,KeySym), X () o que você quer é:

combine nextScreen e shiftNextScreen para obter o resultado do tipo X ()

se simplesmente fizermos uma lista da seguinte forma:

[nextScreen,shiftNextScreen] temos o tipo [X ()] , feche, mas ainda não o que queremos.

Como sabemos que X é uma mônada, uma pesquisa rápida em hoogle mostra sequence_

que nos dá:

sequence_ [shiftNextScreen, nextScreen]

que produz o tipo X () e é, portanto, uma ação válida para o lado direito do mapeamento de chaves.

    
por 22.03.2013 / 18:48