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:

net/mpd widget resize fix; #248
authorcopycat-killer <dada@archlinux.info>
Tue, 3 Jan 2017 11:21:50 +0000 (12:21 +0100)
committercopycat-killer <dada@archlinux.info>
Tue, 3 Jan 2017 11:21:50 +0000 (12:21 +0100)
helpers.lua
init.lua
util/init.lua
util/quake.lua
widgets/alsabar.lua
widgets/mpd.lua
widgets/net.lua
widgets/pulsebar.lua
wiki

index 6c0c3c46ec155fc8fbc485186567f2f5874ca171..6a47738e56ded7fb130a5f2bf33a8692dbc6b271 100644 (file)
@@ -16,6 +16,8 @@ local io     = { open  = io.open,
 local rawget = rawget
 local table  = { sort   = table.sort }
 
+local wibox  = require("wibox")
+
 -- Lain helper functions for internal use
 -- lain.helpers
 local helpers = {}
@@ -140,7 +142,9 @@ end
 
 -- }}}
 
---{{{ Iterate over table of records sorted by keys
+-- {{{ Misc
+
+-- iterate over table of records sorted by keys
 function helpers.spairs(t)
     -- collect the keys
     local keys = {}
@@ -157,7 +161,15 @@ function helpers.spairs(t)
         end
     end
 end
---}}}
 
+-- create a lain textbox widget
+function helpers.make_widget_textbox()
+    local w = wibox.widget.textbox('')
+    local t = wibox.widget.base.make_widget(w)
+    t.widget = w
+    return t
+end
+
+-- }}}
 
 return helpers
index 50864359a58e3c928a11ac5bd176c0b52c1c9b6b..155d6ccd17b997ac65f102343d30ebb79229dedf 100644 (file)
--- a/init.lua
+++ b/init.lua
@@ -9,8 +9,6 @@
                                                    
 --]]
 
