aboutsummaryrefslogtreecommitdiff
path: root/.config/awesome/ui/decorations/titlebar.lua
blob: 9463dbcf9ed950d7a15b1edb439a2909f7c17cf7 (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
75
76
77
78
79
80
81
82
83
84
local awful = require "awful"
local qvars = require "quarrel.vars"
local gears = require "gears"
local wibox = require "wibox"
local rubato = require "lib.rubato"
local cfg = require "misc.cfg"

local function button(color, color_focus, callback)
    local widget = wibox.widget {
        widget = wibox.container.background,
        forced_height = qvars.button_size,
        forced_width = qvars.button_size,
        bg = color,
        shape = qvars.shape,
        buttons = { callback }
    }

    widget:connect_signal("mouse::enter", function()
        local timed = rubato.timed {
            duration = 0.1,
            intro = 0.05,
            pos = qvars.button_size,
            subscribed = function(pos)
                widget.forced_width = pos
            end
        }

        timed.target = qvars.button_size * 2
        widget.bg = color_focus
    end)

    widget:connect_signal("mouse::leave", function()
        local timed = rubato.timed {
            duration = 0.1,
            intro = 0.05,
            pos = qvars.button_size * 2,
            subscribed = function(pos)
                widget.forced_width = pos
            end
        }

        timed.target = qvars.button_size
        widget.bg = color
    end)

    return widget
end

client.connect_signal("request::titlebars", function(c)
    if not cfg.draw_titlebar then return end

    local titlebar =  awful.titlebar(c, { 
        position = "top",
        size = qvars.button_size + qvars.padding * 2
    })

    awful.titlebar.enable_tooltip = false

    titlebar.widget = {
        widget = wibox.container.margin,
        margins = qvars.padding,
        {
            nil,
            nil,
            {
                button(qvars.colors.green, qvars.colors.bright.green, awful.button({}, 1, function()
                    c.maximized = not c.maximized
                end)),
                button(qvars.colors.yellow, qvars.colors.bright.yellow, awful.button({}, 1, function()
                    gears.timer.delayed_call(function()
                        c.minimized = true
                    end) 
                end)),
                button(qvars.colors.red, qvars.colors.bright.red, awful.button({}, 1, function()
                    c:kill()
                end)),

                spacing = qvars.padding,
                layout = wibox.layout.fixed.horizontal
            },
            layout = wibox.layout.align.horizontal
        }
    }
end)