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)