Hi, all!
I come from the world of XMonad and I really enjoy its "IM" layout when the
buddy list is put at an arbitrary edge of the screen with a corresponding strut and the
conversation windows are arranged fairly in the rest of the workspace.
I'm currently doing this with the following awful.rule:
{ rule = { class = "Pidgin", role = "buddy_list" },
properties = { tag = tags[1][3] },
callback = function(c)
awful.client.floating.set(c, true)
c:geometry(awful.util.table.join(capi.screen[1].workarea,
{width=200}))
c:struts({left=200})
end},
The problem is that from time to time I use skype and I'd like it to reside in
the same screen area effectively taking a half of what pidgin owns. Given that
pidgin's buddy list is already there, the task is pretty straightforward:
iterate through windows on the tag, find the one with struts, reduce its height
by 50% and use the acquired space. Obviously, these two windows should resize
cooperatively from now on, i.e one of them gets destroyed and the other should
regain the rest of the reserved space. The first question is which signal
should I handle for that purpose?
And there's another question. Suppose, there's a third window that comes to
existance and needs to be put into these exact 200 pixel area to the left once
again dividing it fairly (regarding size hints or not). I seriously doubt that
having all of them mutually connected is the properâ„¢ way (for 2 windows it's 2
handlers, for 3 - it's 6, for 4 it's 12 already). What's the best solution
here? To have a special table to process such windows? Or to create a special
module to have such issues handled gracefully?
--- immerrr
--
To unsubscribe, send mail to [email protected].