diff options
author | Adrian C. (anrxc) <anrxc@sysphere.org> | 2009-11-09 00:28:14 +0100 |
---|---|---|
committer | Adrian C. (anrxc) <anrxc@sysphere.org> | 2009-11-09 00:28:14 +0100 |
commit | f4e09a066c869aa2c69a71de23a2f5ec80fbfdb0 (patch) | |
tree | 9b820bcb9eb5965bfaabde02974f1e4d6871ffd7 | |
parent | df10685e7194cd6061f5701348d6537c36abcca0 (diff) | |
download | awesome-configs-f4e09a066c869aa2c69a71de23a2f5ec80fbfdb0.tar.xz |
rc.lua: make use of the arrange signal
Added fine grained border and floater controls. Code adds a titlebar
and border to each floating client (also covers floating layout), and
makes it ontop. In case there is only one tiled client visible or we
are in max layout the border is removed to save space. Next commit
will revert the change, because I don't intend to use it at this
moment but I'm placing it here for archival and reference.
-rw-r--r-- | rc.lua | 49 |
1 files changed, 32 insertions, 17 deletions
@@ -443,17 +443,13 @@ clientkeys = awful.util.table.join( awful.key({ modkey }, "Up", function () awful.client.moveresize(0, -20, 0, 0) end), awful.key({ modkey }, "Left", function () awful.client.moveresize(-20, 0, 0, 0) end), awful.key({ modkey }, "Right", function () awful.client.moveresize(20, 0, 0, 0) end), + awful.key({ modkey, "Shift" }, "f", function (c) awful.client.floating.toggle(c) end), awful.key({ modkey, "Shift" }, "m", function (c) c:swap(awful.client.getmaster()) end), awful.key({ modkey, "Shift" }, "c", function (c) exec("kill -CONT " .. c.pid) end), awful.key({ modkey, "Shift" }, "s", function (c) exec("kill -STOP " .. c.pid) end), awful.key({ modkey, "Shift" }, "t", function (c) if c.titlebar then awful.titlebar.remove(c) else awful.titlebar.add(c, { modkey = modkey }) end - end), - awful.key({ modkey, "Shift" }, "f", function (c) awful.client.floating.toggle(c) - if awful.client.floating.get(c) - then c.above = true; awful.titlebar.add(c); awful.placement.no_offscreen(c) - else c.above = false; awful.titlebar.remove(c) end end) ) -- }}} @@ -538,18 +534,8 @@ awful.rules.rules = { -- {{{ Signals -- --- {{{ Signal function to execute when a new client appears +-- {{{ Manage signal handler client.add_signal("manage", function (c, startup) - -- Add a titlebar to each floating client - if awful.client.floating.get(c) - or awful.layout.get(c.screen) == awful.layout.suit.floating then - if not c.titlebar and c.class ~= "Xmessage" then - awful.titlebar.add(c, { modkey = modkey }) - end - -- Floating clients are always on top - c.above = true - end - -- Enable sloppy focus c:add_signal("mouse::enter", function (c) if awful.layout.get(c.screen) ~= awful.layout.suit.magnifier @@ -577,8 +563,37 @@ client.add_signal("manage", function (c, startup) end) -- }}} --- {{{ Focus signal functions +-- {{{ Focus signal handlers client.add_signal("focus", function (c) c.border_color = beautiful.border_focus end) client.add_signal("unfocus", function (c) c.border_color = beautiful.border_normal end) -- }}} + +-- {{{ Arrange signal handler +for s = 1, screen.count() do screen[s]:add_signal("arrange", function () + local clients = awful.client.visible(s) + local layout = awful.layout.getname(awful.layout.get(s)) + + if #clients > 0 then -- Fine grained borders and floaters control + for _, c in pairs(clients) do -- Floaters always have borders + if awful.client.floating.get(c) or layout == "floating" then + c.border_width = beautiful.border_width + + if not c.fullscreen then -- Floaters have titlebars + if not c.titlebar and c.class ~= "Xmessage" then + awful.titlebar.add(c, { modkey = modkey }) + end -- Floaters are always on top + c.above = true + end + + -- No borders with only one visible client + elseif #clients == 1 or layout == "max" then + clients[1].border_width = 0 + else + c.border_width = beautiful.border_width + end + end + end + end) +end +-- }}} -- }}} |