【问题标题】:Get Next and Previous Tags (AwesomeWM)获取下一个和上一个标签 (AwesomeWM)
【发布时间】:2020-09-08 22:50:37
【问题描述】:

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

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

【问题讨论】:

    标签: awesome-wm


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-23
      • 2015-04-24
      • 1970-01-01
      • 1970-01-01
      • 2017-07-02
      • 2011-08-26
      相关资源
      最近更新 更多