X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/7a4d6f5ffa594603ef83bc8b0e9945d12e082490..ed43386dda399b78bab53a45f1857e54c15bed2e:/util/init.lua?ds=sidebyside diff --git a/util/init.lua b/util/init.lua index a44d52c..06db0d4 100644 --- a/util/init.lua +++ b/util/init.lua @@ -1,15 +1,15 @@ --[[ - - Lain - Layouts, widgets and utilities for Awesome WM - - Utilities section - - Licensed under GNU General Public License v2 - * (c) 2013, Luke Bonham - * (c) 2010-2012, Peter Hofmann - + + Lain + Layouts, widgets and utilities for Awesome WM + + Utilities section + + Licensed under GNU General Public License v2 + * (c) 2013, Luke Bonham + * (c) 2010-2012, Peter Hofmann + --]] local awful = require("awful") @@ -17,7 +17,7 @@ local beautiful = require("beautiful") local math = { sqrt = math.sqrt } local mouse = mouse local pairs = pairs -local string = string +local string = { gsub = string.gsub } local client = client local screen = screen local tonumber = tonumber @@ -84,17 +84,21 @@ end -- Magnify a client: Set it to "float" and resize it. function util.magnify_client(c) - awful.client.floating.set(c, true) - - local mg = screen[mouse.screen].geometry - local tag = awful.tag.selected(mouse.screen) - local mwfact = awful.tag.getmwfact(tag) - local g = {} - g.width = math.sqrt(mwfact) * mg.width - g.height = math.sqrt(mwfact) * mg.height - g.x = mg.x + (mg.width - g.width) / 2 - g.y = mg.y + (mg.height - g.height) / 2 - c:geometry(g) + if not awful.client.floating.get(c) then + awful.client.floating.set(c, true) + + local mg = screen[mouse.screen].geometry + local tag = awful.tag.selected(mouse.screen) + local mwfact = awful.tag.getmwfact(tag) + local g = {} + g.width = math.sqrt(mwfact) * mg.width + g.height = math.sqrt(mwfact) * mg.height + g.x = mg.x + (mg.width - g.width) / 2 + g.y = mg.y + (mg.height - g.height) / 2 + c:geometry(g) + else + awful.client.floating.set(c, false) + end end -- Read the nice value of pid from /proc. @@ -159,8 +163,24 @@ function util.tag_view_nonempty(direction, sc) end end --- Dynamically rename the current tag you have focused. -function util.prompt_rename_tag(mypromptbox) +-- {{{ Dynamic tagging +-- +-- Add a new tag +function util.add_tag(mypromptbox) + awful.prompt.run({prompt="New tag name: "}, mypromptbox[mouse.screen].widget, + function(text) + if text:len() > 0 then + props = { selected = true } + tag = awful.tag.add(new_name, props) + tag.name = text + tag:emit_signal("property::name") + end + end) +end + +-- Rename current tag +-- @author: minism +function util.rename_tag(mypromptbox) local tag = awful.tag.selected(mouse.screen) awful.prompt.run({prompt="Rename tag: "}, mypromptbox[mouse.screen].widget, function(text) @@ -171,4 +191,20 @@ function util.prompt_rename_tag(mypromptbox) end) end +-- Delete current tag (if empty) +-- Any rule set on the tag shall be broken +function util.remove_tag() + local tag = awful.tag.selected(mouse.screen) + local prevtag = awful.tag.gettags(mouse.screen)[awful.tag.getidx(tag) - 1] + awful.tag.delete(tag, prevtag) +end +-- +-- }}} + +-- On the fly useless gaps change +function util.useless_gaps_resize(thatmuch) + beautiful.useless_gap_width = tonumber(beautiful.useless_gap_width) + thatmuch + awful.layout.arrange(mouse.screen) +end + return setmetatable(util, { __index = wrequire })