AwesomeWM中使用Vicious创建垂直内存进度条失效求助
AwesomeWM 垂直内存进度条失效问题解决
问题描述
在AwesomeWM 3.x版本中,使用memwidget:set_vertical(true)可正常实现垂直内存使用率进度条。尝试在新版本中用以下代码复刻效果时,组件始终显示横向进度条,完全忽略旋转设置:
memwidget = wibox.widget.progressbar() membox = wibox.widget { { forced_height = 100, forced_width = 20, max_value = 1, widget = memwidget, border_width = 0.5, border_color = "#000000", background_color = "#494B4F", color = { type = "linear", from = { 0, 0 }, to = { 0, 30 }, stops = { { 0, "#AECF96" }, { 1, "#FF5656" }, }, }, }, direction = 'east', layout = wibox.container.rotate, } -- Register mem widget vicious.register(memwidget, vicious.widgets.mem, "$1", 11) ... awful.screen.connect_for_each_screen(function(s) ... local right_layout = wibox.layout.fixed.horizontal() right_layout:add(memwidget)
核心错误与解决方法
- 核心错误:你将未经过旋转容器包裹的原始
memwidget添加到了布局中,而非包含旋转设置的membox,导致旋转配置完全未生效。 - 直接修正步骤:
- 修改布局添加的对象,将
right_layout:add(memwidget)改为right_layout:add(membox)。 - 可选调整:
direction = 'east'会生成从下到上的垂直进度条,若需要从上到下的样式,可将方向改为west。
- 修改布局添加的对象,将
优化后的代码示例
可以简化代码结构,直接把进度条配置内联到旋转容器中,避免变量混淆:
membox = wibox.widget { { forced_height = 100, forced_width = 20, max_value = 1, border_width = 0.5, border_color = "#000000", background_color = "#494B4F", color = { type = "linear", from = { 0, 0 }, to = { 0, 100 }, -- 渐变终点高度与进度条高度匹配,视觉更协调 stops = { { 0, "#AECF96" }, { 1, "#FF5656" }, }, }, widget = wibox.widget.progressbar, }, direction = 'east', layout = wibox.container.rotate, } -- 注册时指向旋转容器内的进度条组件 vicious.register(membox.widget, vicious.widgets.mem, "$1", 11) -- 布局添加时使用membox awful.screen.connect_for_each_screen(function(s) ... local right_layout = wibox.layout.fixed.horizontal() right_layout:add(membox)
内容的提问来源于stack exchange,提问作者Daks
相关产品推荐
相关产品推荐

