如何禁用主题中的 window 边框。lua/rc.lua (AwesomeWM)

How do I disable the window border in theme.lua/rc.lua (AwesomeWM)

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

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

效果非常好 - 非活动 window(s) 上的灰绿色边框和活动 window 上的蓝色边框。问题是我也是 运行 polybar(在删除默认栏的 rc.lua 行之后)并在 rc.lua 中像这样启动它(当我在 AwesomeWM 重新加载后从 .xinitrc 启动它:

awful.spawn.with_shell("killall -q polybar") -- necesarry for a reload
awful.spawn.with_shell("polybar mybar") -- mybar is the name of the bar in `.config/polybar/config`

这使我在多边形栏周围永久出现令人讨厌的绿色边框,我的问题是我想删除它。我试着把它放在上面几行之前的 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”,但是那些没用。

在你的rc.lua中试试这样的东西,它对我有用

ruled.client.connect_signal("request::rules", function()
    ...
    ...
    ruled.client.append_rule {
        id = "Polybar",
        rule_any = {
            class = {"Ploybar"}
        },
        properties = {
            border_width = 0,
        }
    }
    ...
    ...
}

好的,所以我明白了。我在 reddit post 上提问,我从中得到了两条有用的信息:

  • 因为我不使用 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" } },