Hi guys,

I wrote some simple routines to enable tiling in a floating environment. It
works fine with, for example, an iceweasel window but I get really weird
behavior with my terminal emulator: Terminator.

When I open a fresh window and try to tile it e.g. to the left, the window
starts resizing automagically. However, when I have dragged/resized it
prior to tiling, everything works as expected.

To illustrate this, I've uploaded a demo to youtube:
https://www.youtube.com/watch?v=a5wgCw01kkE
Does anyone have any idea what's going on? Here's the most important piece
of the lua code:

function tile(c, dir)

   if c == nil then return end

   if not floatTile[c] then
      resetFloatTile(c)
   end

   c.maximized = false
   c.minimized = false

   local s = mouse.screen
   local cg = c:geometry()
   local sg = screen[s].workarea

   local x, y, width, height

   if dir == "left" then
      x,y,width,height = tileLeft(c, cg, sg)
   elseif dir == "right" then
      x,y,width,height = tileRight(c, cg, sg)
   elseif dir == "up" then
      x,y,width,height = tileUp(c, cg, sg)
   elseif dir == "down" then
      x,y,width,height = tileDown(c, cg, sg)
   elseif dir == "full" then
      x,y,width,height = tileFull(c, sg)
   end

   c:geometry({x = x, y = y, width = width, height = height})
end

I think the only relevant piece of the code above is the change in geometry.
By the way, other windows sometimes don't get drawn properly after tiling.
I remember in 3.4 that we could force a redraw of a client, but I couldn't
find anything anymore in the docs.

Thanks,
Joren

Reply via email to