local beautiful = require("beautiful") -- TODO this function will call arrange multiple times. once per each change of c.border_width local function update_borders(s) local max = s.selected_tag.layout.name == "max" local only_one = #s.tiled_clients == 1 -- use tiled_clients so that other floating windows don't affect the count -- but iterate over clients instead of tiled_clients as tiled_clients doesn't include maximized windows for _, c in pairs(s.clients) do if c.prevent_kill then c.border_width = beautiful.border_width * 3 elseif (max or only_one or c.maximized) and not c.floating then c.border_width = 0 else c.border_width = beautiful.border_width end end end screen.connect_signal("arrange", update_borders) -- NOTE this signal may eventually be deprecated. see issue #2581 and the v5 milestone on github