X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/cf2c44249973125a51c370311e7361d9c1e84771..398edb9bf94ecd0d4a9a0cb22b8f93aeee69dde7:/util/init.lua?ds=sidebyside

diff --git a/util/init.lua b/util/init.lua
index 14a1e14..78889bc 100644
--- a/util/init.lua
+++ b/util/init.lua
@@ -13,15 +13,10 @@
 --]]
 
 local awful        = require("awful")
-local beautiful    = require("beautiful")
-local math         = { sqrt = math.sqrt }
-local mouse        = mouse
+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
 
@@ -29,26 +24,23 @@ local setmetatable = setmetatable
 -- lain.util
 local util = { _NAME = "lain.util" }
 
--- Like awful.menu.clients, but only show clients of currently selected
--- tags.
+-- 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.tag.selectedlist(mouse.screen)
+    local cls_tags = awful.screen.focused().selected_tags
+
+    if cls_tags == nil then return nil end
 
     -- Final list of menu items.
     local cls_t = {}
 
-    if cls_tags == nil then return nil end
-
     -- 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]
+    for i = 1,#cls_tags do
+        local t   = cls_tags[i]
         local cls = t:clients()
 
-        for k, c in pairs(cls)
-        do
+        for k, c in pairs(cls) do
             cls_t[#cls_t + 1] = { awful.util.escape(c.name) or "",
                                   function ()
                                       c.minimized = false
@@ -68,99 +60,56 @@ function util.menu_clients_current_tags(menu, args)
 
     -- Set the list of items and show the menu.
     menu.items = cls_t
-    local m = awful.menu.new(menu)
+    local m = awful.menu(menu)
     m:show(args)
+
     return m
 end
 
--- Magnify a client: Set it to "float" and resize it.
-local magnified_client = nil
-function util.magnify_client(c)
-    if c and not awful.client.floating.get(c) then
-        util.mc(c)
-        magnified_client = c
+-- 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
-        awful.client.floating.set(c, false)
-        magnified_client = nil
+        util.magnified_client = nil
+        c.floating = false
     end
 end
 
 -- https://github.com/copycat-killer/lain/issues/195
-function util.mc(c)
-    c = c or magnified_client
+function util.mc(c, width_f, height_f)
+    c = c or util.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 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...
-    n = string.gsub(n, '.*%) ', '')
 
-    -- Field number 17 now is the nice value.
-    fields = split(n, ' ')
-    return tonumber(fields[17])
-end
-
--- To be used as a signal handler for "focus"
--- This requires beautiful.border_focus{,_highprio,_lowprio}.
-function util.niceborder_focus(c)
-    local n = get_nice_value(c.pid)
-    if n == 0
-    then
-        c.border_color = beautiful.border_focus
-    elseif n < 0
-    then
-        c.border_color = beautiful.border_focus_highprio
-    else
-        c.border_color = beautiful.border_focus_lowprio
-    end
-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
 
--- To be used as a signal handler for "unfocus"
--- This requires beautiful.border_normal{,_highprio,_lowprio}.
-function util.niceborder_unfocus(c)
-    local n = get_nice_value(c.pid)
-    if n == 0
-    then
-        c.border_color = beautiful.border_normal
-    elseif n < 0
-    then
-        c.border_color = beautiful.border_normal_highprio
-    else
-        c.border_color = beautiful.border_normal_lowprio
-    end
+    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 mouse.screen or 1
-   local scr = screen[s]
+   local s = sc or awful.screen.focused()
 
-   for i = 1, #awful.tag.gettags(s) do
-       awful.tag.viewidx(direction,s)
-       if #awful.client.visible(s) > 0 then
+   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()
     awful.prompt.run {
@@ -191,12 +140,11 @@ end
 -- Move current tag
 -- pos in {-1, 1} <-> {previous, next} tag position
 function util.move_tag(pos)
-    local tag = awful.tag.selected(mouse.screen)
-    local idx = awful.tag.getidx(tag)
+    local tag = awful.screen.focused().selected_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
 
@@ -207,28 +155,14 @@ function util.delete_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
-    awful.layout.arrange(mouse.screen)
-end
-
--- On the fly global border change
-function util.global_border_resize(thatmuch)
-    beautiful.global_border_width = tonumber(beautiful.global_border_width) + 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
+    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 })