add option for anti-aliased rounded corners

This commit is contained in:
BZ 2020-06-25 14:35:19 +02:00
parent ac43692a2f
commit dc2adb634b
2 changed files with 25 additions and 5 deletions

View File

@ -10,6 +10,7 @@ Features:
- Full titlebar functionality without sacrificing space
- Improved mouse controls
- Custom client menu
- Anti-aliased rounded corners
- Various configuration options
- Easy installation
@ -53,6 +54,7 @@ Customization:
| `button_positions` | { "top" } | button positions |
| `buttons` | { "floating", "minimize", "maximize", "close" } | possible values: { "floating", "minimize", "maximize", "close", "sticky", "top" } |
| `border_width` | dpi(6) | width of border |
| `rounded_corner` | dpi(0) | border radius of rounded corners |
| `show_button_tooltips` | false | show a tooltip on button mouse over |
| `show_title_tooltips` | false | show a tooltip of client title on border mouse over (might cause issues when sloppy focus mode (focus follows mouse) is enabled) |
| `align_horizontal` | "right" | alignment of buttons on top and bottom positions. possible values: { "left", "center", "right" } |
@ -102,7 +104,6 @@ require("smart_borders"){
buttons = { "floating", "minimize", "maximize", "close" },
layout = "fixed",
button_ratio = 0.3,
align_horizontal = "center",
button_size = 40,
button_floating_size = 60,
@ -154,4 +155,3 @@ require("smart_borders"){
}
```

View File

@ -135,11 +135,26 @@ function module.menu_client(c)
return list
end
local rounded_corner_shape = function(radius, position)
if position == "bottom" then
return function(cr, width, height)
gears.shape.partially_rounded_rect(cr, width, height, false, false, true, true, radius)
end
elseif position == "top" then
return function(cr, width, height)
gears.shape.partially_rounded_rect(cr, width, height, true, true, false, false, radius)
end
end
return nil
end
local function new(config)
local cfg = config or {}
local positions = cfg.positions or { "left", "right", "top", "bottom" }
local button_positions = cfg.button_positions or { "top" }
local border_width = cfg.border_width or dpi(6)
local rounded_corner = cfg.rounded_corner or nil
local color_normal = cfg.color_normal or "#56666f"
local color_focus = cfg.color_focus or "#a1bfcf"
@ -375,7 +390,8 @@ local function new(config)
for _, pos in pairs(positions) do
local tb = awful.titlebar(c, {
size = border_width,
position = pos
position = pos,
bg = "#00000000"
})
local btn_layout
@ -429,7 +445,9 @@ local function new(config)
tb:setup{
titlebar_widget,
layout = wibox.layout.stack
bg = "#00000000",
shape = rounded_corner and rounded_corner_shape(rounded_corner, pos) or nil,
widget = wibox.container.background()
}
local ratio_button_layout = wibox.widget.base.make_widget_declarative({
@ -521,7 +539,9 @@ local function new(config)
else
tb:setup{
border_bg,
layout = wibox.layout.stack
bg = "#00000000",
shape = rounded_corner and rounded_corner_shape(rounded_corner, pos) or nil,
widget = wibox.container.background
}
end
end