impl: Adapt to new upstream API changes
* The screen API was broken * Many awful.tag, client and screen methods were deprecated
This commit is contained in:
parent
e18f664de0
commit
aeb9aeb1b8
|
@ -30,7 +30,7 @@ local function push_focus(c)
|
|||
if c and not pause_monitoring then
|
||||
focusTable[c] = focusIdx
|
||||
focusIdx = focusIdx + 1
|
||||
focusTag[c] = tag.selected(c.screen)
|
||||
focusTag[c] = c.screen.selected_tag
|
||||
end
|
||||
end
|
||||
capi.client.connect_signal("focus", push_focus)
|
||||
|
@ -114,7 +114,7 @@ local function new(args)
|
|||
end
|
||||
|
||||
local scr = capi.client.focus and capi.client.focus.screen or capi.mouse.screen
|
||||
local t,auto_release = tag.selected(scr),args.auto_release
|
||||
local t,auto_release = scr.selected_tag,args.auto_release
|
||||
local currentMenu = radical.box({filter = true, show_filter=not auto_release, autodiscard = true,
|
||||
disable_markup=true,fkeys_prefix=not auto_release,width=(((capi.screen[scr]).geometry.width)/2),
|
||||
icon_transformation = beautiful.alttab_icon_transformation,filter_underlay="Use [Shift] and [Control] to toggle clients",filter_underlay_color=beautiful.menu_bg_normal,
|
||||
|
@ -201,7 +201,7 @@ local function new(args)
|
|||
checked = v.screen == scr and (not auto_release and is_in_tag(t,v)) or nil,
|
||||
button1 = function(a,b,c,d,no_hide)
|
||||
local t = focusTag[v] or v:tags()[1]
|
||||
if t and t.selected == false and not util.table.hasitem(v:tags(),tag.selected(v.screen)) then
|
||||
if t and t.selected == false and not util.table.hasitem(v:tags(),capi.screen[v.screen].selected_tag) then
|
||||
lock_history = true
|
||||
tag.viewonly(t)
|
||||
lock_history = false
|
||||
|
|
|
@ -10,8 +10,8 @@ local module = {}
|
|||
|
||||
local function createTagList(aScreen)
|
||||
local tagList = radical.context {}
|
||||
for _, v in ipairs(awful.tag.gettags(aScreen)) do
|
||||
tagList:add_item({text = v.name,icon=awful.tag.geticon(v)})
|
||||
for _, v in ipairs(capi.screen[aScreen].tags) do
|
||||
tagList:add_item({text = v.name,icon=v.icon})
|
||||
end
|
||||
return tagList
|
||||
end
|
||||
|
|
|
@ -14,8 +14,8 @@ local function createTagList(aScreen,args)
|
|||
end
|
||||
local tagList = args.menu or radical.context {}
|
||||
local ret = {}
|
||||
for _, v in ipairs(awful.tag.gettags(aScreen)) do
|
||||
args.text,args.icon = v.name,awful.tag.geticon(v)
|
||||
for _, v in ipairs(capi.screen[aScreen].tags) do
|
||||
args.text,args.icon = v.name,v.icon
|
||||
local i = tagList:add_item(args)
|
||||
i._tag = v
|
||||
ret[v] = i
|
||||
|
@ -45,7 +45,7 @@ function module.listTags(args, menu)
|
|||
end
|
||||
|
||||
function module.layouts(menu,layouts)
|
||||
local cur = awful.layout.get(awful.tag.getscreen(awful.tag.selected(capi.client.focus and capi.client.focus.screen)))
|
||||
local cur = awful.layout.get(capi.client.focus and capi.client.focus.screen)
|
||||
local screenSelect = menu or radical.context {}
|
||||
|
||||
local layouts = layouts or awful.layout.layouts
|
||||
|
@ -57,7 +57,7 @@ function module.layouts(menu,layouts)
|
|||
if mod then
|
||||
screenSelect[mod[1] == "Shift" and "previous_item" or "next_item"].selected = true
|
||||
end
|
||||
awful.layout.set(layouts[screenSelect.current_index] or layouts[1],awful.tag.selected(capi.client.focus and capi.client.focus.screen))
|
||||
awful.layout.set(layouts[screenSelect.current_index] or layouts[1],(capi.client.focus and capi.client.focus.screen).selected_tag)
|
||||
end, selected = is_current, item_layout = radical.item.layout.icon})
|
||||
end
|
||||
end
|
||||
|
|
|
@ -44,8 +44,8 @@ module.buttons = { [1] = awful.tag.viewonly,
|
|||
menu.visible = true
|
||||
menu._internal.w:move_by_parent(geo, "cursor")
|
||||
end,
|
||||
[4] = function(t) awful.tag.viewnext(awful.tag.getscreen(t)) end,
|
||||
[5] = function(t) awful.tag.viewprev(awful.tag.getscreen(t)) end,
|
||||
[4] = function(t) awful.tag.viewnext(t.screen) end,
|
||||
[5] = function(t) awful.tag.viewprev(t.screen) end,
|
||||
}
|
||||
-- awful.button({ modkey }, 1, awful.client.movetotag),
|
||||
-- awful.button({ modkey }, 3, awful.client.toggletag),
|
||||
|
@ -63,7 +63,7 @@ local function index_draw(self, context, cr, width, height)
|
|||
end
|
||||
|
||||
local function create_item(t,s)
|
||||
local menu,ib,original = instances[s],nil,tag.geticon(t) or beautiful.taglist_default_icon
|
||||
local menu,ib,original = instances[capi.screen[s]],nil,t.icon or beautiful.taglist_default_icon
|
||||
if not menu or not t then return end
|
||||
local w = wibox.layout.fixed.horizontal()
|
||||
if beautiful.taglist_disable_icon ~= true then
|
||||
|
@ -122,6 +122,7 @@ local function create_item(t,s)
|
|||
menu:connect_signal("button::press",function(menu,item,button_id,mod,geo)
|
||||
if module.buttons and module.buttons[button_id] then
|
||||
if item.tag[1] then
|
||||
assert(type(item.tag[1]) == "tag")
|
||||
module.buttons[button_id](item.tag[1],menu,item,button_id,mod,geo)
|
||||
else
|
||||
print("Invalid tag")
|
||||
|
@ -138,8 +139,8 @@ local function create_item(t,s)
|
|||
end
|
||||
|
||||
local function track_used(c,t)
|
||||
if t then
|
||||
local item = cache[t] or create_item(t,tag.getscreen(t))
|
||||
if t and t.activated then
|
||||
local item = cache[t] or create_item(t,t.screen or c.screen or capi.mouse.screen)
|
||||
if not item then return end -- Yes, it happen if the screen is still nil
|
||||
item.state[radical.base.item_flags.USED] = #t:clients() > 0 and true or nil
|
||||
item.state[radical.base.item_flags.CHANGED] = ((not t.selected) and #t:clients() > 0) and true or nil
|
||||
|
@ -156,7 +157,7 @@ end
|
|||
|
||||
local function tag_activated(t)
|
||||
if not t.activated and cache[t] then
|
||||
instances[cache[t]._internal.screen]:remove(cache[t])
|
||||
instances[capi.screen[cache[t]._internal.screen]]:remove(cache[t])
|
||||
cache[t] = nil
|
||||
end
|
||||
end
|
||||
|
@ -164,18 +165,18 @@ end
|
|||
local function tag_added(t,b)
|
||||
if not t then return end
|
||||
|
||||
local s = tag.getscreen(t)
|
||||
local s = t.screen
|
||||
local item = cache[t]
|
||||
|
||||
-- Creating items when there is no screen cause random behaviors
|
||||
if not item and s then
|
||||
create_item(t,s)
|
||||
create_item(t,s or capi.mouse.screen)
|
||||
elseif item._internal.screen ~= s then
|
||||
if item._internal.screen then
|
||||
instances[item._internal.screen]:remove(item)
|
||||
instances[capi.screen[item._internal.screen]]:remove(item)
|
||||
end
|
||||
if s then
|
||||
instances[s]:append(item)
|
||||
instances[capi.screen[s]]:append(item)
|
||||
end
|
||||
|
||||
--Allow nil
|
||||
|
@ -185,7 +186,7 @@ end
|
|||
|
||||
local function select(t)
|
||||
local s = t.selected
|
||||
local item = cache[t] or create_item(t,tag.getscreen(t))
|
||||
local item = cache[t] or create_item(t,t.screen or capi.mouse.screen)
|
||||
if item then
|
||||
item.state[radical.base.item_flags.SELECTED] = s or nil
|
||||
-- if s then --We also want to unset those when we quit the tag
|
||||
|
@ -197,7 +198,7 @@ end
|
|||
|
||||
local function urgent_callback(t)
|
||||
local modif = tag.getproperty(t,"urgent")
|
||||
local item = cache[t] or create_item(t,tag.getscreen(t))
|
||||
local item = cache[t] or create_item(t,t.screen or capi.mouse.screen)
|
||||
if item then
|
||||
item.state[radical.base.item_flags.URGENT] = modif and true or nil
|
||||
end
|
||||
|
@ -228,7 +229,7 @@ local function init()
|
|||
capi.tag.connect_signal("property::icon", function(t)
|
||||
local item = cache[t]
|
||||
if item and item._internal.icon_w then
|
||||
item._internal.icon_w:set_image(tag.geticon(t) or beautiful.taglist_default_icon)
|
||||
item._internal.icon_w:set_image(t.icon or beautiful.taglist_default_icon)
|
||||
end
|
||||
end)
|
||||
is_init = true
|
||||
|
@ -282,22 +283,22 @@ local function new(s)
|
|||
args["fg_"..v] = beautiful["taglist_fg_"..v]
|
||||
end
|
||||
|
||||
instances[s] = radical.bar(args)
|
||||
instances[capi.screen[s]] = radical.bar(args)
|
||||
|
||||
--Add some settings
|
||||
rawset(instances[s],"index_prefix",beautiful.taglist_index_prefix)
|
||||
rawset(instances[s],"index_suffix",beautiful.taglist_index_suffix)
|
||||
rawset(instances[capi.screen[s]],"index_prefix",beautiful.taglist_index_prefix)
|
||||
rawset(instances[capi.screen[s]],"index_suffix",beautiful.taglist_index_suffix)
|
||||
|
||||
|
||||
-- Load the innitial set of tags
|
||||
for k,t in ipairs(tag.gettags(s)) do
|
||||
create_item(t,s)
|
||||
for k,t in ipairs(capi.screen[s].tags) do
|
||||
create_item(t,capi.screen[s])
|
||||
end
|
||||
|
||||
-- Per screen signals
|
||||
-- tag.attached_connect_signal(screen, "property::hide", ut)!
|
||||
|
||||
instances[s]:connect_signal("button::press",function(m,item,button_id,mod)
|
||||
instances[capi.screen[s]]:connect_signal("button::press",function(m,item,button_id,mod)
|
||||
if module.buttons and module.buttons[button_id] then
|
||||
module.buttons[button_id](item.tag[1],m,item,button_id,mod)
|
||||
end
|
||||
|
@ -305,16 +306,16 @@ local function new(s)
|
|||
|
||||
init()
|
||||
track:reload()
|
||||
return instances[s]
|
||||
return instances[capi.screen[s]]
|
||||
end
|
||||
|
||||
capi.tag.connect_signal("property::selected" , select)
|
||||
capi.tag.connect_signal("property::index2",function(t,i)
|
||||
if t and not beautiful.taglist_disable_index then
|
||||
local s = tag.getscreen(t)
|
||||
local s = t.screen
|
||||
local item = cache[t]
|
||||
if item then
|
||||
local menu = instances[s]
|
||||
local menu = instances[capi.screen[s]]
|
||||
menu:move(item,i)
|
||||
if item.tw then
|
||||
item.tw:set_markup((menu.index_prefix or " <b>#")..(i)..(menu.index_suffix or "</b>: "))
|
||||
|
|
|
@ -97,7 +97,7 @@ local function new(t)
|
|||
aTagMenu:add_item({text = "Screen",sub_menu = screenMenu})
|
||||
|
||||
for i=1,capi.screen.count() do
|
||||
screenMenu:add_item({text = "Screen "..i, checked = tag.getscreen(aTag) == i,button1 = function() tag_to_screen(aTag,i) end})
|
||||
screenMenu:add_item({text = "Screen "..i, checked = aTag.screen == i,button1 = function() tag_to_screen(aTag,i) end})
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -108,7 +108,7 @@ local function new(t)
|
|||
function createTagList(aScreen)
|
||||
local tagList = menu()
|
||||
local count = 0
|
||||
for _, v in ipairs(awful.tag.gettags(aScreen)) do
|
||||
for _, v in ipairs(capi.screen[aScreen].tags) do
|
||||
tagList:add_item({text = v.name})
|
||||
count = count + 1
|
||||
end
|
||||
|
@ -127,7 +127,7 @@ local function new(t)
|
|||
if (file == "END" or nil) or (counter > 30) then
|
||||
break
|
||||
end
|
||||
mainMenu2:add_item({ button1 = function() tag.seticon(file,aTag) end, icon = file, item_layout = radical.item.layout.icon})
|
||||
mainMenu2:add_item({ button1 = function() aTag.icon = file end, icon = file, item_layout = radical.item.layout.icon})
|
||||
counter = counter +1
|
||||
end
|
||||
f:close()
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
-- This module try to track tags relative index
|
||||
-- It will emit signals the widget can rely on
|
||||
local capi = {tag=tag}
|
||||
local capi = {tag=tag,screen=screen}
|
||||
local tag = require( "awful.tag" )
|
||||
local object = require( "radical.object" )
|
||||
local awful = require("awful")
|
||||
|
@ -10,14 +10,15 @@ local init = false
|
|||
local screen_cache = setmetatable({}, { __mode = 'k' })--TODO this suck
|
||||
|
||||
local function reload(t,s)
|
||||
local s = s or tag.getscreen(t) or screen_cache[t]
|
||||
local s = s or t.screen or screen_cache[t]
|
||||
local tracker = cache[s]
|
||||
|
||||
if not tracker then return end
|
||||
|
||||
local old_tags = tracker._internal.old_tags or {}
|
||||
|
||||
local new_tags = tag.gettags(s)
|
||||
local new_tags = capi.screen[s].tags
|
||||
|
||||
for k,v in ipairs(new_tags) do
|
||||
if v ~= old_tags[k] then
|
||||
-- print(v.name,k,s,tag.getscreen(v),tag.getidx(v))
|
||||
|
@ -37,7 +38,7 @@ end
|
|||
local old_screen = awful.tag.getproperty(t,"screen")
|
||||
|
||||
-- Change the screen
|
||||
awful.tag.setproperty(t, "screen", s)
|
||||
-- awful.tag.setproperty(t, "screen", s)
|
||||
|
||||
--Prevent some very strange side effects, does create some issue with multitag clients
|
||||
for k,c in ipairs(t:clients()) do
|
||||
|
|
|
@ -82,8 +82,8 @@ local function new(screen, args)
|
|||
text = "Floating",
|
||||
checked = true ,
|
||||
button1 = function()
|
||||
awful.client.floating.set(module.client,not awful.client.floating.get(module.client))
|
||||
itemVFloating.checked = awful.client.floating.get(module.client)
|
||||
module.client.floating = not module.client.floating
|
||||
itemVFloating.checked = module.client.floating
|
||||
end
|
||||
}
|
||||
itemMaximized = mainMenu:add_item{
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- @license GPLv2+ because of copy paste from the old tasklist.lua
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
local capi = {client = client,tag=tag}
|
||||
local capi = {client = client,tag=tag,screen=screen}
|
||||
local rawset = rawset
|
||||
local radical = require( "radical" )
|
||||
local tag = require( "awful.tag" )
|
||||
|
@ -83,7 +83,7 @@ end
|
|||
local function sticky_callback(c)
|
||||
local val = c.sticky
|
||||
sticky[c] = val and true or nil
|
||||
local menu = instances[c.screen].menu
|
||||
local menu = instances[capi.screen[c.screen]].menu
|
||||
local is_in_tag = false
|
||||
for _,t in ipairs(tag.selectedlist(k)) do
|
||||
for k2,v2 in ipairs(c:tags()) do
|
||||
|
@ -157,7 +157,7 @@ local function reload_infoshapes(c)
|
|||
if c.ontop then
|
||||
infoshapes[#infoshapes+1] = infoshape_template.ontop
|
||||
end
|
||||
if client.floating.get(c) then
|
||||
if c.floating then
|
||||
infoshapes[#infoshapes+1] = infoshape_template.float
|
||||
end
|
||||
if c.sticky then
|
||||
|
@ -184,7 +184,7 @@ end
|
|||
|
||||
local function create_client_item(c,screen)
|
||||
local item = _cache[c]
|
||||
local menu = instances[screen].menu
|
||||
local menu = instances[capi.screen[screen]].menu
|
||||
-- If it already exist, don't waste time creating a copy
|
||||
if item then
|
||||
menu:append(item)
|
||||
|
@ -236,11 +236,11 @@ end
|
|||
|
||||
-- Clear the menu and repopulate it
|
||||
local function load_clients(t)
|
||||
local screen = tag.getscreen(t)
|
||||
if not t or not screen or not instances[screen] then return end
|
||||
local menu = instances[screen].menu
|
||||
local screen = t.screen
|
||||
if not t or not screen or not instances[capi.screen[screen]] then return end
|
||||
local menu = instances[capi.screen[screen]].menu
|
||||
local clients = {}
|
||||
local selected = tag.selectedlist(screen)
|
||||
local selected = screen.selected_tags
|
||||
-- The "#selected > 0" is for reseting when multiple tags are selected
|
||||
if t.selected or #selected > 0 then
|
||||
menu:clear()
|
||||
|
@ -261,7 +261,7 @@ end
|
|||
-- Reload the tag
|
||||
local function tag_screen_changed(t)
|
||||
if not t.selected then return end
|
||||
local screen = tag.getscreen(t)
|
||||
local screen = t.screen
|
||||
load_clients(t)
|
||||
end
|
||||
|
||||
|
@ -284,9 +284,11 @@ end
|
|||
-- Remove the client from the tag
|
||||
local function untagged(c,t)
|
||||
local item = _cache[c]
|
||||
local screen = tag.getscreen(t)
|
||||
if not item or not instances[screen] then return end
|
||||
local menu = instances[screen].menu
|
||||
|
||||
-- t.screen can be nil if the tag was deleted
|
||||
local screen = t.screen or c.screen or capi.mouse.screen
|
||||
if not item or not instances[capi.screen[screen]] then return end
|
||||
local menu = instances[capi.screen[screen]].menu
|
||||
if t.selected then
|
||||
menu:remove(item)
|
||||
end
|
||||
|
@ -295,7 +297,7 @@ end
|
|||
-- Add and remove clients from the tasklist
|
||||
local function tagged(c,t)
|
||||
if t.selected and not c.sticky then
|
||||
add_client(c,tag.getscreen(t))
|
||||
add_client(c,t.screen)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -332,9 +334,9 @@ local function new(screen)
|
|||
|
||||
|
||||
-- Connect to a bunch of signals
|
||||
instances[screen] = {menu = menu}
|
||||
instances[capi.screen[screen]] = {menu = menu}
|
||||
|
||||
load_clients(tag.selected(screen))
|
||||
load_clients(screen.selected_tag)
|
||||
|
||||
menu:connect_signal("button::press",function(menu,item,button_id,mod,geo)
|
||||
if module.buttons and module.buttons[button_id] then
|
||||
|
|
Loading…
Reference in New Issue