add new calendar widget with ics file support, fix some bugs and added some game rules so steam games fullscreen isn't as annoying

This commit is contained in:
Rene
2022-08-29 11:06:38 +02:00
parent f2e6709f6b
commit e5cdb33eec
27 changed files with 1804 additions and 121 deletions

View File

@@ -95,9 +95,6 @@ tag.connect_signal(
---@param icon_override_hover string | nil the hover effect color
function Hover_signal(widget, bg_override, fg_override, border_override, icon_override, icon_override_hover)
local old_wibox, old_cursor, old_bg, old_fg, old_border
local r, g, b
widget.bg = widget.bg or "#000000"
widget.fg = widget.fg or "#000000"
widget.border_color = widget.border_color or "#000000"
@@ -107,62 +104,72 @@ function Hover_signal(widget, bg_override, fg_override, border_override, icon_ov
widget.icon = widget:get_children_by_id("icon")[1]
end
--[[ local r_timed_bg = rubato.timed { duration = 0.5 }
local g_timed_bg = rubato.timed { duration = 0.5 }
local b_timed_bg = rubato.timed { duration = 0.5 }
local _, rb, gb, bb = widget.bg:get_rgba()
local _, rf, gf, bf = widget.fg:get_rgba()
local rbo, gbo, bbo = color.utils.hex_to_rgba(widget.border_color)
local r_timed_bg = rubato.timed { duration = 0.3, pos = math.floor(rb * 255) }
local g_timed_bg = rubato.timed { duration = 0.3, pos = math.floor(gb * 255) }
local b_timed_bg = rubato.timed { duration = 0.3, pos = math.floor(bb * 255) }
local r_timed_fg = rubato.timed { duration = 0.3, pos = math.floor(rf * 255) }
local g_timed_fg = rubato.timed { duration = 0.3, pos = math.floor(gf * 255) }
local b_timed_fg = rubato.timed { duration = 0.3, pos = math.floor(bf * 255) }
local r_timed_border = rubato.timed { duration = 0.3, pos = math.floor(rbo) }
local g_timed_border = rubato.timed { duration = 0.3, pos = math.floor(gbo) }
local b_timed_border = rubato.timed { duration = 0.3, pos = math.floor(bbo) }
local function update_bg()
widget:set_bg("#" .. color.utils.rgba_to_hex { r_timed_bg.pos, g_timed_bg.pos, b_timed_bg.pos })
end
local function update_fg()
widget:set_fg("#" .. color.utils.rgba_to_hex { r_timed_fg.pos, g_timed_fg.pos, b_timed_fg.pos })
end
local function update_border()
widget:set_border_color("#" .. color.utils.rgba_to_hex { r_timed_border.pos, g_timed_border.pos, b_timed_border.pos })
end
r_timed_bg:subscribe(update_bg)
g_timed_bg:subscribe(update_bg)
b_timed_bg:subscribe(update_bg)
r_timed_fg:subscribe(update_fg)
g_timed_fg:subscribe(update_fg)
b_timed_fg:subscribe(update_fg)
r_timed_border:subscribe(update_border)
g_timed_border:subscribe(update_border)
b_timed_border:subscribe(update_border)
local function set_bg(newbg)
r_timed_bg.target, g_timed_bg.target, b_timed_bg.target = color.utils.hex_to_rgba(newbg)
end ]]
local mouse_enter = function()
_, r, g, b, _ = widget.bg:get_rgba()
old_bg = RGB_to_hex(r, g, b)
if bg_override or old_bg then
widget:set_bg(bg_override or old_bg .. "dd")
end
_, r, g, b, _ = widget.fg:get_rgba()
old_fg = RGB_to_hex(r, g, b)
if fg_override or old_fg then
widget:set_fg(fg_override or old_fg .. "dd")
end
old_border = widget.border_color
if border_override or old_border then
widget.border_color = border_override or old_border .. "dd"
end
if icon and widget.icon and icon_override and icon_override_hover then
widget.icon.image = gears.color.recolor_image(icon, icon_override_hover)
end
local w = mouse.current_wibox
if w then
old_cursor, old_wibox = w.cursor, w
w.cursor = "hand1"
end
r_timed_bg.target, g_timed_bg.target, b_timed_bg.target = newbg[1], newbg[2], newbg[3]
end
--[[ local button_press = function()
if old_bg or bg_override then
if bg_override then
bg_override = bg_override .. "bb"
end
widget.bg = bg_override or old_bg .. "bb"
end
if fg_override or old_fg then
if fg_override then
fg_override = fg_override .. "bb"
end
widget.fg = fg_override or old_fg .. "bb"
end
local function set_fg(newfg)
r_timed_fg.target, g_timed_fg.target, b_timed_fg.target = newfg[1], newfg[2], newfg[3]
end
local function set_border(newborder)
r_timed_border.target, g_timed_border.target, b_timed_border.target = newborder[1], newborder[2], newborder[3]
end
local _, rbg, gbg, bbg, abg = widget.bg:get_rgba()
old_bg = RGB_to_hex(rbg, gbg, bbg)
local _, rfg, gfg, bfg, afg = widget.fg:get_rgba()
old_fg = RGB_to_hex(rfg, gfg, bfg)
old_border = widget.border_color
local rborder, gborder, bborder = color.utils.hex_to_rgba(old_border)
local function match_hex(hex1, hex2)
local r1, g1, b1 = color.utils.hex_to_rgba(hex1)
local r2, g2, b2 = color.utils.hex_to_rgba(hex2)
return math.abs(r1 - r2) <= 100 and math.abs(g1 - g2) <= 100 and math.abs(b1 - b2) <= 100
end
--[[
local button_release = function()
if old_bg or bg_override then
if bg_override then
@@ -179,14 +186,18 @@ function Hover_signal(widget, bg_override, fg_override, border_override, icon_ov
end ]]
local mouse_leave = function()
if old_bg then
widget:set_bg(old_bg)
local r, g, b = color.utils.hex_to_rgba(old_bg)
set_bg({ r, g, b })
end
if old_fg then
widget:set_fg(old_fg)
local r, g, b = color.utils.hex_to_rgba(old_fg)
set_fg({ r, g, b })
end
if old_border then
widget.border_color = old_border
local r, g, b = color.utils.hex_to_rgba(old_border)
set_border({ r, g, b })
end
if old_wibox then
old_wibox.cursor = old_cursor
@@ -197,8 +208,76 @@ function Hover_signal(widget, bg_override, fg_override, border_override, icon_ov
end
end
local mouse_enter = function()
_, rbg, gbg, bbg, abg = widget.bg:get_rgba()
if not match_hex(RGB_to_hex(rbg, gbg, bbg), old_bg) then
old_bg = RGB_to_hex(rbg, gbg, bbg)
set_bg({ rbg * 0.9 * 255, gbg * 0.9 * 255, bbg * 0.9 * 255 })
end
if old_bg then
if bg_override then
rbg, gbg, bbg = color.utils.hex_to_rgba(bg_override)
set_bg({ rbg, gbg, bbg })
else
set_bg({ rbg * 0.9 * 255, gbg * 0.9 * 255, bbg * 0.9 * 255 })
end
end
_, rfg, gfg, bfg, afg = widget.fg:get_rgba()
if not match_hex(RGB_to_hex(rfg, gfg, bfg), old_fg) then
old_fg = RGB_to_hex(rfg, gfg, bfg)
set_fg({ rfg * 0.9 * 255, gfg * 0.9 * 255, bfg * 0.9 * 255 })
end
if fg_override or old_fg then
if fg_override then
rfg, gfg, bfg = color.utils.hex_to_rgba(fg_override)
set_fg({ rfg, gfg, bfg })
else
set_fg({ rfg * 0.9 * 255, gfg * 0.9 * 255, bfg * 0.9 * 255 })
end
end
if not match_hex(old_border, widget.border_color) then
old_border = widget.border_color
rborder, gborder, bborder = color.utils.hex_to_rgba(old_border)
end
if border_override or old_border then
if border_override then
rborder, gborder, bborder = color.utils.hex_to_rgba(border_override)
set_border({ rborder, gborder, bborder })
else
set_border({ rborder * 0.9, gborder * 0.9, bborder * 0.9 })
end
end
if icon and widget.icon and icon_override and icon_override_hover then
widget.icon.image = gears.color.recolor_image(icon, icon_override_hover)
end
local w = mouse.current_wibox
if w then
old_cursor, old_wibox = w.cursor, w
w.cursor = "hand1"
end
--widget:connect_signal("mouse::leave", mouse_leave)
end
local button_press = function()
--[[ if old_bg or bg_override then
if bg_override then
bg_override = bg_override .. "bb"
end
widget.bg = bg_override or old_bg .. "bb"
end
if fg_override or old_fg then
if fg_override then
fg_override = fg_override .. "bb"
end
widget.fg = fg_override or old_fg .. "bb"
end ]]
--widget:disconnect_signal("mouse::leave", mouse_leave)
end
widget:connect_signal("mouse::enter", mouse_enter)
--widget:connect_signal("button::press", button_press)
widget:connect_signal("button::press", button_press)
--widget:connect_signal("button::release", button_release)
widget:connect_signal("mouse::leave", mouse_leave)
end