标题栏中的滑块小部件
slider widget in titlebars
我想在每个客户端的标题栏中放置一个滑块,以便控制其不透明度。
在官方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 似乎没有正确传递给函数。
谢谢你帮助我
大卫
添加 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
,但它没有将客户端作为其第一个参数。
我想在每个客户端的标题栏中放置一个滑块,以便控制其不透明度。
在官方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 似乎没有正确传递给函数。
谢谢你帮助我
大卫
添加 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
,但它没有将客户端作为其第一个参数。