Я создаю виджет, чтобы указать использование процессора в процентах. Виджет представляет собой график с текстовым полем, нарисованным поверх него. Поскольку текст имеет тот же цвет, что и график, я хочу дать тексту фон. Итак, я попробовал что-то вроде этого:
cpu_graph = wibox.widget {
widget = wibox.widget.graph,
width = 40,
}
vicious.cache(vicious.widgets.cpu)
vicious.register(cpu_graph, vicious.widgets.cpu, "$1", 2)
cpu_text = wibox.widget {
align = 'center',
widget = wibox.widget.textbox
}
vicious.register(cpu_text, vicious.widgets.cpu, "$1%", 2)
cpu_txt_bg = wibox.container.background(
cpu_text,
'#ff0000',
gears.shape.rectangle
)
cpu_graph_s = wibox.widget {
wibox.container.mirror(cpu_graph, { horizontal = true }),
cpu_txt_bg,
layout = wibox.layout.stack
}
К сожалению, кажется, что фон покрывает весь график следующим образом:
Я предполагаю, что это связано с тем, что текстовое поле имеет тот же размер, что и график, поэтому я думаю, что размер текстового поля должен быть изменен, чтобы соответствовать только его содержимому.
Используя маржинальный контейнер, я получаю то, что хочу:
cpu_graph_s = wibox.widget {
wibox.container.mirror(cpu_graph, { horizontal = true }),
wibox.container.margin(cpu_txt_bg, 12, 12, 5, 5)
layout = wibox.layout.stack
}
Результат намного лучше:
К сожалению, это, кажется, изменяет размер всего графика, когда размер текста изменяется:
Есть ли лучшее решение для изменения размера текстового поля без изменения размера всего графика?