madduck's git repository
Every one of the projects in this repository is available at the canonical
URL git://git.madduck.net/madduck/pub/<projectpath> — see
each project's metadata for the exact URL.
All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@git.madduck.net.
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
SSH access, as well as push access can be individually
arranged.
If you use my repositories frequently, consider adding the following
snippet to ~/.gitconfig and using the third clone URL listed for each
project:
[url "git://git.madduck.net/madduck/"]
insteadOf = madduck:
--]]
local awful = require("awful")
--]]
local awful = require("awful")
-local beautiful = require("beautiful")
-local math = { sqrt = math.sqrt }
-local string = { gsub = string.gsub }
local tonumber = tonumber
local tonumber = tonumber
local wrequire = require("lain.helpers").wrequire
local setmetatable = setmetatable
local wrequire = require("lain.helpers").wrequire
local setmetatable = setmetatable
end
-- Magnify a client: set it to "float" and resize it.
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
if c and not c.floating then
util.magnified_client = c
util.magnified_client = c
+ util.mc(c, width_f, height_f)
util.magnified_client = nil
util.magnified_client = nil
end
end
-- https://github.com/copycat-killer/lain/issues/195
end
end
-- https://github.com/copycat-killer/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()
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
- 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
g.x = mg.x + (mg.width - g.width) / 2
g.y = mg.y + (mg.height - g.height) / 2
-- {{{ Dynamic tagging
-- Add a new tag
-- {{{ Dynamic tagging
-- Add a new 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.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()
-- pos in {-1, 1} <-> {previous, next} tag position
function util.move_tag(pos)
local tag = awful.screen.focused().selected_tag
-- 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
if tonumber(pos) <= -1 then
- awful.tag.move(idx - 1, tag)
+ awful.tag.move(tag.index - 1, tag)
- awful.tag.move(idx + 1, tag)
+ awful.tag.move(tag.index + 1, tag)
-- On the fly useless gaps change
function util.useless_gaps_resize(thatmuch)
-- On the fly useless gaps change
function util.useless_gaps_resize(thatmuch)
- beautiful.useless_gap = tonumber(beautiful.useless_gap) + thatmuch
- awful.layout.arrange(awful.screen.focused())
+ local scr = awful.screen.focused()
+ scr.selected_tag.gap = scr.selected_tag.gap + tonumber(thatmuch)
+ awful.layout.arrange(scr)
end
return setmetatable(util, { __index = wrequire })
end
return setmetatable(util, { __index = wrequire })