如何在 theme.lua/rc.lua 中禁用窗口边框 (AwesomeWM)

我正在尝试编辑我的 .config/awesome/theme.lua.config/theme/rc.lua 文件,以用于 AwesomeWM。我在 theme.lua 文件中有以下几行:

theme.border_width = dpi(5)
theme.border_normal = "#14ff1b"
theme.border_focus = "#00158f"

它完美地工作 - 非激活窗口有柠檬绿色的边框,而激活窗口有蓝色的边框。问题在于,我也运行了 polybar (在删除默认栏的 rc.lua 行之后) ,并且在 rc.lua 中像这样启动 (在 AwesomeWM 重新加载后从 .xinitrc 中启动):

awful.spawn.with_shell("killall -q polybar") -- 重新加载所需
awful.spawn.with_shell("polybar mybar") -- mybar 是 `.config/polybar/config` 中的栏的名称

这将永久给我一个讨厌的绿色边框围绕 polybar,我的问题是我想要去掉它。我尝试在上面的行之前在 rc.lua 中添加以下代码:

ruled.client.append_rule {
    rule = { class = "polybar" },
    properties = { client.border_width = 0 }
}

但这并没有起作用。我在 Reddit 和 AwesomeWM 文档中查找了信息,但这是我能想到的最好的方法,它没有起作用。如果可以的话,有人知道我怎么能做到这一点吗 (删除 Polybar 烦人的 5dp 边框,同时在其他基本上所有内容中保留它) 。

另外,我尝试将其更改为 client.border_width = xresources.apply_dpi(0) ,因为默认的 theme.lua 文件将 dpi() 设置为 xresources.apply_dpi() 并将边框宽度设置为 dpi(2)(我将其更改为 5),但这也没有起作用。

更新 1:我在 Reddit 上发布了这篇文章,在回应和更多文档阅读之后,我写下了这篇文章,但仍然没有起作用:

{ rule = { class = "Polybar" },
    properties = { border_width = 0 } }

我尝试用 "instance" 和 "name" 替换 "class" (不确定它们的区别),并尝试使用大小写字母 "Polybar" 和 "polybar",但这些都没有起作用。

点赞
用户12786846
用户12786846

在你的 rc.lua 中尝试这样做,对我有效:

ruled.client.connect_signal("request::rules", function()
    ...
    ...
    ruled.client.append_rule {
        id = "Polybar",
        rule_any = {
            class = {"Ploybar"}
        },
        properties = {
            border_width = 0,
        }
    }
    ...
    ...
}
2021-08-17 16:17:54
用户15291338
用户15291338

好的,我已经想出了解决方法。我在 Reddit 上发布了一篇帖子,从中得到了两条有用的信息:

  • 由于我不使用 Nightly 版本,我不能使用 ruled. ,而应该使用 awful.rules.
  • "Polybar" 也许能用,而 "polybar" 也许不能用。

所以,解决方案如下:

rc.lua 中的某个点,您会看到以下内容:

awful.rules.rules = {
    { rule = { },
      properties = { border_width = beautiful.border_width,
                     border_color = beautiful.border_normal,
                     focus = awful.client.focus.filter,
                     raise = true,
                     keys = clientkeys,
                     buttons = clientbuttons,
                     screen = awful.screen.preferred,
                     placement = awful.placement.no_overlap+awful.placement.no_offscreen
      }
    }
    ...

那设置了所有应用程序的一堆东西。然后,我注释掉了这行代码中的这一部分:

      properties = { -- border_width = beautiful.border_width,

这样就会去掉边框宽度,也就没有边框了。然后,我在下面添加了一个单独的部分,除了 Polybar 之外,将边框宽度添加到所有东西中:

    { rule = { },
      except_any = { class = { "Polybar" } },
      properties = { border_width = beautiful.border_width }
    },

如果将来我想从其他应用程序中删除边框,可以这样做:

except_any = { class = { "Polybar", "OtherApp1", "OtherApp2", "OtherApp3" } },
2021-08-22 14:12:41