From 429fcd26fe7bc1c0558d1ee71f1da3b5de54cb05 Mon Sep 17 00:00:00 2001 From: Gokul Swaminathan Date: Mon, 23 Nov 2020 16:43:05 -0800 Subject: [PATCH] Tabbar fixes changed modern theme size changed tabbar bg, as focused doesnt really matter --- module/tabbed.lua | 97 +++++++++++++++++----------------------- widget/tabbar/modern.lua | 2 +- 2 files changed, 43 insertions(+), 56 deletions(-) diff --git a/module/tabbed.lua b/module/tabbed.lua index 40e708e..fabaa46 100644 --- a/module/tabbed.lua +++ b/module/tabbed.lua @@ -8,9 +8,7 @@ In the function themselves, the same object is refered to as "tabobj" which is w you will often see something like: "local tabobj = some_client.bling_tabbed" at the beginning of a function. ---]] - -local awful = require("awful") +--]] local awful = require("awful") local wibox = require("wibox") local gears = require("gears") local beautiful = require("beautiful") @@ -18,16 +16,12 @@ local beautiful = require("beautiful") local helpers = require(tostring(...):match(".*bling.module") .. ".helpers") local bar_style = beautiful.tabbar_style or "default" -local bar = require(tostring(...):match(".*bling") .. ".widget.tabbar." .. bar_style) - +local bar = require(tostring(...):match(".*bling") .. ".widget.tabbar." .. + bar_style) local function copy_size(c, parent_client) - if not c or not parent_client then - return - end - if not c.valid or not parent_client.valid then - return - end + if not c or not parent_client then return end + if not c.valid or not parent_client.valid then return end c.floating = parent_client.floating c.x = parent_client.x c.y = parent_client.y @@ -40,17 +34,15 @@ tabbed = {} -- used to change focused tab relative to the currently focused one tabbed.iter = function(idx) if not idx then idx = 1 end - if not client.focus.bling_tabbed then return end + if not client.focus.bling_tabbed then return end local tabobj = client.focus.bling_tabbed local new_idx = (tabobj.focused_idx + idx) % #tabobj.clients - if new_idx == 0 then - new_idx = #tabobj.clients - end + if new_idx == 0 then new_idx = #tabobj.clients end tabbed.switch_to(tabobj, new_idx) -end +end -- removes a given client from its tab object -tabbed.remove = function(c) +tabbed.remove = function(c) if not c.bling_tabbed then return end local tabobj = c.bling_tabbed table.remove(tabobj.clients, tabobj.focused_idx) @@ -63,13 +55,13 @@ end tabbed.pop = function() if not client.focus.bling_tabbed then return end tabbed.remove(client.focus) -end +end -- adds a client to a given tabobj tabbed.add = function(c, tabobj) if c.bling_tabbed then return end copy_size(c, tabobj.clients[tabobj.focused_idx]) - tabobj.clients[#tabobj.clients+1] = c + tabobj.clients[#tabobj.clients + 1] = c tabobj.focused_idx = #tabobj.clients -- calls update even though switch_to calls update again -- but the new client needs to have the tabobj property @@ -89,19 +81,17 @@ tabbed.pick = function() local output = handle:read("*a") handle:close() -- search the client that was picked - for _,c in ipairs(client.get()) do - if tonumber(c.pid) == tonumber(output) then - tabbed.add(c, tabobj) - end - end + for _, c in ipairs(client.get()) do + if tonumber(c.pid) == tonumber(output) then tabbed.add(c, tabobj) end + end end -- update everything about one tab object -tabbed.update = function(tabobj) +tabbed.update = function(tabobj) local currently_focused_c = tabobj.clients[tabobj.focused_idx] -- update tabobj of each client and other things - for idx,c in ipairs(tabobj.clients) do - if c.valid then + for idx, c in ipairs(tabobj.clients) do + if c.valid then c.bling_tabbed = tabobj copy_size(c, currently_focused_c) -- the following handles killing a client while the client is tabbed @@ -111,18 +101,18 @@ tabbed.update = function(tabobj) c:connect_signal("unmanage", function(c) if not c.bling_tabbed then return end local old_tabobj = c.bling_tabbed - local tabobj = {clients={}, focused_idx=1} - for _, c_temp in ipairs(old_tabobj.clients) do + local tabobj = {clients = {}, focused_idx = 1} + for _, c_temp in ipairs(old_tabobj.clients) do if c_temp.window ~= c.window then - tabobj.clients[#tabobj.clients+1] = c_temp + tabobj.clients[#tabobj.clients + 1] = c_temp end - end + end tabbed.update(tabobj) tabbed.switch_to(tabobj, 1) end) end - end - + end + tabbed.update_tabbar(tabobj) end @@ -130,45 +120,42 @@ end tabbed.switch_to = function(tabobj, new_idx) local old_focused_c = tabobj.clients[tabobj.focused_idx] tabobj.focused_idx = new_idx - for idx,c in ipairs(tabobj.clients) do - if idx ~= new_idx then + for idx, c in ipairs(tabobj.clients) do + if idx ~= new_idx then helpers.turn_off(c) - else + else helpers.turn_on(c) c:raise() - if old_focused_c and old_focused_c.valid then + if old_focused_c and old_focused_c.valid then c:swap(old_focused_c) end copy_size(c, old_focused_c) end - end + end tabbed.update(tabobj) end tabbed.update_tabbar = function(tabobj) local flexlist = bar.layout() -- itearte over all tabbed clients to create the widget tabbed list - for idx,c in ipairs(tabobj.clients) do - local buttons = gears.table.join(awful.button({}, 1, function() - tabbed.switch_to(tabobj, idx) - end)) - wid_temp = bar.create(c, (idx==tabobj.focused_idx), buttons) + for idx, c in ipairs(tabobj.clients) do + local buttons = gears.table.join( + awful.button({}, 1, function() + tabbed.switch_to(tabobj, idx) + end)) + wid_temp = bar.create(c, (idx == tabobj.focused_idx), buttons) flexlist:add(wid_temp) - end + end -- add tabbar to each tabbed client (clients will be hided anyway) - for _,c in ipairs(tabobj.clients) do + for _, c in ipairs(tabobj.clients) do local titlebar = awful.titlebar(c, { - bg_normal = bar.bg_normal, - bg_focus = bar.bg_focus, + bg = bar.bg_normal, size = bar.size, position = bar.position }) - titlebar:setup { - layout = wibox.layout.flex.horizontal, - flexlist, - } - end -end + titlebar:setup{layout = wibox.layout.flex.horizontal, flexlist} + end +end tabbed.init = function(c) local tabobj = {} @@ -177,11 +164,11 @@ tabbed.init = function(c) tabbed.update(tabobj) end -if beautiful.tabbed_spawn_in_tab then +if beautiful.tabbed_spawn_in_tab then client.connect_signal("manage", function(c) local s = awful.screen.focused() local previous_client = awful.client.focus.history.get(s, 1) - if previous_client and previous_client.bling_tabbed then + if previous_client and previous_client.bling_tabbed then tabbed.add(c, previous_client.bling_tabbed) end end) diff --git a/widget/tabbar/modern.lua b/widget/tabbar/modern.lua index 5dcd1b9..1fcf406 100644 --- a/widget/tabbar/modern.lua +++ b/widget/tabbar/modern.lua @@ -10,7 +10,7 @@ local fg_normal = beautiful.tabbar_fg_normal or beautiful.fg_normal or "#000000" local bg_focus = beautiful.tabbar_bg_focus or beautiful.bg_focus or "#000000" local fg_focus = beautiful.tabbar_fg_focus or beautiful.fg_focus or "#ffffff" local font = beautiful.tabbar_font or beautiful.font or "Hack 15" -local size = beautiful.tabbar_size or dpi(20) +local size = beautiful.tabbar_size or dpi(40) local border_radius = beautiful.mstab_border_radius or beautiful.border_radius or 6 local position = beautiful.tabbar_orientation or "top"