Tabbar fixes
changed modern theme size changed tabbar bg, as focused doesnt really matter
This commit is contained in:
parent
a8e60891c1
commit
429fcd26fe
|
@ -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)
|
||||
|
|
|
@ -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"
|
||||
|
|
Loading…
Reference in New Issue