Forgot what I did, probably some stuff
This commit is contained in:
6
.gitmodules
vendored
6
.gitmodules
vendored
@@ -1,3 +1,9 @@
|
||||
[submodule "awesome/src/lib/rubato"]
|
||||
path = awesome/src/lib/rubato
|
||||
url = https://github.com/andOrlando/rubato
|
||||
[submodule "awesome/src/lib/awesome/src/lib/color"]
|
||||
path = awesome/src/lib/awesome/src/lib/color
|
||||
url = https://github.com/andOrlando/color
|
||||
[submodule "awesome/src/lib/color"]
|
||||
path = awesome/src/lib/color
|
||||
url = https://github.com/andOrlando/color
|
||||
|
||||
@@ -12,6 +12,7 @@ require("src.theme.theme_config")
|
||||
require("src.tools.gio_icon_lookup")
|
||||
require("src.theme.init")
|
||||
require("src.core.error_handling")
|
||||
require("src.tools.hex_to_rgba")
|
||||
require("src.core.signals")
|
||||
require("src.core.notifications")
|
||||
require("src.core.rules")
|
||||
@@ -19,6 +20,5 @@ require("src.bindings.global_buttons")
|
||||
require("src.bindings.bind_to_tags")
|
||||
require("src.modules.init")
|
||||
require("src.tools.helpers.init")
|
||||
require("src.tools.hex_to_rgba")
|
||||
require("src.tools.auto_starter")(User_config.autostart)
|
||||
require("src.tools.dbus.bluetooth_dbus")()
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#00000000">
|
||||
<path fill="#f5f5f5" d="M18,18H6V6H18M18,4H6C4.9,4 4,4.9 4,6V18C4,19.1 4.9,20 6,20H18C19.1,20 20,19.1 20,18V6C20,4.89 19.1,4 18,4Z" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 205 B After Width: | Height: | Size: 249 B |
@@ -4,6 +4,8 @@ local awful = require("awful")
|
||||
local hotkeys_popup = require("awful.hotkeys_popup")
|
||||
local ruled = require("ruled")
|
||||
|
||||
local json = require("src.lib.json-lua.json-lua")
|
||||
|
||||
local modkey = User_config.modkey
|
||||
|
||||
awful.keygrabber {
|
||||
@@ -306,36 +308,54 @@ return gears.table.join(
|
||||
{ modkey },
|
||||
"#22",
|
||||
function()
|
||||
awful.spawn.easy_async_with_shell(
|
||||
[[xprop | grep WM_CLASS | awk '{gsub(/"/, "", $4); print $4}']],
|
||||
function(stdout)
|
||||
if stdout then
|
||||
mousegrabber.run(
|
||||
function(m)
|
||||
if m.buttons[1] then
|
||||
|
||||
local handler = io.open("/home/crylia/.config/awesome/src/config/floating.json", "r")
|
||||
if not handler then return end
|
||||
local data_table = json:decode(handler:read("a")) or {}
|
||||
handler:close()
|
||||
|
||||
if type(data_table) ~= "table" then return end
|
||||
|
||||
local c = mouse.current_client
|
||||
if not c then return end
|
||||
|
||||
local client_data = {
|
||||
WM_NAME = c.name,
|
||||
WM_CLASS = c.class,
|
||||
WM_INSTANCE = c.instance,
|
||||
}
|
||||
|
||||
-- Check if data_table already had the client then return
|
||||
for _, v in ipairs(data_table) do
|
||||
if v.WM_NAME == client_data.WM_NAME and
|
||||
v.WM_CLASS == client_data.WM_CLASS and
|
||||
v.WM_INSTANCE == client_data.WM_INSTANCE then
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
table.insert(data_table, client_data)
|
||||
|
||||
ruled.client.append_rule {
|
||||
rule = { class = stdout:gsub("\n", "") },
|
||||
rule = { class = c.class, instance = c.instance },
|
||||
properties = {
|
||||
floating = true
|
||||
},
|
||||
}
|
||||
awful.spawn.easy_async_with_shell(
|
||||
"cat ~/.config/awesome/src/assets/cache/rules.txt",
|
||||
function(stdout2)
|
||||
for class in stdout2:gmatch("%a+") do
|
||||
if class:match(stdout:gsub("\n", "")) then
|
||||
return
|
||||
end
|
||||
end
|
||||
awful.spawn.with_shell("echo -n '" ..
|
||||
stdout:gsub("\n", "") .. ";' >> ~/.config/awesome/src/assets/cache/rules.txt")
|
||||
local c = mouse.screen.selected_tag:clients()
|
||||
for _, client in ipairs(c) do
|
||||
if client.class:match(stdout:gsub("\n", "")) then
|
||||
client.floating = true
|
||||
end
|
||||
end
|
||||
end
|
||||
)
|
||||
end
|
||||
c.floating = true
|
||||
|
||||
handler = io.open("/home/crylia/.config/awesome/src/config/floating.json", "w")
|
||||
if not handler then return end
|
||||
handler:write(json:encode(data_table))
|
||||
handler:close()
|
||||
mousegrabber.stop()
|
||||
end
|
||||
return true
|
||||
end,
|
||||
"crosshair"
|
||||
)
|
||||
end
|
||||
),
|
||||
@@ -343,33 +363,51 @@ return gears.table.join(
|
||||
{ modkey, "Shift" },
|
||||
"#22",
|
||||
function()
|
||||
awful.spawn.easy_async_with_shell(
|
||||
[[xprop | grep WM_CLASS | awk '{gsub(/"/, "", $4); print $4}']],
|
||||
function(stdout)
|
||||
if stdout then
|
||||
ruled.client.append_rule {
|
||||
rule = { class = stdout:gsub("\n", "") },
|
||||
mousegrabber.run(
|
||||
function(m)
|
||||
if m.buttons[1] then
|
||||
|
||||
local handler = io.open("/home/crylia/.config/awesome/src/config/floating.json", "r")
|
||||
if not handler then return end
|
||||
local data_table = json:decode(handler:read("a")) or {}
|
||||
handler:close()
|
||||
|
||||
if type(data_table) ~= "table" then return end
|
||||
|
||||
local c = mouse.current_client
|
||||
if not c then return end
|
||||
|
||||
local client_data = {
|
||||
WM_NAME = c.name,
|
||||
WM_CLASS = c.class,
|
||||
WM_INSTANCE = c.instance,
|
||||
}
|
||||
|
||||
-- Remove client_data from data_table
|
||||
for k, v in ipairs(data_table) do
|
||||
if v.WM_CLASS == client_data.WM_CLASS and
|
||||
v.WM_INSTANCE == client_data.WM_INSTANCE then
|
||||
table.remove(data_table, k)
|
||||
ruled.client.remove_rule {
|
||||
rule = { class = c.class, instance = c.instance },
|
||||
properties = {
|
||||
floating = false
|
||||
floating = true
|
||||
},
|
||||
}
|
||||
awful.spawn.easy_async_with_shell(
|
||||
[[
|
||||
REMOVE="]] .. stdout:gsub("\n", "") .. [[;"
|
||||
STR=$(cat ~/.config/awesome/src/assets/cache/rules.txt)
|
||||
echo -n ${STR//$REMOVE/} > ~/.config/awesome/src/assets/cache/rules.txt
|
||||
]],
|
||||
function()
|
||||
local c = mouse.screen.selected_tag:clients()
|
||||
for _, client in ipairs(c) do
|
||||
if client.class:match(stdout:gsub("\n", "")) then
|
||||
client.floating = false
|
||||
c.floating = false
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
handler = io.open("/home/crylia/.config/awesome/src/config/floating.json", "w")
|
||||
if not handler then return end
|
||||
handler:write(json:encode(data_table))
|
||||
handler:close()
|
||||
mousegrabber.stop()
|
||||
end
|
||||
)
|
||||
end
|
||||
end
|
||||
return true
|
||||
end,
|
||||
"crosshair"
|
||||
)
|
||||
end
|
||||
)
|
||||
|
||||
@@ -1 +1 @@
|
||||
[{"actions":["New"],"categories":"System;TerminalEmulator;","comment":"A fast, cross-platform, OpenGL terminal emulator","desktop_file":"/usr/share/applications/com.alacritty.Alacritty.desktop","exec":"alacritty","icon":"/usr/share/icons/Papirus-Dark/64x64/categories/com.alacritty.Alacritty.svg","keywords":"","name":"Alacritty","terminal":""},{"actions":["new-window","new-private-window"],"categories":"Network;WebBrowser;","comment":"Access the Internet","desktop_file":"/var/lib/flatpak/exports/share/applications/com.brave.Browser.desktop","exec":"/usr/bin/flatpak run --branch=stable --arch=x86_64 --command=brave --file-forwarding com.brave.Browser @@u %U @@","icon":"/usr/share/icons/Papirus-Dark/64x64/categories/com.brave.Browser.svg","keywords":"","name":"Brave","terminal":""},{"actions":["new-empty-window"],"categories":"TextEditor;Development;IDE;","comment":"Code Editing. Redefined.","desktop_file":"/usr/share/applications/code.desktop","exec":"/usr/share/code/code --unity-launch %F","icon":"/usr/share/icons/Papirus-Dark/64x64/categories/com.visualstudio.code.svg","keywords":"vscode;","name":"Visual Studio Code","terminal":""},{"actions":[],"categories":"Audio;Music;Player;AudioVideo;","comment":"","desktop_file":"/usr/local/share/applications/spotify.desktop","exec":"spotify %U","icon":"/usr/share/icons/Papirus-Dark/64x64/categories/spotify-client.svg","keywords":"","name":"Spotify","terminal":""},{"actions":[],"categories":"Network;InstantMessaging;","comment":"All-in-one voice and text chat for gamers that's free, secure, and works on both your desktop and phone.","desktop_file":"/usr/share/applications/discord.desktop","exec":"/usr/share/discord/Discord","icon":"/usr/share/icons/Papirus-Dark/64x64/categories/discord.svg","keywords":"","name":"Discord","terminal":""},{"actions":["Store","Community","Library","Servers","Screenshots","News","Settings","BigPicture","Friends"],"categories":"Network;FileTransfer;Game;","comment":"Application for managing and playing games on Steam","desktop_file":"/usr/share/applications/steam.desktop","exec":"/usr/games/steam %U","icon":"/usr/share/icons/Papirus-Dark/64x64/categories/steam.svg","keywords":"Games","name":"Steam","terminal":""},{"actions":["Remove"],"categories":"Graphics;","comment":"Cura converts 3D models into paths for a 3D printer. It prepares your print for maximum accuracy, minimum printing time and good reliability with many extra features that make your print come out great.","desktop_file":"/home/crylia/.local/share/applications/appimagekit_5de59b772d786d6e98102a035c80e40c-Ultimaker_Cura.desktop","exec":"/home/crylia/Applications/Ultimaker-Cura-5.0.0-linux_07ecc3f54905e865167d2bcd7cfe459c.AppImage %F","icon":"/usr/share/icons/Papirus-Dark/64x64/categories/appimagekit-cura-icon.svg","keywords":"3D;Printing;","name":"Ultimaker Cura (5.0.0)","terminal":""},{"actions":[],"categories":"Game;","comment":"video game preservation platform","desktop_file":"/usr/share/applications/net.lutris.Lutris.desktop","exec":"lutris %U","icon":"/usr/share/icons/Papirus-Dark/64x64/categories/lutris.svg","keywords":"gaming;wine;emulator;","name":"Lutris","terminal":""},{"actions":[],"categories":"Graphics;Science;Engineering","comment":"Feature based Parametric Modeler","desktop_file":"/usr/share/applications/freecad.desktop","exec":"/usr/bin/freecad --single-instance %F","icon":"/usr/share/icons/Papirus-Dark/64x64/categories/freecad.svg","keywords":"","name":"FreeCAD","terminal":""},{"actions":[],"categories":"Graphics;3DGraphics;","comment":"3D modeling, animation, rendering and post-production","desktop_file":"/usr/share/applications/blender.desktop","exec":"blender %f","icon":"/usr/share/icons/Papirus-Dark/64x64/categories/blender.svg","keywords":"3d;cg;modeling;animation;painting;sculpting;texturing;video editing;video tracking;rendering;render engine;cycles;game engine;python;","name":"Blender","terminal":""},{"actions":[],"categories":"Game;","comment":"Play this game on Steam","desktop_file":"/home/crylia/.local/share/applications/The Witcher 3 Wild Hunt.desktop","exec":"steam steam://rungameid/292030","icon":"/usr/share/icons/Papirus-Dark/64x64/categories/steam_icon_292030.svg","keywords":"","name":"The Witcher 3: Wild Hunt","terminal":""},{"actions":[],"categories":"Game;","comment":"Play this game on Steam","desktop_file":"/home/crylia/.local/share/applications/Hearts of Iron IV.desktop","exec":"steam steam://rungameid/394360","icon":"/home/crylia/.local/share/icons/hicolor/64x64/apps/steam_icon_394360.png","keywords":"","name":"Hearts of Iron IV","terminal":""}]
|
||||
[{"actions":["New"],"categories":"System;TerminalEmulator;","comment":"A fast, cross-platform, OpenGL terminal emulator","desktop_file":"/usr/share/applications/com.alacritty.Alacritty.desktop","exec":"alacritty","icon":"/usr/share/icons/Papirus-Dark/64x64/categories/com.alacritty.Alacritty.svg","keywords":"","name":"Alacritty","terminal":""},{"actions":["new-window","new-private-window"],"categories":"Network;WebBrowser;","comment":"Access the Internet","desktop_file":"/var/lib/flatpak/exports/share/applications/com.brave.Browser.desktop","exec":"/usr/bin/flatpak run --branch=stable --arch=x86_64 --command=brave --file-forwarding com.brave.Browser @@u %U @@","icon":"/usr/share/icons/Papirus-Dark/64x64/categories/com.brave.Browser.svg","keywords":"","name":"Brave","terminal":""},{"actions":["new-empty-window"],"categories":"TextEditor;Development;IDE;","comment":"Code Editing. Redefined.","desktop_file":"/usr/share/applications/code.desktop","exec":"/usr/share/code/code --unity-launch %F","icon":"/usr/share/icons/Papirus-Dark/64x64/categories/com.visualstudio.code.svg","keywords":"vscode;","name":"Visual Studio Code","terminal":""},{"actions":[],"categories":"Audio;Music;Player;AudioVideo;","comment":"","desktop_file":"/usr/local/share/applications/spotify.desktop","exec":"spotify %U","icon":"/usr/share/icons/Papirus-Dark/64x64/categories/spotify-client.svg","keywords":"","name":"Spotify","terminal":""},{"actions":[],"categories":"Network;InstantMessaging;","comment":"All-in-one voice and text chat for gamers that's free, secure, and works on both your desktop and phone.","desktop_file":"/usr/share/applications/discord.desktop","exec":"/usr/share/discord/Discord","icon":"/usr/share/icons/Papirus-Dark/64x64/categories/discord.svg","keywords":"","name":"Discord","terminal":""},{"actions":["Store","Community","Library","Servers","Screenshots","News","Settings","BigPicture","Friends"],"categories":"Network;FileTransfer;Game;","comment":"Application for managing and playing games on Steam","desktop_file":"/usr/share/applications/steam.desktop","exec":"/usr/games/steam %U","icon":"/usr/share/icons/Papirus-Dark/64x64/categories/steam.svg","keywords":"Games","name":"Steam","terminal":""},{"actions":["Remove"],"categories":"Graphics;","comment":"Cura converts 3D models into paths for a 3D printer. It prepares your print for maximum accuracy, minimum printing time and good reliability with many extra features that make your print come out great.","desktop_file":"/home/crylia/.local/share/applications/appimagekit_5de59b772d786d6e98102a035c80e40c-Ultimaker_Cura.desktop","exec":"/home/crylia/Applications/Ultimaker-Cura-5.0.0-linux_07ecc3f54905e865167d2bcd7cfe459c.AppImage %F","icon":"/usr/share/icons/Papirus-Dark/64x64/categories/appimagekit-cura-icon.svg","keywords":"3D;Printing;","name":"Ultimaker Cura (5.0.0)","terminal":""},{"actions":[],"categories":"Game;","comment":"video game preservation platform","desktop_file":"/usr/share/applications/net.lutris.Lutris.desktop","exec":"lutris %U","icon":"/usr/share/icons/Papirus-Dark/64x64/categories/lutris.svg","keywords":"gaming;wine;emulator;","name":"Lutris","terminal":""},{"actions":[],"categories":"Graphics;Science;Engineering","comment":"Feature based Parametric Modeler","desktop_file":"/usr/share/applications/freecad.desktop","exec":"/usr/bin/freecad --single-instance %F","icon":"/usr/share/icons/Papirus-Dark/64x64/categories/freecad.svg","keywords":"","name":"FreeCAD","terminal":""},{"actions":[],"categories":"Graphics;3DGraphics;","comment":"3D modeling, animation, rendering and post-production","desktop_file":"/usr/share/applications/blender.desktop","exec":"blender %f","icon":"/usr/share/icons/Papirus-Dark/64x64/categories/blender.svg","keywords":"3d;cg;modeling;animation;painting;sculpting;texturing;video editing;video tracking;rendering;render engine;cycles;game engine;python;","name":"Blender","terminal":""},{"actions":[],"categories":"Game;","comment":"Play this game on Steam","desktop_file":"/home/crylia/.local/share/applications/The Witcher 3 Wild Hunt.desktop","exec":"steam steam://rungameid/292030","icon":"/usr/share/icons/Papirus-Dark/64x64/categories/steam_icon_292030.svg","keywords":"","name":"The Witcher 3: Wild Hunt","terminal":""},{"actions":[],"categories":"Game;","comment":"Play this game on Steam","desktop_file":"/home/crylia/.local/share/applications/Hearts of Iron IV.desktop","exec":"steam steam://rungameid/394360","icon":"/home/crylia/.local/share/icons/hicolor/64x64/apps/steam_icon_394360.png","keywords":"","name":"Hearts of Iron IV","terminal":""},{"actions":["Compose","Contacts"],"categories":"Application;Network;Email;","comment":"Send and receive mail with Thunderbird","desktop_file":"/usr/share/applications/thunderbird.desktop","exec":"thunderbird %u","icon":"/usr/share/icons/Papirus-Dark/64x64/categories/thunderbird.svg","keywords":"Email;E-mail;Newsgroup;Feed;RSS","name":"Thunderbird-E-Mail und -Nachrichten","terminal":""}]
|
||||
1
awesome/src/config/floating.json
Normal file
1
awesome/src/config/floating.json
Normal file
@@ -0,0 +1 @@
|
||||
[{"WM_CLASS":"Paradox Launcher","WM_INSTANCE":"paradox launcher","WM_NAME":"Paradox Launcher"},{"WM_CLASS":"Com.github.donadigo.eddy","WM_INSTANCE":"com.github.donadigo.eddy","WM_NAME":"Eddy"},{"WM_CLASS":"jamesdsp","WM_INSTANCE":"jamesdsp","WM_NAME":"JamesDSP for Linux"},{"WM_CLASS":"Gwe","WM_INSTANCE":"gwe","WM_NAME":"GWE"},{"WM_CLASS":"Steam","WM_INSTANCE":"Steam","WM_NAME":"Freundesliste"},{"WM_CLASS":"Thunderbird","WM_INSTANCE":"Calendar","WM_NAME":"New Event:"},{"WM_CLASS":"Thunderbird","WM_INSTANCE":"Mail","WM_NAME":"Calendar - Mozilla Thunderbird"},{"WM_CLASS":"Proton Mail Bridge","WM_INSTANCE":"proton-bridge","WM_NAME":"Proton Mail Bridge"}]
|
||||
@@ -354,24 +354,19 @@ naughty.connect_signal(
|
||||
|
||||
rubato_timer.target = 0
|
||||
|
||||
local last_position = n.timeout
|
||||
|
||||
w_template:connect_signal(
|
||||
"mouse::enter",
|
||||
function()
|
||||
n.timeout = 99999
|
||||
last_position = rubato_timer.pos
|
||||
rubato_timer:abort()
|
||||
rubato_timer.pause = true
|
||||
end
|
||||
)
|
||||
|
||||
w_template:connect_signal(
|
||||
"mouse::leave",
|
||||
function()
|
||||
n.timeout = last_position
|
||||
rubato_timer.pos = last_position
|
||||
rubato_timer.duration = last_position
|
||||
rubato_timer:reset()
|
||||
n.timeout = rubato_timer.pos
|
||||
rubato_timer.pause = false
|
||||
rubato_timer.target = 0
|
||||
end
|
||||
)
|
||||
|
||||
@@ -7,6 +7,8 @@ local awful = require("awful")
|
||||
local beautiful = require("beautiful")
|
||||
local ruled = require("ruled")
|
||||
|
||||
local json = require("src.lib.json-lua.json-lua")
|
||||
|
||||
awful.rules.rules = {
|
||||
{
|
||||
rule = {},
|
||||
@@ -18,33 +20,8 @@ awful.rules.rules = {
|
||||
keys = require("src.bindings.client_keys"),
|
||||
buttons = require("src.bindings.client_buttons"),
|
||||
screen = awful.screen.preferred,
|
||||
placement = awful.placement.under_mouse + awful.placement.no_overlap + awful.placement.no_offscreen
|
||||
}
|
||||
},
|
||||
{
|
||||
rule_any = {
|
||||
instance = {},
|
||||
class = {
|
||||
"Arandr",
|
||||
"Lxappearance",
|
||||
"kdeconnect.app",
|
||||
"zoom",
|
||||
"file-roller",
|
||||
"File-roller"
|
||||
},
|
||||
name = {},
|
||||
role = {
|
||||
"AlarmWindow",
|
||||
"ConfigManager",
|
||||
"pop-up",
|
||||
"dialog",
|
||||
"modal",
|
||||
"utility"
|
||||
}
|
||||
},
|
||||
properties = {
|
||||
floating = true,
|
||||
titlebars_enabled = true
|
||||
placement = awful.placement.under_mouse + awful.placement.no_overlap + awful.placement.no_offscreen +
|
||||
awful.placement.centered
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -76,16 +53,19 @@ awful.rules.rules = {
|
||||
}
|
||||
}
|
||||
|
||||
awful.spawn.easy_async_with_shell(
|
||||
"cat ~/.config/awesome/src/assets/cache/rules.txt",
|
||||
function(stdout)
|
||||
for class in stdout:gmatch("%a+") do
|
||||
local handler = io.open("/home/crylia/.config/awesome/src/config/floating.json", "r")
|
||||
|
||||
if not handler then return end
|
||||
local data = json:decode(handler:read("a"))
|
||||
handler:close()
|
||||
|
||||
if type(data) ~= "table" then return end
|
||||
|
||||
for _, c in ipairs(data) do
|
||||
ruled.client.append_rule {
|
||||
rule = { class = class },
|
||||
rule = { class = c.WM_CLASS, instance = c.WM_INSTANCE },
|
||||
properties = {
|
||||
floating = true
|
||||
},
|
||||
}
|
||||
end
|
||||
end
|
||||
)
|
||||
end
|
||||
|
||||
@@ -2,7 +2,9 @@
|
||||
-- Awesome Libs
|
||||
local awful = require("awful")
|
||||
local gears = require("gears")
|
||||
local wibox = require("wibox")
|
||||
|
||||
local color = require("src.lib.color")
|
||||
local rubato = require("src.lib.rubato")
|
||||
|
||||
screen.connect_signal(
|
||||
"added",
|
||||
@@ -71,7 +73,7 @@ tag.connect_signal(
|
||||
)
|
||||
|
||||
-- Sloppy focus
|
||||
client.connect_signal(
|
||||
--[[ client.connect_signal(
|
||||
"mouse::enter",
|
||||
function(c)
|
||||
c:emit_signal(
|
||||
@@ -82,7 +84,7 @@ client.connect_signal(
|
||||
}
|
||||
)
|
||||
end
|
||||
)
|
||||
) ]]
|
||||
|
||||
--- Takes a wibox.container.background and connects four signals to it
|
||||
---@param widget wibox.container.background a background widget
|
||||
@@ -96,25 +98,41 @@ function Hover_signal(widget, bg_override, fg_override, border_override, icon_ov
|
||||
|
||||
local r, g, b
|
||||
|
||||
widget.bg = widget.bg or ""
|
||||
widget.fg = widget.fg or ""
|
||||
widget.border_color = widget.border_color or ""
|
||||
widget.bg = widget.bg or "#000000"
|
||||
widget.fg = widget.fg or "#000000"
|
||||
widget.border_color = widget.border_color or "#000000"
|
||||
local icon = nil
|
||||
if icon_override and icon_override_hover then
|
||||
icon = widget:get_children_by_id("icon")[1].icon
|
||||
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 function update_bg()
|
||||
widget:set_bg("#" .. color.utils.rgba_to_hex { r_timed_bg.pos, g_timed_bg.pos, b_timed_bg.pos })
|
||||
end
|
||||
|
||||
r_timed_bg:subscribe(update_bg)
|
||||
g_timed_bg:subscribe(update_bg)
|
||||
b_timed_bg:subscribe(update_bg)
|
||||
|
||||
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.bg = bg_override or old_bg .. "dd"
|
||||
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.fg = fg_override or old_fg .. "dd"
|
||||
widget:set_fg(fg_override or old_fg .. "dd")
|
||||
end
|
||||
old_border = widget.border_color
|
||||
if border_override or old_border then
|
||||
@@ -162,10 +180,10 @@ function Hover_signal(widget, bg_override, fg_override, border_override, icon_ov
|
||||
|
||||
local mouse_leave = function()
|
||||
if old_bg then
|
||||
widget.bg = old_bg
|
||||
widget:set_bg(old_bg)
|
||||
end
|
||||
if old_fg then
|
||||
widget.fg = old_fg
|
||||
widget:set_fg(old_fg)
|
||||
end
|
||||
if old_border then
|
||||
widget.border_color = old_border
|
||||
|
||||
1
awesome/src/lib/color
Submodule
1
awesome/src/lib/color
Submodule
Submodule awesome/src/lib/color added at 064459a663
@@ -8,6 +8,9 @@ local dpi = require("beautiful").xresources.apply_dpi
|
||||
local gears = require("gears")
|
||||
local wibox = require("wibox")
|
||||
|
||||
local color = require("src.lib.color")
|
||||
local rubato = require("src.lib.rubato")
|
||||
|
||||
-- Icon directory path
|
||||
local icondir = awful.util.getdir("config") .. "src/assets/icons/titlebar/"
|
||||
|
||||
|
||||
@@ -8,6 +8,9 @@ local dpi = require("beautiful").xresources.apply_dpi
|
||||
local gears = require("gears")
|
||||
local wibox = require("wibox")
|
||||
|
||||
local color = require("src.lib.color")
|
||||
local rubato = require("src.lib.rubato")
|
||||
|
||||
return function()
|
||||
|
||||
local elements = wibox.widget {
|
||||
@@ -38,7 +41,7 @@ return function()
|
||||
|
||||
selected = selected
|
||||
|
||||
for i, client in ipairs(clients_sorted) do
|
||||
for _, client in ipairs(clients_sorted) do
|
||||
local window_element = wibox.widget {
|
||||
{
|
||||
{
|
||||
@@ -89,21 +92,11 @@ return function()
|
||||
end,
|
||||
border_color = Theme_config.window_switcher.border_color,
|
||||
border_width = Theme_config.window_switcher.border_width,
|
||||
bg = Theme_config.window_switcher.element_bg,
|
||||
bg = Theme_config.window_switcher.bg,
|
||||
fg = Theme_config.window_switcher.element_fg,
|
||||
widget = wibox.container.background
|
||||
}
|
||||
|
||||
if i == selected then
|
||||
window_element.border_color = Theme_config.window_switcher.selected_border_color
|
||||
window_element.fg = Theme_config.window_switcher.selected_fg
|
||||
window_element.bg = Theme_config.window_switcher.selected_bg
|
||||
else
|
||||
window_element.border_color = Theme_config.window_switcher.border_color
|
||||
window_element.fg = Theme_config.window_switcher.element_fg
|
||||
window_element.bg = Theme_config.window_switcher.bg
|
||||
end
|
||||
|
||||
elements:add(window_element)
|
||||
end
|
||||
|
||||
@@ -115,14 +108,93 @@ return function()
|
||||
end
|
||||
|
||||
for i, element in ipairs(elements.children) do
|
||||
|
||||
-- Background rubato init
|
||||
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 }
|
||||
|
||||
-- starting color
|
||||
r_timed_bg.pos, g_timed_bg.pos, b_timed_bg.pos = color.utils.hex_to_rgba(Theme_config.window_switcher.bg)
|
||||
|
||||
|
||||
-- Foreground rubato init
|
||||
local r_timed_fg = rubato.timed { duration = 0.5 }
|
||||
local g_timed_fg = rubato.timed { duration = 0.5 }
|
||||
local b_timed_fg = rubato.timed { duration = 0.5 }
|
||||
|
||||
-- starting color
|
||||
r_timed_fg.pos, g_timed_fg.pos, b_timed_fg.pos = color.utils.hex_to_rgba(Theme_config.window_switcher.element_fg)
|
||||
|
||||
-- Border rubato init
|
||||
local r_timed_border = rubato.timed { duration = 0.5 }
|
||||
local g_timed_border = rubato.timed { duration = 0.5 }
|
||||
local b_timed_border = rubato.timed { duration = 0.5 }
|
||||
|
||||
-- starting color
|
||||
r_timed_border.pos, g_timed_border.pos, b_timed_border.pos = color.utils.hex_to_rgba(Theme_config.window_switcher
|
||||
.border_color)
|
||||
|
||||
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 function set_fg(newfg)
|
||||
r_timed_fg.target, g_timed_fg.target, b_timed_fg.target = color.utils.hex_to_rgba(newfg)
|
||||
end
|
||||
|
||||
local function set_border(newborder)
|
||||
r_timed_border.target, g_timed_border.target, b_timed_border.target = color.utils.hex_to_rgba(newborder)
|
||||
end
|
||||
|
||||
local function update_bg()
|
||||
element:set_bg("#" .. color.utils.rgba_to_hex { r_timed_bg.pos, g_timed_bg.pos, b_timed_bg.pos })
|
||||
end
|
||||
|
||||
local function update_fg()
|
||||
element:set_fg("#" .. color.utils.rgba_to_hex { r_timed_fg.pos, g_timed_fg.pos, b_timed_fg.pos })
|
||||
end
|
||||
|
||||
local function update_border()
|
||||
element.border_color = "#" ..
|
||||
color.utils.rgba_to_hex { r_timed_border.pos, g_timed_border.pos, b_timed_border.pos }
|
||||
end
|
||||
|
||||
-- Subscribe to the function bg and fg
|
||||
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)
|
||||
|
||||
if i == selected then
|
||||
element.border_color = Theme_config.window_switcher.selected_border_color
|
||||
element.fg = Theme_config.window_switcher.selected_fg
|
||||
element.bg = Theme_config.window_switcher.selected_bg
|
||||
r_timed_bg.pos, g_timed_bg.pos, b_timed_bg.pos = color.utils.hex_to_rgba(Theme_config.window_switcher.bg)
|
||||
r_timed_fg.pos, g_timed_fg.pos, b_timed_fg.pos = color.utils.hex_to_rgba(Theme_config.window_switcher.element_fg)
|
||||
r_timed_border.pos, g_timed_border.pos, b_timed_border.pos = color.utils.hex_to_rgba(Theme_config.window_switcher
|
||||
.border_color)
|
||||
set_border(Theme_config.window_switcher.selected_border_color)
|
||||
set_fg(Theme_config.window_switcher.selected_fg)
|
||||
set_bg(Theme_config.window_switcher.selected_bg)
|
||||
elseif i == selected - 1 or (selected == 1 and i == #clients_sorted) then
|
||||
r_timed_bg.pos, g_timed_bg.pos, b_timed_bg.pos = color.utils.hex_to_rgba(Theme_config.window_switcher.selected_bg)
|
||||
r_timed_fg.pos, g_timed_fg.pos, b_timed_fg.pos = color.utils.hex_to_rgba(Theme_config.window_switcher.selected_fg)
|
||||
r_timed_border.pos, g_timed_border.pos, b_timed_border.pos = color.utils.hex_to_rgba(Theme_config.window_switcher
|
||||
.selected_border_color)
|
||||
set_border(Theme_config.window_switcher.border_color)
|
||||
set_fg(Theme_config.window_switcher.element_fg)
|
||||
set_bg(Theme_config.window_switcher.bg)
|
||||
else
|
||||
element.border_color = Theme_config.window_switcher.border_color
|
||||
element.fg = Theme_config.window_switcher.element_fg
|
||||
element.bg = Theme_config.window_switcher.bg
|
||||
r_timed_bg.pos, g_timed_bg.pos, b_timed_bg.pos = color.utils.hex_to_rgba(Theme_config.window_switcher.bg)
|
||||
r_timed_fg.pos, g_timed_fg.pos, b_timed_fg.pos = color.utils.hex_to_rgba(Theme_config.window_switcher.element_fg)
|
||||
r_timed_border.pos, g_timed_border.pos, b_timed_border.pos = color.utils.hex_to_rgba(Theme_config.window_switcher
|
||||
.border_color)
|
||||
set_border(Theme_config.window_switcher.border_color)
|
||||
set_fg(Theme_config.window_switcher.element_fg)
|
||||
set_bg(Theme_config.window_switcher.bg)
|
||||
end
|
||||
end
|
||||
elseif fn == "raise" then
|
||||
|
||||
@@ -93,7 +93,7 @@ Theme_config.layout_list = {
|
||||
Theme_config.network = {
|
||||
bg = color["Red200"],
|
||||
fg = color["Grey900"],
|
||||
notify_icon_color = color["White"]
|
||||
notify_icon_color = color["Grey100"]
|
||||
}
|
||||
|
||||
Theme_config.power_button = {
|
||||
@@ -112,23 +112,23 @@ Theme_config.systray = {
|
||||
|
||||
Theme_config.taglist = {
|
||||
bg = "#3A475C",
|
||||
fg = color["White"],
|
||||
fg = color["Grey100"],
|
||||
bg_urgent = color["RedA200"],
|
||||
fg_urgent = color["Grey900"],
|
||||
bg_focus = color["White"],
|
||||
bg_focus = color["Grey100"],
|
||||
bg_focus_pressed = "#dddddd",
|
||||
bg_focus_hover = color["White"],
|
||||
bg_focus_hover = color["Grey100"],
|
||||
fg_focus = color["Grey900"],
|
||||
}
|
||||
|
||||
Theme_config.tasklist = {
|
||||
bg = "#3A475C",
|
||||
fg = color["White"],
|
||||
fg = color["Grey100"],
|
||||
bg_urgent = color["RedA200"],
|
||||
fg_urgent = color["Grey900"],
|
||||
bg_focus = color["White"],
|
||||
bg_focus = color["Grey100"],
|
||||
bg_focus_pressed = "#dddddd",
|
||||
bg_focus_hover = color["White"],
|
||||
bg_focus_hover = color["Grey100"],
|
||||
fg_focus = color["Grey900"],
|
||||
}
|
||||
--#endregion
|
||||
@@ -338,7 +338,7 @@ Theme_config.dock = {
|
||||
element_bg = color["Grey900"],
|
||||
element_focused_bg = color["Grey800"],
|
||||
element_focused_hover_bg = color["Grey800"],
|
||||
element_focused_hover_fg = color["White"],
|
||||
element_focused_hover_fg = color["Grey100"],
|
||||
bg = color["Grey900"],
|
||||
indicator_bg = color["Grey600"],
|
||||
indicator_focused_bg = color["YellowA200"],
|
||||
@@ -541,7 +541,7 @@ Theme_config.tooltip = {
|
||||
|
||||
Theme_config.hotkeys = {
|
||||
bg = color["Grey900"],
|
||||
fg = color["White"],
|
||||
fg = color["Grey100"],
|
||||
border_color = color["Grey800"],
|
||||
border_width = dpi(4),
|
||||
shape = function(cr, width, heigth)
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
---@diagnostic disable: undefined-field
|
||||
--------------------------------
|
||||
-- This is the battery widget --
|
||||
--------------------------------
|
||||
|
||||
@@ -8,6 +8,9 @@ local dpi = require("beautiful").xresources.apply_dpi
|
||||
local gears = require("gears")
|
||||
local wibox = require("wibox")
|
||||
|
||||
local color = require("src.lib.color")
|
||||
local rubato = require("src.lib.rubato")
|
||||
|
||||
local icon_dir = awful.util.getdir("config") .. "src/assets/icons/cpu/"
|
||||
|
||||
--TODO: Add tooltip with more CPU and per core information
|
||||
@@ -149,11 +152,32 @@ return function(widget, _)
|
||||
end
|
||||
)
|
||||
|
||||
local r_timed_cpu_bg = rubato.timed { duration = 2.5 }
|
||||
local g_timed_cpu_bg = rubato.timed { duration = 2.5 }
|
||||
local b_timed_cpu_bg = rubato.timed { duration = 2.5 }
|
||||
|
||||
r_timed_cpu_bg.pos, g_timed_cpu_bg.pos, b_timed_cpu_bg.pos = color.utils.hex_to_rgba(Theme_config.cpu_temp.bg_low)
|
||||
|
||||
-- Subscribable function to have rubato set the bg/fg color
|
||||
local function update_bg()
|
||||
cpu_temp:set_bg("#" .. color.utils.rgba_to_hex { r_timed_cpu_bg.pos, g_timed_cpu_bg.pos, b_timed_cpu_bg.pos })
|
||||
end
|
||||
|
||||
r_timed_cpu_bg:subscribe(update_bg)
|
||||
g_timed_cpu_bg:subscribe(update_bg)
|
||||
b_timed_cpu_bg:subscribe(update_bg)
|
||||
|
||||
-- Both functions to set a color, if called they take a new color
|
||||
local function set_bg(newbg)
|
||||
r_timed_cpu_bg.target, g_timed_cpu_bg.target, b_timed_cpu_bg.target = color.utils.hex_to_rgba(newbg)
|
||||
end
|
||||
|
||||
awesome.connect_signal(
|
||||
"update::cpu_temp",
|
||||
function(temp)
|
||||
local temp_icon
|
||||
local temp_color
|
||||
|
||||
if temp < 50 then
|
||||
temp_color = Theme_config.cpu_temp.bg_low
|
||||
temp_icon = icon_dir .. "thermometer-low.svg"
|
||||
@@ -165,7 +189,7 @@ return function(widget, _)
|
||||
temp_icon = icon_dir .. "thermometer-high.svg"
|
||||
end
|
||||
cpu_temp.container.cpu_layout.icon_margin.icon_layout.icon:set_image(temp_icon)
|
||||
cpu_temp:set_bg(temp_color)
|
||||
set_bg(temp_color)
|
||||
cpu_temp.container.cpu_layout.label.text = math.floor(temp) .. "°C"
|
||||
awesome.emit_signal("update::cpu_temp_widget", temp, temp_icon)
|
||||
end
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---------------------------------
|
||||
-- This is the CPU Info widget --
|
||||
-- This is the gpu Info widget --
|
||||
---------------------------------
|
||||
|
||||
-- Awesome Libs
|
||||
@@ -8,6 +8,9 @@ local dpi = require("beautiful").xresources.apply_dpi
|
||||
local gears = require("gears")
|
||||
local wibox = require("wibox")
|
||||
|
||||
local color = require("src.lib.color")
|
||||
local rubato = require("src.lib.rubato")
|
||||
|
||||
local icon_dir = awful.util.getdir("config") .. "src/assets/icons/cpu/"
|
||||
|
||||
return function(widget)
|
||||
@@ -64,7 +67,7 @@ return function(widget)
|
||||
widget = wibox.widget.imagebox,
|
||||
valign = "center",
|
||||
halign = "center",
|
||||
image = gears.color.recolor_image(icon_dir .. "cpu.svg", Theme_config.gpu_temp.fg),
|
||||
image = gears.color.recolor_image(icon_dir .. "gpu.svg", Theme_config.gpu_temp.fg),
|
||||
resize = false
|
||||
},
|
||||
id = "icon_layout",
|
||||
@@ -108,6 +111,28 @@ return function(widget)
|
||||
end
|
||||
)
|
||||
|
||||
local r_timed_gpu_bg = rubato.timed { duration = 2.5 }
|
||||
local g_timed_gpu_bg = rubato.timed { duration = 2.5 }
|
||||
local b_timed_gpu_bg = rubato.timed { duration = 2.5 }
|
||||
|
||||
r_timed_gpu_bg.pos, g_timed_gpu_bg.pos, b_timed_gpu_bg.pos = color.utils.hex_to_rgba(Theme_config.cpu_temp.bg_low)
|
||||
|
||||
-- Subscribable function to have rubato set the bg/fg color
|
||||
local function update_bg()
|
||||
gpu_temp_widget:set_bg("#" ..
|
||||
color.utils.rgba_to_hex { math.max(0, r_timed_gpu_bg.pos), math.max(0, g_timed_gpu_bg.pos),
|
||||
math.max(0, b_timed_gpu_bg.pos) })
|
||||
end
|
||||
|
||||
r_timed_gpu_bg:subscribe(update_bg)
|
||||
g_timed_gpu_bg:subscribe(update_bg)
|
||||
b_timed_gpu_bg:subscribe(update_bg)
|
||||
|
||||
-- Both functions to set a color, if called they take a new color
|
||||
local function set_bg(newbg)
|
||||
r_timed_gpu_bg.target, g_timed_gpu_bg.target, b_timed_gpu_bg.target = color.utils.hex_to_rgba(newbg)
|
||||
end
|
||||
|
||||
-- GPU Temperature
|
||||
awesome.connect_signal(
|
||||
"update::gpu_temp",
|
||||
@@ -135,7 +160,7 @@ return function(widget)
|
||||
temp_icon = icon_dir .. "thermometer-low.svg"
|
||||
end
|
||||
gpu_temp_widget.container.gpu_layout.icon_margin.icon_layout.icon:set_image(temp_icon)
|
||||
gpu_temp_widget:set_bg(temp_color)
|
||||
set_bg(temp_color)
|
||||
gpu_temp_widget.container.gpu_layout.label.text = tostring(temp_num) .. "°C"
|
||||
end
|
||||
)
|
||||
|
||||
@@ -8,6 +8,9 @@ local awful = require("awful")
|
||||
local gears = require("gears")
|
||||
local dpi = require("beautiful").xresources.apply_dpi
|
||||
|
||||
local color = require("src.lib.color")
|
||||
local rubato = require("src.lib.rubato")
|
||||
|
||||
local list_update = function(widget, buttons, _, _, objects)
|
||||
widget:reset()
|
||||
|
||||
@@ -35,6 +38,7 @@ local list_update = function(widget, buttons, _, _, objects)
|
||||
layout = wibox.layout.fixed.horizontal
|
||||
},
|
||||
fg = Theme_config.taglist.fg,
|
||||
bg = Theme_config.taglist.bg,
|
||||
shape = function(cr, width, height)
|
||||
gears.shape.rounded_rect(cr, width, height, dpi(6))
|
||||
end,
|
||||
@@ -63,17 +67,67 @@ local list_update = function(widget, buttons, _, _, objects)
|
||||
|
||||
tag_widget:buttons(create_buttons(buttons, object))
|
||||
|
||||
tag_widget.container.margin.label:set_text(object.index)
|
||||
if object.urgent == true then
|
||||
tag_widget:set_bg(Theme_config.taglist.bg_urgent)
|
||||
tag_widget:set_fg(Theme_config.taglist.fg_urgent)
|
||||
elseif object == awful.screen.focused().selected_tag then
|
||||
tag_widget:set_bg(Theme_config.taglist.bg_focus)
|
||||
tag_widget:set_fg(Theme_config.taglist.fg_focus)
|
||||
else
|
||||
tag_widget:set_bg(Theme_config.taglist.bg)
|
||||
--#region Rubato and Color animation
|
||||
|
||||
-- Background rubato init
|
||||
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 }
|
||||
|
||||
-- starting color
|
||||
r_timed_bg.pos, g_timed_bg.pos, b_timed_bg.pos = color.utils.hex_to_rgba(Theme_config.taglist.bg)
|
||||
|
||||
|
||||
-- Foreground rubato init
|
||||
local r_timed_fg = rubato.timed { duration = 0.5 }
|
||||
local g_timed_fg = rubato.timed { duration = 0.5 }
|
||||
local b_timed_fg = rubato.timed { duration = 0.5 }
|
||||
|
||||
-- starting color
|
||||
r_timed_fg.pos, g_timed_fg.pos, b_timed_fg.pos = color.utils.hex_to_rgba(Theme_config.taglist.fg)
|
||||
|
||||
-- Subscribable function to have rubato set the bg/fg color
|
||||
local function update_bg()
|
||||
tag_widget:set_bg("#" ..
|
||||
color.utils.rgba_to_hex { math.max(0, r_timed_bg.pos), math.max(0, g_timed_bg.pos), math.max(0, b_timed_bg.pos) })
|
||||
end
|
||||
|
||||
local function update_fg()
|
||||
tag_widget:set_fg("#" ..
|
||||
color.utils.rgba_to_hex { math.max(0, r_timed_fg.pos), math.max(0, g_timed_fg.pos), math.max(0, b_timed_fg.pos) })
|
||||
end
|
||||
|
||||
-- Subscribe to the function bg and fg
|
||||
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)
|
||||
|
||||
-- Both functions to set a color, if called they take a new color
|
||||
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 function set_fg(newfg)
|
||||
r_timed_fg.target, g_timed_fg.target, b_timed_fg.target = color.utils.hex_to_rgba(newfg)
|
||||
end
|
||||
|
||||
tag_widget.container.margin.label:set_text(object.index)
|
||||
-- Use the wraper function to call the set_bg and set_fg based on the client state
|
||||
if object.urgent == true then
|
||||
set_bg(Theme_config.taglist.bg_urgent)
|
||||
set_fg(Theme_config.taglist.fg_urgent)
|
||||
elseif object == awful.screen.focused().selected_tag then
|
||||
set_bg(Theme_config.taglist.bg_focus)
|
||||
set_fg(Theme_config.taglist.fg_focus)
|
||||
else
|
||||
set_fg(Theme_config.taglist.fg)
|
||||
set_bg(Theme_config.taglist.bg)
|
||||
end
|
||||
--#endregion
|
||||
|
||||
-- Set the icon for each client
|
||||
for _, client in ipairs(object:clients()) do
|
||||
tag_widget.container.margin:set_right(0)
|
||||
|
||||
@@ -8,6 +8,9 @@ local wibox = require('wibox')
|
||||
local dpi = require('beautiful').xresources.apply_dpi
|
||||
local gears = require('gears')
|
||||
|
||||
local color = require("src.lib.color")
|
||||
local rubato = require("src.lib.rubato")
|
||||
|
||||
local list_update = function(widget, buttons, label, _, objects)
|
||||
widget:reset()
|
||||
for _, object in ipairs(objects) do
|
||||
@@ -90,6 +93,55 @@ local list_update = function(widget, buttons, label, _, objects)
|
||||
task_widget:buttons(create_buttons(buttons, object))
|
||||
|
||||
local text, _ = label(object, task_widget.container.layout_it.title)
|
||||
|
||||
|
||||
--#region Rubato and Color animation
|
||||
|
||||
-- Background rubato init
|
||||
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 }
|
||||
|
||||
-- starting color
|
||||
r_timed_bg.pos, g_timed_bg.pos, b_timed_bg.pos = color.utils.hex_to_rgba(Theme_config.tasklist.bg)
|
||||
|
||||
|
||||
-- Foreground rubato init
|
||||
local r_timed_fg = rubato.timed { duration = 0.5 }
|
||||
local g_timed_fg = rubato.timed { duration = 0.5 }
|
||||
local b_timed_fg = rubato.timed { duration = 0.5 }
|
||||
|
||||
-- starting color
|
||||
r_timed_fg.pos, g_timed_fg.pos, b_timed_fg.pos = color.utils.hex_to_rgba(Theme_config.tasklist.fg)
|
||||
|
||||
-- Subscribable function to have rubato set the bg/fg color
|
||||
local function update_bg()
|
||||
task_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()
|
||||
task_widget:set_fg("#" .. color.utils.rgba_to_hex { r_timed_fg.pos, g_timed_fg.pos, b_timed_fg.pos })
|
||||
end
|
||||
|
||||
-- Subscribe to the function bg and fg
|
||||
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)
|
||||
|
||||
-- Both functions to set a color, if called they take a new color
|
||||
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 function set_fg(newfg)
|
||||
r_timed_fg.target, g_timed_fg.target, b_timed_fg.target = color.utils.hex_to_rgba(newfg)
|
||||
end
|
||||
|
||||
--#endregion
|
||||
|
||||
if object == client.focus then
|
||||
if text == nil or text == '' then
|
||||
task_widget.container.layout_it.title:set_margins(0)
|
||||
@@ -107,11 +159,11 @@ local list_update = function(widget, buttons, label, _, objects)
|
||||
task_tool_tip:remove_from_object(task_widget)
|
||||
end
|
||||
end
|
||||
task_widget:set_bg(Theme_config.tasklist.bg_focus)
|
||||
task_widget:set_fg(Theme_config.tasklist.fg_focus)
|
||||
set_bg(Theme_config.tasklist.bg_focus)
|
||||
set_fg(Theme_config.tasklist.fg_focus)
|
||||
task_widget.container.layout_it.title:set_text(text)
|
||||
else
|
||||
task_widget:set_bg(Theme_config.tasklist.bg)
|
||||
set_bg(Theme_config.tasklist.bg)
|
||||
task_widget.container.layout_it.title:set_text('')
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user