首页 > 解决方案 > 获取下一个和上一个标签 (AwesomeWM)

问题描述

有没有办法在 AwesomeWM Lua Config 中获取下一个或上一个标签?

原因:- 我想获取下一个或上一个标签以将重点客户标签设置为它,然后移动到该标签。我知道有 awesome.tag.viewnext 移动到下一个标签,但不确定如何获取它将移动到的标签以在客户端上设置它。提前致谢

标签: awesome-wm

解决方案


嗯......是的,有一种方法,但没有一种完全微不足道的方法。

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

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

awful.tag.viewnext那么,如何viewprev获取下一个标签呢?这些函数只调用viewidx1idx或 -1,例如:

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前一个标签的参数。在可能的情况下,我建议也通过第二个参数传入一个屏幕。

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


推荐阅读