X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/fec60d0af7d25b99d7f45ff94438e9d3f0f77ddf..fd35485c200a52c9429f9a4f3f5c8282b64dba30:/util/init.lua diff --git a/util/init.lua b/util/init.lua index 1dfff65..9a6d182 100644 --- a/util/init.lua +++ b/util/init.lua @@ -74,32 +74,37 @@ function util.menu_clients_current_tags(menu, args) end -- Magnify a client: Set it to "float" and resize it. +local magnified_client = nil function util.magnify_client(c) - 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) + if c and not awful.client.floating.get(c) then + util.mc(c) + magnified_client = c else awful.client.floating.set(c, false) + magnified_client = nil end end +-- https://github.com/copycat-killer/lain/issues/195 +function util.mc(c) + c = c or magnified_client + if not c then return end + 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 + if c then c:geometry(g) end -- if c is still a valid object +end + -- Read the nice value of pid from /proc. local function get_nice_value(pid) local n = first_line('/proc/' .. pid .. '/stat') - if n == nil - then - -- This should not happen. But I don't want to crash, either. - return 0 - end + if not n then return 0 end -- Remove pid and tcomm. This is necessary because tcomm may contain -- nasty stuff such as whitespace or additional parentheses... @@ -146,7 +151,7 @@ function util.tag_view_nonempty(direction, sc) local s = sc or mouse.screen or 1 local scr = screen[s] - for i = 1, #tags[s] do + for i = 1, #awful.tag.gettags(s) do awful.tag.viewidx(direction,s) if #awful.client.visible(s) > 0 then return @@ -157,29 +162,30 @@ end -- {{{ 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") +function util.add_tag() + 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() 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) - if text:len() > 0 then - tag.name = text - tag:emit_signal("property::name") +function util.rename_tag() + awful.prompt.run { + prompt = "Rename tag: ", + textbox = awful.screen.focused().mypromptbox.widget, + exe_callback = function(new_name) + if not new_name or #new_name == 0 then return end + local t = awful.screen.focused().selected_tag + if t then + t.name = new_name + end end - end) + } end -- Move current tag @@ -194,20 +200,29 @@ function util.move_tag(pos) end end --- Remove current tag (if empty) +-- Delete current tag -- 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) +function util.delete_tag() + local t = awful.screen.focused().selected_tag + if not t then return end + t:delete() end --- -- }}} -- On the fly useless gaps change function util.useless_gaps_resize(thatmuch) - beautiful.useless_gap_width = tonumber(beautiful.useless_gap_width) + thatmuch + beautiful.useless_gap = tonumber(beautiful.useless_gap) + thatmuch awful.layout.arrange(mouse.screen) end +-- Check if an element exist on a table +function util.element_in_table(element, tbl) + for _, i in pairs(tbl) do + if i == element then + return true + end + end + return false +end + return setmetatable(util, { __index = wrequire })