This fixes a deadlock when some arrange signal handler itself changes
a property like `border_width`:
function border1(c)
c.border_width = 50
end
client.connect_signal("property::border_width", border1)
awful.screen.connect_for_each_screen(function(s)
local border_for_s = function(s_)
local clients = awful.client.visible(s_)
for _, c in pairs(clients) do
c.border_width = 2
end
end
screen[s]:connect_signal("arrange", border_for_s)
end)
It might be better to have some counter there instead and emit a warning
if this happens (while allowing for e.g. 3 recursions).
This would allow handlers to break out of this themselves (by not insisting to
change the property).