1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
local awful = require "awful"
local beautiful = require "beautiful"
local gtimer = require "gears.timer"
local phosphor = require "assets.phosphor"
local qmath = require "quarrel.math"
local qui = require "quarrel.ui"
local qvars = require "quarrel.vars"
local rubato = require "lib.rubato"
local wibox = require "wibox"
-- local mpris_widget = require "ui.osd.mpris"
local osd = {}
local widget = awful.popup(qui.styled {
ontop = true,
visible = true,
placement = function(d)
awful.placement.top(d, {
margins = {
top = beautiful.useless_gap * 2,
},
})
end,
minimum_height = qui.CHAR_HEIGHT * 3,
-- widget = mpris_widget
-- minimum_width = awful.screen.focused().geometry.width / 2,
-- widget = {
-- {
-- widget = wibox.container.place,
--
-- qui.icon {
-- icon = phosphor.speaker_simple_none_fill,
-- widget = {
-- forced_height = qui.CHAR_HEIGHT * 1.2,
-- forced_width = qui.CHAR_HEIGHT * 1.2,
-- id = "icon",
-- },
-- },
-- },
-- {
-- widget = wibox.container.place,
-- {
-- widget = wibox.widget.progressbar,
-- max_value = 100,
-- value = 20,
-- forced_height = qui.CHAR_HEIGHT / 1.5,
-- forced_width = qvars.expanded_bar_size
-- - (qui.BIG_PADDING + qui.BIG_PADDING * 2 + qui.PADDING * 2)
-- - (qui.CHAR_HEIGHT / 1.25 + qui.PADDING) * 3,
-- color = qcolor.palette.yellow(),
-- background_color = qcolor.palette.border.variant,
-- shape = qui.shape,
-- id = "progress",
-- },
-- },
--
-- {
-- widget = wibox.widget.textbox,
-- text = "20%",
-- font = qui.font(1.2),
-- id = "percentage",
-- },
-- layout = wibox.layout.fixed.horizontal,
-- spacing = qui.BIG_PADDING,
-- },
})
local timer
local anim = rubato.timed {
duration = qvars.anim_duration,
intro = qvars.anim_intro,
pos = 1,
subscribed = function(pos)
widget.opacity = pos
if pos == 0 then
widget.visible = false
elseif not widget.visible then
widget.visible = true
elseif pos == 1 then
-- timer:start()
end
end,
}
timer = gtimer {
timeout = 1,
callback = function()
-- anim.target = 0
end,
single_shot = true,
}
function osd.notify(icon, value, max)
anim.target = 1
widget:get_children_by_id("icon")[1].image = icon
widget:get_children_by_id("progress")[1].value = value
widget:get_children_by_id("progress")[1].max_value = max
widget:get_children_by_id("percentage")[1].text = tostring(qmath.percentage(value, max)) .. "%"
end
return osd
|