local wibox = require('wibox') local gears = require('gears') local awful = require('awful') local beautiful = require('beautiful') local dpi = beautiful.xresources.apply_dpi local start_up = true local icons = require('theme.icons') local slider = wibox.widget { nil, { id = 'blur_strength_slider', bar_shape = gears.shape.rounded_rect, bar_height = dpi(2), bar_color = '#ffffff20', bar_active_color = '#f2f2f2EE', handle_color = '#ffffff', handle_shape = gears.shape.circle, handle_width = dpi(15), handle_border_color = '#00000012', handle_border_width = dpi(1), maximum = 100, widget = wibox.widget.slider, }, nil, expand = 'none', layout = wibox.layout.align.vertical } local blur_slider = slider.blur_strength_slider local update_slider_value = function() awful.spawn.easy_async_with_shell( [[bash -c " grep -F 'strength =' $HOME/.config/awesome/configuration/picom.conf | awk 'NR==1 {print $3}' | tr -d ';' "]], function(stdout, stderr) local strength = stdout:match('%d+') blur_strength = tonumber(strength) / 20 * 100 blur_slider:set_value(tonumber(blur_strength)) start_up = false end ) end update_slider_value() local adjust_blur = function(power) awful.spawn.with_shell( [[bash -c " sed -i 's/.*strength = .*/ strength = ]] .. power .. [[;/g' \ $HOME/.config/awesome/configuration/picom.conf "]] ) end blur_slider:connect_signal( 'property::value', function() if not start_up then strength = blur_slider:get_value() / 50 * 10 adjust_blur(strength) end end ) -- Adjust slider value to change blur strength awesome.connect_signal( 'widget::blur:increase', function() -- On startup, the slider.value returns nil so... if blur_slider:get_value() == nil then return end local blur_value = blur_slider:get_value() + 10 -- No more than 100! if blur_value > 100 then blur_slider:set_value(100) return end blur_slider:set_value(blur_value) end ) -- Decrease blur awesome.connect_signal( 'widget::blur:decrease', function() -- On startup, the slider.value returns nil so... if blur_slider:get_value() == nil then return end local blur_value = blur_slider:get_value() - 10 -- No negatives! if blur_value < 0 then blur_slider:set_value(0) return end blur_slider:set_value(blur_value) end ) local blur_slider_setting = wibox.widget { { { { image = icons.effects, resize = true, widget = wibox.widget.imagebox }, top = dpi(12), bottom = dpi(12), widget = wibox.container.margin }, slider, spacing = dpi(24), layout = wibox.layout.fixed.horizontal }, left = dpi(24), right = dpi(24), forced_height = dpi(48), widget = wibox.container.margin } return blur_slider_setting