-package.loaded.lain = nil
-
 local lain =
 {
     layout  = require("lain.layout"),
index 5fe8213dfae623bc906cefde22eb3ad137810cd9..14a1e14a86b988eac61249a144d2259de697402a 100644 (file)
@@ -162,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
@@ -199,14 +200,13 @@ 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
index 771741e4cc3ea3eca3983c09dd6883bd2ecf33aa..5a47c7d30dacff3ea2eeb64b9e985657fdef6538 100644 (file)
@@ -11,6 +11,7 @@ local capi   = { client = client,
                  mouse  = mouse,
                  screen = screen,
                  timer  = timer }
+local math   = { floor = math.floor }
 local string = string
 
 local pairs        = pairs
@@ -61,7 +62,7 @@ function quake:display()
 
    -- Resize
    awful.client.floating.set(client, true)
-   client.border_width = self.border
+   --client.border_width = self.border
    client.size_hints_honor = false
    if self.notexist then
        client:geometry(self.geometry)
@@ -113,8 +114,8 @@ function quake:new(config)
 
    -- Compute size
    local geom = capi.screen[conf.screen].workarea
-   if width  <= 1 then width = geom.width * width end
-   if height <= 1 then height = geom.height * height end
+   if width  <= 1 then width = math.floor(geom.width * width) end
+   if height <= 1 then height = math.floor(geom.height * height) end
    local x, y
    if     horiz == "left"  then x = geom.x
    elseif horiz == "right" then x = geom.width + geom.x - width
index b20bc4025b1287712bb1929e182aa7e7ebb2481f..e5bc6675cb27f9eb76895ee1e08bc8a61d638c4d 100644 (file)
@@ -13,6 +13,7 @@ local read_pipe    = require("lain.helpers").read_pipe
 local awful        = require("awful")
 local beautiful    = require("beautiful")
 local naughty      = require("naughty")
+local wibox        = require("wibox")
 
 local math         = { modf   = math.modf }
 local mouse        = mouse
@@ -110,7 +111,7 @@ local function worker(args)
     alsabar.notifications = args.notifications or alsabar.notifications
     alsabar.followmouse   = args.followmouse or false
 
-    alsabar.bar = awful.widget.progressbar()
+    alsabar.bar = wibox.widget.progressbar()
 
     alsabar.bar:set_background_color(alsabar.colors.background)
     alsabar.bar:set_color(alsabar.colors.unmute)
index 24cdcda86eb94017f6759fa6fd941f2355652080..c9b3de57d576445400255e2d91da190a59fa5664 100644 (file)
@@ -26,7 +26,7 @@ local setmetatable = setmetatable
 
 -- MPD infos
 -- lain.widgets.mpd
-local mpd = {}
+local mpd = helpers.make_widget_textbox()
 
 local function worker(args)
     local args        = args or {}
@@ -46,8 +46,6 @@ local function worker(args)
     local mpdh = "telnet://" .. host .. ":" .. port
     local echo = echo_cmd .. " 'password " .. password .. "\nstatus\ncurrentsong\nclose'"
 
-    mpd.widget = wibox.widget.textbox('')
-
     mpd_notification_preset = {
         title   = "Now playing",
         timeout = 6
@@ -139,7 +137,7 @@ local function worker(args)
 
     helpers.newtimer("mpd", timeout, mpd.update)
 
-    return setmetatable(mpd, { __index = mpd.widget })
+    return mpd
 end
 
 return setmetatable(mpd, { __call = function(_, ...) return worker(...) end })
index 18831685d1a11c73aab9f6ab757e7c54e2e7fd35..f0b37700eab1e1ea16cb0a69a3ffd46053325af0 100644 (file)
@@ -21,7 +21,10 @@ local setmetatable = setmetatable
 -- lain.widgets.net
 
 local function worker(args)
-    local net = { last_t = 0, last_r = 0, devices = {} }
+    local net = helpers.make_widget_textbox()
+    net.last_t = 0
+    net.last_r = 0
+    net.devices = {}
 
     function net.get_first_device()
         local ws = helpers.read_pipe("ip link show | cut -d' ' -f2,9")
@@ -38,8 +41,6 @@ local function worker(args)
     local settings = args.settings or function() end
     local iface    = args.iface or net.get_first_device()
 
-    net.widget = wibox.widget.textbox('')
-
     -- Compatibility with old API where iface was a string corresponding to 1 interface
     if type(iface) == "string" then
         iftable = {iface}
@@ -138,7 +139,7 @@ local function worker(args)
 
     helpers.newtimer(iface, timeout, update)
 
-    return setmetatable(net, { __index = net.widget })
+    return net
 end
 
 return setmetatable({}, { __call = function(_, ...) return worker(...) end })
index 7f226420d3b43c18eff4f9a3edb2b106f47d0f32..9bac521b77add4d35c8d25e98074e74c87dc7bec 100644 (file)
@@ -13,6 +13,7 @@ local read_pipe    = require("lain.helpers").read_pipe
 local awful        = require("awful")
 local beautiful    = require("beautiful")
 local naughty      = require("naughty")
+local wibox        = require("wibox")
 
 local math         = { modf   = math.modf }
 local mouse        = mouse
@@ -109,7 +110,7 @@ local function worker(args)
     pulsebar.step          = args.step or pulsebar.step
     pulsebar.followmouse   = args.followmouse or false
 
-    pulsebar.bar = awful.widget.progressbar()
+    pulsebar.bar = wibox.widget.progressbar()
 
     pulsebar.bar:set_background_color(pulsebar.colors.background)
     pulsebar.bar:set_color(pulsebar.colors.unmute)
diff --git a/wiki b/wiki
index 42fd0d64ad66a66a062eb422fb5f26e63fd5de58..f6270edc9e9d8ba83971fac3dbaca301c4792f34 160000 (submodule)
--- a/wiki
+++ b/wiki
@@ -1 +1 @@
-Subproject commit 42fd0d64ad66a66a062eb422fb5f26e63fd5de58
+Subproject commit f6270edc9e9d8ba83971fac3dbaca301c4792f34