nix-dots/darwin/sketchybar/config/items/notifications.lua

50 lines
1.2 KiB
Lua

local notification = sbar.add("item", "notifications", {
width = 0,
position = "center",
popup = {
drawing = true,
align = "center",
y_offset = -80,
},
})
local notification_popup = sbar.add("item", {
position = "popup." .. notification.name,
width = "dynamic",
icon = { drawing = false },
background = { drawing = false },
})
local function hide_notification()
sbar.animate("sin", 30, function()
notification:set({ popup = { y_offset = 2 } })
notification:set({ popup = { y_offset = -80 } })
end)
end
local function show_notification(content, hold)
hide_notification()
notification_popup:set({ label = { string = content } })
sbar.animate("sin", 30, function()
notification:set({ popup = { y_offset = -80 } })
notification:set({ popup = { y_offset = 2 } })
end)
if hold == false then
sbar.delay(5, function()
if hold then return end
hide_notification()
end)
end
end
notification:subscribe("send_message", function(env)
local content = env.MESSAGE
local hold = env.HOLD ~= nil and env.HOLD == "true" or false
show_notification(content, hold)
end)
notification:subscribe("hide_message", hide_notification)