-
--[[
-
- 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
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 tag = s.selected_tag
- 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
-- {{{ 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
-- 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
-- }}}
-- 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 })