获取下一个和上一个标签AwesomeWM

问题描述

是否可以在AwesomeWM Lua Config获取一个或上一个标签

原因:-我想获取一个或上一个标签,将重点客户标签设置为该标签,然后再移至该标签。 我知道有awful.tag.viewnext移到下一个标签,但是不确定如何获取标签,它将移到客户端上进行设置。 预先感谢

解决方法

嗯...是的,有办法,但是没有一个完全琐碎的办法。

首先,让我们看一下默认配置。哪些现有功能必须获取下一个/上一个标签?这就是标签列表上的鼠标滚轮:

https://github.com/awesomeWM/awesome/blob/7a759432d3100ff6870e0b2b427e3352bf17c7cc/awesomerc.lua#L160-L161

因此,awful.tag.viewnextviewprev如何获得下一个标签?这些函数仅以viewidx为1或-1调用idx,例如:

https://github.com/awesomeWM/awesome/blob/7a759432d3100ff6870e0b2b427e3352bf17c7cc/lib/awful/tag.lua#L1494

因此,awful.tag.viewidx可以做我们想要的事情。它是如何做到的?

它获取所有未隐藏标签的表,找到当前所选标签的索引,然后使用gears.math.cycle计算具有所需偏移量的标签的索引。

https://github.com/awesomeWM/awesome/blob/7a759432d3100ff6870e0b2b427e3352bf17c7cc/lib/awful/tag.lua#L1452-L1469

对您来说,以下方法可以解决问题:

function get_tag_at_offset(i,s)
    s = screen[s or awful.screen.focused()]
    local tags = s.tags
    local showntags = {}
    for _,t in pairs(tags) do
        if not awful.tag.getproperty(t,"hide") then
            table.insert(showntags,t)
        end
    end
    for k,t in ipairs(showntags) do
        if t == sel then
            return showntags[gears.math.cycle(#showntags,k + i)]
        end
    end
end

上面的函数可以像get_tag_at_offset(1)一样使用,以获取下一个标记,而前一个参数为-1。如果可能的话,我建议也通过第二个参数在屏幕上传递。

此外,所有这些都未经测试,只是当场编写。这里很可能有错别字和其他错误。