aboutsummaryrefslogtreecommitdiff
path: root/.config/awesome/ui/flashy/init.lua
blob: 65f75184564545ac5f7b1f95ac7621bd9de5242f (plain)
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
local awful = require "awful"
local gtable = require "gears.table"
local gdebug = require "gears.debug"
local gcolor = require "gears.color"
local qui = require "quarrel.ui"
local qvars = require "quarrel.vars"
local wibox = require "wibox"
local phosphor = require "assets.phosphor"
local beautiful = require "beautiful"
local rubato = require "lib.rubato"

local flashy = {}
flashy._timeout_timer = {}

flashy._widget = qui.popup {
    placement = awful.placement.centered,
    ontop = true,
    minimum_width = qvars.button_size * 15,
    maximum_width = qvars.button_size * 15,
    minimum_height = qvars.button_size * 15,
    maximum_height = qvars.button_size * 15,
    visible = false,
    widget = {
        {
            widget = wibox.container.place,
            valign = "center",
            haligh = "center",
            -- widget = wibox.container.margin,
            -- margins = qvars.big_padding * 8,
            {
                widget = wibox.widget.imagebox,
                image = gcolor.recolor_image(phosphor.battery_warning, qvars.colors.fg),
                -- image = phosphor["battery_warning"],
                forced_width = qvars.button_size * 15 - (qvars.border_width * 2 + qvars.big_padding * 2),
                forced_height = qvars.button_size * 14 - (qvars.border_width * 2 + qvars.big_padding * 2)
            }
        },
        {
            widget = wibox.widget.progressbar,
            max_value = 100,
            value = 50,
            forced_height = qvars.button_size;
            shape = qvars.shape,
            color = qvars.colors.yellow,
            background_color = qvars.colors.black
        },
        layout = wibox.layout.fixed.vertical
    }
}

flashy._timed = rubato.timed {
    duration = qvars.anim_duration,
    intro = qvars.anim_intro,
    pos = 0,
    subscribed = function(pos)
        flashy._widget.opacity = pos

        if pos == 0 then
            flashy._widget.visible = false
        else
            flashy._widget.visible = true
        end
    end
}

function flashy:show()
    self._timed.target = 1
end

function flashy:hide()
    self._timed.target = 0
end

return flashy