2012-02-06 18 views
6

Prefiero usar el teclado para flotar o hundir ventanas. Lamentablemente, cuando flota, las ventanas no se mueven ni cambian de tamaño, por lo que hay poca indicación visual de que todavía no estén en mosaico. Idealmente, al cambiar a la capa flotante, los moveré al centro de la pantalla y/o cambiaré el tamaño.Xmonad: al flotar una ventana, moverla o cambiar su tamaño

La mejor solución funcionaría junto con la siguiente función (o algo similar), que llamo con una combinación de teclas: me gustaría flotar con el clic del mouse para seguir trabajando normalmente.

toggleFloat = withFocused (\windowId -> do 
           { floats <- gets (W.floating . windowset); 
           if windowId `M.member` floats 
           then withFocused $ windows . W.sink 
           else float windowId }) 

(Código robado, todavía tengo ninguna comprensión de Haskell: c)

Editar: las cosas keysMoveWindowTo en el código modificado a continuación puede simplemente reemplazar "flotar WindowID", que se convierte en superfluo.

Respuesta

6

Supongo que tiene el paquete xmonad-contrib instalado. Entonces usted debe echar un vistazo a XMonad.Actions.FloatKeys

supongo que será función modificada:

... 
import XMonad.Actions.FloatKeys 
... 

toggleFloat = withFocused (\windowId -> do 
           { floats <- gets (W.floating . windowset); 
           if windowId `M.member` floats 
           then withFocused $ windows . W.sink 
           else do 
            keysMoveWindowTo (x, y) (gx1, gy1) windowId 
            keysResizeWindow (dx, dy) (gx2, gy2) windowId 
           } 
         ) 

donde x, y, dx, dy, gx1, gy1, gx2, gy2 son los ajustes.
Operador % mencionado en el documento es de Data.Ratio; a % b significa número racional con el numerador a y el denominador b. Usted tiene que importar si usted quiere usarlo:

import Data.Ratio ((%)) 
+1

Jaja hace 30 minutos superado mi inexplicable, la negativa masoquista incluso a considerar la adición de todavía más cosas contrib en mis xmonad.hs, encontré FloatKeys inmediato, jugueteaba alrededor de un minuto y se apresuró a volver aquí para decir N/MN/M GUYS. Pero no habrá dignidad rescatada ... en StackOverflow.com – user1191815

+0

¡¡¡También gracias !! – user1191815

+1

Estaba tratando de hacer esto y descubrí que las ventanas flotan automáticamente cuando se hace la ventana keysMoveWindow o keysResize. Así que solo tengo combinaciones de teclas para esos, más 'sinkFocused = withFocused $ windows. W.sink' por hundirlos de nuevo. – Jeff

Cuestiones relacionadas