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].

Reply via email to