Как отключить границу окна в theme.lua/rc.lua (AwesomeWM)

#lua #border #awesome-wm

Вопрос:

Я пытаюсь отредактировать свои .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 (он неуместен, когда я запускаю его .xinitrc после перезагрузки AwesomeWM):

 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, но это лучшее, что я мог придумать, и это не работает. Кто-нибудь знает, как я могу это сделать, если я вообще могу это сделать (удалите неприятную границу 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 } }
 

Я попытался заменить «класс» на «экземпляр» и «имя» (не совсем уверен, в чем разница), и я попытался использовать как заглавную «Полибар», так и строчную «полибар», но это не сработало.

Ответ №1:

Попробуйте что-нибудь подобное в вашем rc.lua, это работает для меня

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

Ответ №2:

Ладно, я все понял. Я спросил об этом в посте reddit, и из этого я получил две полезные информации:

  • Поскольку я не использую nightly, я не могу использовать ruled., а скорее должен использовать ужасные правила.
  • «Полибар» может работать, а «полибар» — нет.

Итак, для решения:

В какой-то момент 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,
 

Затем это удалило ширину границы и, следовательно, границу. Затем я ниже добавил отдельную часть, которая добавляет ширину границы ко всему, кроме полибара:

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

В случае, если я захочу удалить границу с чем-либо еще в будущем, я могу сделать это так:

 except_any = { class = { "Polybar", "OtherApp1", "OtherApp2", "OtherApp3" } },