我想在每个客户端的标题栏中放置一个滑块,以便控制其不透明度
在官方的rc.lua中,在标题栏配置中我们可以找到:
awful.titlebar.widget.floatingbutton(c)
所以客户的id被发送到小部件
我想到了类似下面的代码:
local MAX = 1
local MIN = 0
--
-- le widget slider
opaciteControle = wibox.widget {
--forced_width = 100,
bar_shape = gears.shape.rounded_rect,
bar_height = 1,
bar_color = beautiful.border_color,
--handle_color = beautiful.bg_normal,
handle_color = "#FFFFFF",
handle_shape = gears.shape.circle,
handle_border_color = beautiful.border_color,
handle_border_width = 1,
minimum = MIN,
maximum = MAX,
value = .8,
widget = wibox.widget.slider,
}
-- le widget text
opaciteTexte = wibox.widget {
text = "opacite",
align = "center",
widget = wibox.widget.textbox,
}
-- le widget à afficher
opacite = wibox.widget {
opaciteTexte,
opaciteControle,
vertical_offset=5,
layout=wibox.layout.stack
}
-- actualisation
opaciteControle:connect_signal("widget::redraw_needed", function(c)
local v=opaciteControle.value
--
c.opacity=v
end)
最后在标题栏的布局中插入这个小部件,但这个小部分不起作用;客户端的ID似乎没有正确传递给函数。
感谢您帮助我 大卫
答案 0 :(得分:1)
添加opacity_button(c),
,例如在配置中awful.titlebar.widget.floatingbutton(c),
之前。前面某处将以下内容添加到您的配置中:
local function opacity_button(c)
local SCALE = 100
local slider = wibox.widget {
--forced_width = 100,
bar_shape = gears.shape.rounded_rect,
bar_height = 1,
bar_color = beautiful.border_color,
--handle_color = beautiful.bg_normal,
handle_color = "#FFFFFF",
handle_shape = gears.shape.circle,
handle_border_color = beautiful.border_color,
handle_border_width = 1,
minimum = 0,
maximum = SCALE,
value = c.opacity * SCALE,
widget = wibox.widget.slider,
}
c:connect_signal("property::opacity", function()
slider.value = c.opacity * SCALE
end)
slider:connect_signal("property::value", function()
c.opacity = slider.value / SCALE
end)
-- Wrap other widgets around slider here if you want,
-- e.g. your stack widget and the textbox
local result = slider
return slider
end
我不知道你为什么使用widget::redraw_signal
信号。而是使用滑块的property::value
信号。此外,如果客户端的不透明度通过某些外部手段(即此小部件外部)发生更改,此小部件会更新滑块。
哦和:这会将窗口小部件的值缩放100,因为滑块窗口小部件只生成整数值(至少在我的测试中)。
请注意,此代码将客户端对象传递给窗口小部件的方式与例如浮动按钮:作为信号连接功能的升值。我不知道你是如何找到widget::redraw_needed
的,但它没有将客户端作为它的第一个参数。