awesome

Welcome to awesome bug tracking system.
Tasklist

FS#644 - Floating layout does not handle any geometry

Attached to Project: awesome
Opened by Julien Danjou (jd) - Monday, 28 September 2009, 09:26 GMT
Task Type Bug Report
Category Lua libraries → awful
Status Assigned
Assigned To Robert Marsh (rdmarsh)
Operating System All
Severity Medium
Priority Normal
Reported Version git/master
Due in Version Undecided
Due Date Undecided
Percent Complete 0%
Votes 6
Private No

Details

The floating layout does nothing at all.

This is a problem if:
- You have tag 1 with tile layout
- You have tag 2 with floating layout
- You select both tag 1 and tag 2
- You select only tag 2 then

Tag 2 windows will stay with the tiled geometry they have been resized to while tag 1 and tag 2 were both selected at the same time.
This task depends upon

Comment by Robert Marsh (rdmarsh) - Monday, 22 August 2011, 05:27 GMT
I've been looking at what it would take to fix this, and it doesn't seem too bad - the client module in awful.lua already has a floating_geometry property to do this for floating clients, and having client_resize_floating in the mouse module hook into that is trivial. I would actually like the floating layout to always restore to the previous floating geometries if possible (so going floating -> tiled -> floating with a single tag displayed would end up with the original geometry)
Comment by Bearcat M. Sandor (bearcatsandor) - Tuesday, 22 November 2011, 21:39 GMT
I second this, strongly. A number of times i've had the floating window laid out the way i wanted it and then accidentally moved to another layout. When i come back to the floating layout i have to re-size and rearrange the whole desktop to the way it was manually. It's a work-stopper.
Comment by Quinn Strahl (InnominateHarlequin) - Sunday, 02 December 2012, 20:31 GMT
The functionality you descirbe can be achieved by adding the following to your rc.lua:


client.connect_signal("property::geometry", function(c)
if awful.client.floating.get(c) or awful.layout.get(c.screen).name == "floating" then
awful.client.property.set(c, "floating_geometry", c:geometry())
end
end)
awful.tag.attached_connect_signal(nil, "property::layout", function(t)
local s = awful.tag.getscreen(t)
if awful.layout.get(screen[s]).name == "floating" then
for i, c in pairs(client.get(s)) do
c:geometry(awful.client.property.get(c, "floating_geometry"))
end
end
end)
awful.tag.attached_connect_signal(nil, "property::selected", function(t)
local s = awful.tag.getscreen(t)
if awful.layout.get(screen[s]).name == "floating" then
for i, c in pairs(client.get(s)) do
c:geometry(awful.client.property.get(c, "floating_geometry"))
end
end
end)

Loading...