Como definir um atalho para mostrar o desktop no XMonad?

1

Estou usando o XMonad em um ambiente Gnome. Como defino um atalho para minimizar todas as janelas e mostrar a área de trabalho?

    
por Ton van den Heuvel 04.11.2010 / 15:10

2 respostas

2

Eu não recomendaria, porque não é 'o jeito' que o XMonad deve ser usado, mas eu sei duas soluções possíveis para conseguir o que você quer.

A maneira que eu faria isso não é para esconder tudo em seu espaço de trabalho, mas apenas para trocar para um espaço de trabalho diferente que está vazio e há uma ação realmente útil em xmonad-contrib para fazer exatamente isso chamado FindEmptyWorpace . Essencialmente você apenas usa assim:

((AltMask, xK_space), viewEmptyWorkspace)

Mesmo recomendando a outra maneira, responderei à pergunta que você fez. Existem as funções de ocultar e revelar que foram feitas exatamente para essa finalidade. Eu nunca os usei antes porque eu não quero esconder nada nas minhas telas, mas a definição da função é suficiente para explicar que elas são ações do X Monad que atuam em janelas únicas, então se você quiser minimizá-las, então você terá que pegue a tela atual do StackSet e, em seguida, pegue a área de trabalho na tela e, em seguida, mapM hide em todas as janelas da pilha de janelas dessa área de trabalho. Por exemplo, em ghci:

:m + XMonad.StackSet
$ :t stack . workspace . current
  :: StackSet i l a sid sd -> Maybe (Stack a)

Então, isso poderia ser feito. Eu não ficaria incomodado quando pudesse ir a uma janela livre.

    
por 19.01.2011 / 05:00
1

Eu percebo que este é um post muito antigo, mas eu mesmo recentemente encontrei uma solução elegante e pensei em compartilhá-la.

Esta solução é muito boa, pois elimina todas as janelas, mas também permite que você as retorne ao seu estado anterior depois de ver a área de trabalho.

Funciona definindo um novo layout e alternando para esse layout ao pressionar a tecla. Um segundo pressionamento de tecla retornará você para qualquer layout em que você estivesse.

import XMonad.Layout.MultiToggle
import XMonad.Layout.MultiToggle.Instances

...

data EmptyLayout a = EmptyLayout deriving (Show, Read)

instance LayoutClass EmptyLayout a where
    doLayout a b _ = emptyLayout a b
    description _ = "Empty Layout"

data HIDE = HIDE deriving (Read, Show, Eq, Typeable)
instance Transformer HIDE Window where
    transform _ x k = k (EmptyLayout) (\(EmptyLayout) -> x)

...

myLayoutHook = smartBorders
               . mkToggle (NOBORDERS ?? FULL ?? EOT)
               . gaps [(U,10), (R,10), (D,20), (L,10)]
               . spacingWithEdge default_spacing
               . mkToggle (single HIDE)                -- This line
               $ Grid ||| Full ||| tiled ||| Mirror tiled

... 


keyBindings :: [((KeyMask, KeySym), X ())]
keyBindings = [ ... ((mMask, xK_z), sendMessage $ Toggle HIDE) ... ]
    
por 30.05.2016 / 02:06

Tags