dots/.config/awesome/ui/decorations/titlebar.lua

85 lines
2.4 KiB
Lua

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)