如何在 AwesomeWM 中隐藏所有标签中的所有客户端?

How to hide all clients in all tags in AwesomeWM?

我正在尝试向我的 rc.lua 添加一个隐藏(或最小化)AwesomeWM 中所有标签中的所有客户端的功能,就像在 Windows 中使用 Aero Peek 或在 GNOME 中所做的一样使用 'Show Desktop' extension(分别在图像上看到):

基本上我正在寻找 Lua 代码片段,我认为它应该如下所示:

awful.key({ modkey }, "l",
                  function ()
                     -- for every client in AwesomeWM...
                     myscreen.client.visible = false,       
                  end
end,

请注意,这只是一个假设,此代码有效。这是我最初认为答案可能的框架,添加是为了澄清目的。

技术资料:

awesome v4.0-170-g6c24848-dirty (Harder, Better, Faster, Stronger)
 • Compiled against Lua 5.3.3 (running with Lua 5.3)
 • D-Bus support: ✔
 • execinfo support: ✔
 • xcb-randr version: 1.5
 • LGI version: 0.9.2

一些变体:

mouse.screen.selected_tag.selected = false

会起作用的。如果选择支持多选标签,那么for _, t in ipairs(mouse.screen.selected_tags) do t.selected = false end会更好。如果您选择在所有屏幕上显示桌面,那么您也需要循环显示它们。您还可以保存之前选择的标签,以便在您点击按钮两次时恢复它们。

相关API 文档:

这将绑定 super+a 查看所有标签和 super+d 查看 none:

globalkeys = awful.util.table.join( -- for reference
...
awful.key({ modkey,           }, "a",      function ()
                                              local tags = awful.screen.focused().tags
                                              for i = 1, 9 do
                                                tags[i].selected = true
                                              end
                                            end,
          {description="show all tags", group="tag"}),
awful.key({ modkey,           }, "d",      function ()
                                              local tags = awful.screen.focused().tags
                                              for i = 1, 9 do
                                                tags[i].selected = false
                                              end
                                            end,
          {description="show no tags", group="tag"}),
...