From cf2c44249973125a51c370311e7361d9c1e84771 Mon Sep 17 00:00:00 2001 From: copycat-killer Date: Tue, 3 Jan 2017 12:21:50 +0100 Subject: [PATCH] net/mpd widget resize fix; #248 --- helpers.lua | 16 +++++++++++++-- init.lua | 2 -- util/init.lua | 48 ++++++++++++++++++++++---------------------- util/quake.lua | 7 ++++--- widgets/alsabar.lua | 3 ++- widgets/mpd.lua | 6 ++---- widgets/net.lua | 9 +++++---- widgets/pulsebar.lua | 3 ++- wiki | 2 +- 9 files changed, 54 insertions(+), 42 deletions(-) diff --git a/helpers.lua b/helpers.lua index 6c0c3c4..6a47738 100644 --- a/helpers.lua +++ b/helpers.lua @@ -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 diff --git a/init.lua b/init.lua index 5086435..155d6cc 100644 --- a/init.lua +++ b/init.lua @@ -9,8 +9,6 @@ --]] -package.loaded.lain = nil - local lain = { layout = require("lain.layout"), diff --git a/util/init.lua b/util/init.lua index 5fe8213..14a1e14 100644 --- a/util/init.lua +++ b/util/init.lua @@ -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 diff --git a/util/quake.lua b/util/quake.lua index 771741e..5a47c7d 100644 --- a/util/quake.lua +++ b/util/quake.lua @@ -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 diff --git a/widgets/alsabar.lua b/widgets/alsabar.lua index b20bc40..e5bc667 100644 --- a/widgets/alsabar.lua +++ b/widgets/alsabar.lua @@ -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) diff --git a/widgets/mpd.lua b/widgets/mpd.lua index 24cdcda..c9b3de5 100644 --- a/widgets/mpd.lua +++ b/widgets/mpd.lua @@ -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 }) diff --git a/widgets/net.lua b/widgets/net.lua index 1883168..f0b3770 100644 --- a/widgets/net.lua +++ b/widgets/net.lua @@ -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 }) diff --git a/widgets/pulsebar.lua b/widgets/pulsebar.lua index 7f22642..9bac521 100644 --- a/widgets/pulsebar.lua +++ b/widgets/pulsebar.lua @@ -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 42fd0d6..f6270ed 160000 --- a/wiki +++ b/wiki @@ -1 +1 @@ -Subproject commit 42fd0d64ad66a66a062eb422fb5f26e63fd5de58 +Subproject commit f6270edc9e9d8ba83971fac3dbaca301c4792f34 -- 2.39.5