luca-awesome-dotfiles/home/.config/awesome/widgets/clickable-container.lua
2022-11-22 13:25:44 +01:00

64 lines
1.2 KiB
Lua

-- ## Clickable Container ##
-- ~~~~~~~~~~~~~~~~~~~~~~~~~
-- requirements
-- ~~~~~~~~~~~~
local wibox = require('wibox')
local beautiful = require('beautiful')
local create_click_events = function(widget)
local container = wibox.widget {
widget,
widget = wibox.container.background
}
-- Old and new widget
local old_cursor, old_wibox
-- Mouse hovers on the widget
container:connect_signal(
'mouse::enter',
function()
container.bg = beautiful.groups_bg
-- Hm, no idea how to get the wibox from this signal's arguments...
local w = mouse.current_wibox
if w then
old_cursor, old_wibox = w.cursor, w
w.cursor = 'hand1'
end
end
)
-- Mouse leaves the widget
container:connect_signal(
'mouse::leave',
function()
container.bg = beautiful.leave_event
if old_wibox then
old_wibox.cursor = old_cursor
old_wibox = nil
end
end
)
-- Mouse pressed the widget
container:connect_signal(
'button::press',
function()
container.bg = beautiful.press_event
end
)
-- Mouse releases the widget
container:connect_signal(
'button::release',
function()
container.bg = beautiful.release_event
end
)
return container
end
return create_click_events