I prefer to use the keyboard to float or sink windows. Unfortunately, when floated, windows aren't moved or resized, so there is little visual indication that they aren't still tiled. Ideally, upon shifting to the float layer, I'd have them move to the center of the screen and/or resize.
The best solution would work together with the function below (or something similar), which I call with a keybind -- I'd like floating via mouse click to still work normally.
toggleFloat = withFocused (\windowId -> do
{ floats <- gets (W.floating . windowset);
if windowId `M.member` floats
then withFocused $ windows . W.sink
else float windowId })
(Code stolen, I still have no grasp of Haskell :c)
Edit: the keysMoveWindowTo stuff in the modified code below can actually just replace "float windowId", which it makes superfluous.
I suppose you've xmonad-contrib
package installed. Then you should take a look at XMonad.Actions.FloatKeys
I guess modified function will be:
...
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
}
)
where x
,y
,dx
,dy
,gx1
,gy1
,gx2
,gy2
are your settings.
Operator %
mentioned in docs is from Data.Ratio
; a % b
means rational number with numerator a
and denominator b
. You have to import if you want to use it:
import Data.Ratio ((%))