X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/23318f8eeafaedcb77d2ee1850dc4606dea7dcaf..1342ae481bc727c45a7e773ec8f815177a9299f5:/util/init.lua diff --git a/util/init.lua b/util/init.lua index c62f0da..55bfa26 100644 --- a/util/init.lua +++ b/util/init.lua @@ -1,26 +1,21 @@ - --[[ - - 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, Luca CPZ + * (c) 2010-2012, Peter Hofmann + --]] local awful = require("awful") -local beautiful = require("beautiful") -local math = { sqrt = math.sqrt } +local sqrt = math.sqrt local pairs = pairs -local string = { gsub = string.gsub } local client = client -local screen = screen local tonumber = tonumber - local wrequire = require("lain.helpers").wrequire local setmetatable = setmetatable @@ -71,28 +66,28 @@ function util.menu_clients_current_tags(menu, args) end -- Magnify a client: set it to "float" and resize it. -function util.magnify_client(c) +function util.magnify_client(c, width_f, height_f) if c and not c.floating then - util.mc(c) util.magnified_client = c + util.mc(c, width_f, height_f) else - c.floating = false util.magnified_client = nil + c.floating = false end end --- https://github.com/copycat-killer/lain/issues/195 -function util.mc(c) +-- https://github.com/lcpz/lain/issues/195 +function util.mc(c, width_f, height_f) c = c or util.magnified_client if not c then return end c.floating = true local s = awful.screen.focused() - local mg = s.geometry - local mwfact = beautiful.master_width_factor or 0.5 + local mg = s.workarea local g = {} - g.width = math.sqrt(mwfact) * mg.width - g.height = math.sqrt(mwfact) * mg.height + local mwfact = width_f or s.selected_tag.master_width_factor or 0.5 + g.width = sqrt(mwfact) * mg.width + g.height = sqrt(height_f or mwfact) * mg.height g.x = mg.x + (mg.width - g.width) / 2 g.y = mg.y + (mg.height - g.height) / 2 @@ -115,13 +110,13 @@ end -- {{{ Dynamic tagging -- Add a new tag -function util.add_tag() +function util.add_tag(layout) awful.prompt.run { prompt = "New tag name: ", textbox = awful.screen.focused().mypromptbox.widget, exe_callback = function(name) if not name or #name == 0 then return end - awful.tag.add(name, { screen = awful.screen.focused() }):view_only() + awful.tag.add(name, { screen = awful.screen.focused(), layout = layout or awful.layout.suit.tile }):view_only() end } end @@ -145,11 +140,10 @@ end -- pos in {-1, 1} <-> {previous, next} tag position function util.move_tag(pos) local tag = awful.screen.focused().selected_tag - local idx = awful.tag.getidx(tag) if tonumber(pos) <= -1 then - awful.tag.move(idx - 1, tag) + awful.tag.move(tag.index - 1, tag) else - awful.tag.move(idx + 1, tag) + awful.tag.move(tag.index + 1, tag) end end @@ -164,10 +158,11 @@ end -- }}} -- On the fly useless gaps change -function util.useless_gaps_resize(thatmuch) - beautiful.useless_gap = beautiful.useless_gap or 0 - beautiful.useless_gap = tonumber(beautiful.useless_gap) + thatmuch - awful.layout.arrange(awful.screen.focused()) +function util.useless_gaps_resize(thatmuch, s, t) + local scr = s or awful.screen.focused() + local tag = t or scr.selected_tag + tag.gap = tag.gap + tonumber(thatmuch) + awful.layout.arrange(scr) end return setmetatable(util, { __index = wrequire })