X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/fc6e880da40668c6e9bd9da3786ff2fcae519c75:/util/init.lua..4c392a6d980af9c72052145c6a7a812c51e6ecee:/.config/awesome/lain/util/static/git-logo.png?ds=sidebyside diff --git a/util/init.lua b/util/init.lua deleted file mode 100644 index 1fc5805..0000000 --- a/util/init.lua +++ /dev/null @@ -1,168 +0,0 @@ - ---[[ - - 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") -local sqrt = math.sqrt -local pairs = pairs -local client = client -local tonumber = tonumber -local wrequire = require("lain.helpers").wrequire -local setmetatable = setmetatable - --- Lain utilities submodule --- lain.util -local util = { _NAME = "lain.util" } - --- Like awful.menu.clients, but only show clients of currently selected tags -function util.menu_clients_current_tags(menu, args) - -- List of currently selected tags. - local cls_tags = awful.screen.focused().selected_tags - - if cls_tags == nil then return nil end - - -- Final list of menu items. - local cls_t = {} - - -- For each selected tag get all clients of that tag and add them to - -- the menu. A click on a menu item will raise that client. - for i = 1,#cls_tags do - local t = cls_tags[i] - local cls = t:clients() - - for k, c in pairs(cls) do - cls_t[#cls_t + 1] = { awful.util.escape(c.name) or "", - function () - c.minimized = false - client.focus = c - c:raise() - end, - c.icon } - end - end - - -- No clients? Then quit. - if #cls_t <= 0 then return nil end - - -- menu may contain some predefined values, otherwise start with a - -- fresh menu. - if not menu then menu = {} end - - -- Set the list of items and show the menu. - menu.items = cls_t - local m = awful.menu(menu) - m:show(args) - - return m -end - --- Magnify a client: set it to "float" and resize it. -function util.magnify_client(c, width_f, height_f) - if c and not c.floating then - util.magnified_client = c - util.mc(c, width_f, height_f) - else - util.magnified_client = nil - c.floating = false - 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() - local mg = s.workarea - local g = {} - 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 - - if c then c:geometry(g) end -- if c is still a valid object -end - --- Non-empty tag browsing --- direction in {-1, 1} <-> {previous, next} non-empty tag -function util.tag_view_nonempty(direction, sc) - local s = sc or awful.screen.focused() - - for i = 1, #s.tags do - awful.tag.viewidx(direction, s) - if #s.clients > 0 then - return - end - end -end - --- {{{ 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.tag.add(name, { screen = awful.screen.focused(), layout = layout or awful.layout.layouts[0] }):view_only() - end - } -end - --- Rename current tag -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 - --- Move current tag --- pos in {-1, 1} <-> {previous, next} tag position -function util.move_tag(pos) - local tag = awful.screen.focused().selected_tag - if tonumber(pos) <= -1 then - awful.tag.move(tag.index - 1, tag) - else - awful.tag.move(tag.index + 1, tag) - end -end - --- Delete current tag --- Any rule set on the tag shall be broken -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) - 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 })