Add new notification-center module with various widgets, add rubato animations and other fixes and improvements

This commit is contained in:
Kievits Rene
2022-05-31 01:16:00 +02:00
parent 61ad7b2c50
commit 9049f5c51c
73 changed files with 4914 additions and 450 deletions

View File

@@ -1,65 +0,0 @@
--------------------------------------------------------------------------------------------------------------
-- This is the statusbar, every widget, module and so on is combined to all the stuff you see on the screen --
--------------------------------------------------------------------------------------------------------------
-- Awesome Libs
local awful = require("awful")
awful.screen.connect_for_each_screen(
-- For each screen this function is called once
-- If you want to change the modules per screen use the indices
-- e.g. 1 would be the primary screen and 2 the secondary screen.
function(s)
-- Create 9 tags
awful.layout.layouts = user_vars.layouts
awful.tag(
{ "1", "2", "3", "4", "5", "6", "7", "8", "9" },
s,
user_vars.layouts[1]
)
require("src.modules.powermenu")(s)
-- TODO: rewrite calendar osd, maybe write an own inplementation
-- require("src.modules.calendar_osd")(s)
require("src.modules.volume_osd")(s)
require("src.modules.brightness_osd")(s)
require("src.modules.titlebar")
require("src.modules.volume_controller")(s)
-- Widgets
--s.battery = require("src.widgets.battery")()
s.audio = require("src.widgets.audio")(s)
s.date = require("src.widgets.date")()
s.clock = require("src.widgets.clock")()
--s.bluetooth = require("src.widgets.bluetooth")()
s.layoutlist = require("src.widgets.layout_list")()
s.powerbutton = require("src.widgets.power")()
s.kblayout = require("src.widgets.kblayout")(s)
s.taglist = require("src.widgets.taglist")(s)
s.tasklist = require("src.widgets.tasklist")(s)
--s.cpu_freq = require("src.widgets.cpu_info")("freq", "average")
-- Add more of these if statements if you want to change
-- the modules/widgets per screen.
if s.index == 1 then
s.systray = require("src.widgets.systray")(s)
s.cpu_usage = require("src.widgets.cpu_info")("usage")
s.cpu_temp = require("src.widgets.cpu_info")("temp")
s.gpu_usage = require("src.widgets.gpu_info")("usage")
s.gpu_temp = require("src.widgets.gpu_info")("temp")
require("crylia_bar.left_bar")(s, { s.layoutlist, s.systray, s.taglist })
require("crylia_bar.center_bar")(s, { s.tasklist })
require("crylia_bar.right_bar")(s, { s.gpu_usage, s.gpu_temp, s.cpu_usage, s.cpu_temp, s.audio, s.kblayout, s.date, s.clock, s.powerbutton })
require("crylia_bar.dock")(s, user_vars.dock_programs)
end
if s.index == 2 then
s.network = require("src.widgets.network")()
s.ram_info = require("src.widgets.ram_info")()
require("crylia_bar.left_bar")(s, { s.layoutlist, s.taglist })
require("crylia_bar.center_bar")(s, { s.tasklist })
require("crylia_bar.right_bar")(s, { s.ram_info, s.audio, s.kblayout, s.network, s.date, s.clock, s.powerbutton })
end
end
)

View File

@@ -13,7 +13,7 @@ require("src.core.error_handling")
require("src.core.signals") require("src.core.signals")
require("src.core.notifications") require("src.core.notifications")
require("src.core.rules") require("src.core.rules")
require("mappings.global_buttons") require("src.bindings.global_buttons")
require("mappings.bind_to_tags") require("src.bindings.bind_to_tags")
require("crylia_bar.init") require("src.modules.init")
require("src.tools.auto_starter")(user_vars.autostart) --require("src.tools.auto_starter")(user_vars.autostart)

View File

@@ -0,0 +1,319 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="300.000000pt" height="300.000000pt" viewBox="0 0 300.000000 300.000000" preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.10, written by Peter Selinger 2001-2011
</metadata>
<g transform="translate(0.000000,300.000000) scale(0.050000,-0.050000)" fill="#414141" stroke="none">
<path d="M696 5965 c-17 -19 -47 -64 -67 -100 -21 -36 -45 -65 -54 -65 -18 0
-7 -195 13 -214 6 -7 1 -25 -11 -40 -13 -15 -26 -52 -29 -82 -3 -30 -11 -81
-17 -114 -6 -33 -14 -90 -19 -126 -4 -36 -20 -80 -35 -98 -23 -29 -23 -31 3
-16 24 14 26 12 8 -11 -33 -43 -46 -140 -26 -193 12 -32 10 -46 -7 -46 -19 -1
-19 -4 -2 -15 32 -21 9 -126 -31 -140 -51 -18 -104 -81 -81 -96 11 -7 15 -29
9 -49 -26 -81 -27 -118 -4 -109 15 6 24 -10 24 -39 0 -27 -8 -47 -18 -45 -44
8 -29 -53 26 -108 52 -53 60 -74 56 -151 -4 -66 4 -98 31 -122 19 -18 31 -47
25 -65 -6 -20 24 -68 80 -128 50 -53 85 -105 79 -115 -7 -11 -2 -33 12 -49 13
-16 18 -29 10 -29 -8 0 0 -14 18 -32 17 -17 25 -41 18 -53 -9 -14 2 -17 30
-10 33 9 43 2 43 -29 0 -25 21 -47 59 -62 50 -19 89 -73 84 -117 -1 -7 14 -11
33 -8 60 9 185 -77 139 -96 -16 -6 -13 -10 8 -11 42 -2 69 -102 33 -125 -14
-9 -18 -17 -9 -17 10 0 6 -15 -9 -33 -31 -36 -36 -91 -12 -109 10 -7 3 -26
-14 -43 -16 -17 -24 -36 -17 -44 8 -7 -1 -8 -18 -1 -21 8 -35 -1 -42 -28 -9
-34 0 -41 62 -46 l73 -6 -110 -82 c-86 -64 -419 -276 -700 -445 -22 -14 1 -27
90 -52 66 -18 158 -47 204 -63 75 -27 94 -27 188 1 196 58 304 37 257 -51 -23
-42 -39 -43 -154 -7 -91 28 -41 -22 60 -61 103 -39 132 -77 107 -141 -12 -33
-186 24 -316 105 -41 25 -113 59 -160 75 l-86 29 68 -59 c38 -32 129 -89 203
-128 183 -97 202 -123 98 -137 -89 -11 -158 18 -305 132 -119 92 -180 10 -123
-168 12 -40 39 -50 57 -21 6 10 48 11 92 3 44 -8 86 -7 92 3 14 24 103 22 118
-3 16 -26 164 -26 180 0 29 47 54 16 43 -55 -28 -185 -39 -224 -76 -263 -21
-23 -31 -42 -23 -43 9 0 -1 -10 -22 -22 -36 -21 -36 -24 10 -59 l48 -37 -65
-1 c-56 0 -65 -7 -65 -50 0 -143 -90 44 -110 230 -15 128 -65 280 -93 280 -11
0 -13 -11 -5 -23 10 -16 4 -20 -19 -11 -26 10 -33 1 -33 -45 0 -32 -9 -61 -19
-64 -11 -4 12 -70 50 -147 38 -77 69 -151 69 -165 0 -14 7 -25 17 -25 45 0 70
-100 32 -128 -21 -16 -45 -25 -52 -20 -7 4 -9 -10 -3 -32 6 -22 21 -34 33 -28
13 6 6 -3 -15 -20 -36 -29 -36 -32 1 -108 35 -70 36 -90 14 -216 -35 -201 -32
-280 13 -369 40 -77 101 -117 68 -44 -29 66 -25 312 7 374 l30 58 29 -68 c16
-38 26 -106 22 -152 -3 -46 1 -79 10 -73 9 5 27 0 40 -10 13 -11 56 -29 94
-39 61 -16 69 -26 66 -76 -6 -70 -90 -154 -138 -135 -24 9 -30 5 -20 -11 18
-29 102 -30 155 -1 61 33 120 4 68 -33 -36 -27 -34 -29 30 -29 38 0 59 7 47
15 -15 10 -17 65 -6 175 21 213 3 287 -56 228 -67 -67 -320 175 -298 285 8 43
2 58 -29 67 -68 22 -37 110 84 237 30 32 65 86 79 120 14 35 34 69 44 75 10 7
30 71 45 143 15 72 50 180 78 242 44 96 49 123 32 197 -93 415 -124 769 -73
845 43 67 62 64 93 -11 14 -35 54 -80 87 -102 46 -29 50 -36 17 -26 -83 24
-55 -61 42 -128 99 -68 269 -75 360 -16 140 92 243 407 194 591 -53 195 -462
412 -592 314 -64 -48 -79 -40 -336 184 -232 202 -314 309 -313 408 0 21 139
80 159 68 10 -7 24 -3 31 9 7 11 37 20 67 20 31 0 72 12 93 27 20 15 52 24 70
19 19 -5 47 4 63 20 26 26 104 61 143 63 56 3 288 240 304 309 30 140 -63 182
-166 74 -46 -49 -93 -75 -165 -90 -55 -12 -126 -41 -157 -63 -55 -42 -163 -77
-265 -87 -30 -3 -77 -21 -106 -39 -46 -30 -53 -31 -63 -4 -9 22 -35 29 -91 24
-44 -3 -84 2 -89 11 -6 9 -28 16 -50 16 -35 0 -38 9 -28 75 27 164 37 199 102
351 38 87 68 191 68 231 0 82 92 826 112 903 43 167 25 256 -36 185z m0 -1894
c6 -89 -44 -109 -90 -35 -20 30 -44 60 -55 68 -25 18 67 53 109 42 20 -5 34
-34 36 -75z m829 -911 c52 0 43 -42 -20 -94 -50 -42 -52 -48 -20 -67 47 -28
44 -70 -6 -105 -29 -21 -43 -57 -49 -121 -12 -150 111 -230 315 -206 96 11
101 10 69 -22 -89 -88 -405 -3 -527 142 -104 124 29 520 163 484 22 -6 56 -11
75 -11z m145 -120 c0 -37 -67 -51 -97 -21 -17 17 -15 28 7 42 41 26 90 15 90
-21z m178 -112 c35 -90 -6 -143 -108 -140 -61 2 -75 56 -31 123 36 56 120 66
139 17z m-148 -239 c39 -3 77 -7 85 -8 8 0 15 -9 15 -19 0 -27 -70 -39 -107
-18 -21 12 -33 11 -33 -3 0 -32 -63 -25 -103 12 -54 49 -46 74 18 57 30 -8 87
-17 125 -21z m-86 -236 c-11 -31 -170 -26 -200 7 -13 14 -15 21 -3 14 11 -6
32 -5 45 3 36 23 167 2 158 -24z m-710 -95 c26 -14 36 -15 28 -1 -7 11 -5 25
4 30 28 18 27 -139 -1 -163 -43 -35 -230 -44 -257 -12 -18 22 -17 28 5 29 18
0 14 11 -13 32 -30 24 -31 29 -7 21 21 -7 39 2 48 22 12 29 17 26 30 -16 l15
-50 2 55 c1 41 12 55 42 55 24 0 41 14 42 35 1 21 5 25 11 10 6 -14 29 -35 51
-47z" />
<path d="M1030 5939 c-8 -34 -26 -67 -42 -72 -15 -6 -28 -21 -28 -32 0 -12
-21 -49 -46 -83 -67 -89 -79 -112 -58 -112 10 0 40 31 66 70 27 38 62 70 78
70 27 1 27 3 0 20 -20 13 -22 19 -5 20 14 0 25 11 25 24 0 13 34 54 75 90 l75
65 -63 1 c-55 0 -66 -8 -77 -61z" />
<path d="M1404 5965 c4 -19 -7 -48 -24 -65 -17 -16 -22 -23 -11 -15 32 25 51
17 51 -20 1 -28 4 -30 18 -7 10 16 15 38 10 50 -5 12 15 23 44 25 29 2 60 14
68 28 9 14 38 20 68 15 29 -6 52 -3 52 7 0 9 -64 17 -141 17 -125 0 -141 -4
-135 -35z" />
<path d="M5841 5961 c-25 -46 -28 -155 -4 -169 22 -14 143 136 143 177 0 47
-113 41 -139 -8z" />
<path d="M5948 5798 c-41 -51 -69 -158 -42 -158 17 -1 16 -6 -2 -17 -25 -16
-87 -259 -114 -447 -103 -716 -594 -1689 -975 -1929 -154 -98 -299 -249 -286
-301 9 -36 -3 -54 -65 -94 -92 -58 -177 -155 -221 -251 -17 -39 -47 -89 -67
-112 -35 -41 -32 -189 5 -189 35 0 200 231 191 267 -6 25 20 67 77 125 47 48
102 120 120 159 35 73 189 189 252 189 72 0 121 -97 71 -138 -16 -13 -43 -53
-62 -88 -57 -110 -78 -142 -130 -196 -27 -29 -108 -113 -179 -188 -95 -99
-168 -153 -273 -203 -193 -92 -386 -338 -468 -597 -14 -44 -41 -107 -60 -140
-20 -33 -74 -150 -120 -260 -105 -248 -335 -703 -429 -849 -39 -60 -71 -118
-71 -129 0 -10 -14 -33 -31 -50 -16 -18 -50 -63 -75 -102 -93 -143 -434 -71
-434 92 0 44 -194 200 -283 227 -56 18 -171 26 -326 23 -370 -6 -434 37 -216
145 74 37 176 88 225 113 50 26 115 60 146 75 31 16 93 31 137 35 45 3 88 14
94 25 7 11 41 34 76 52 50 26 67 51 87 132 24 99 47 125 67 76 5 -14 11 -4 11
21 1 30 -6 41 -21 32 -16 -10 -19 3 -9 44 7 32 15 72 16 88 1 17 11 36 21 42
27 18 -27 96 -58 84 -15 -6 -46 -74 -69 -153 -58 -198 -170 -300 -386 -355
-84 -21 -277 -135 -467 -277 -36 -27 -65 -65 -65 -86 0 -21 -9 -32 -20 -25
-12 7 -52 2 -90 -10 -93 -31 -68 -86 42 -93 41 -3 116 -23 167 -44 82 -35 109
-37 281 -18 265 30 496 -42 568 -175 12 -22 27 -44 32 -50 6 -5 27 -30 48 -55
l38 -45 -453 0 -454 0 29 45 c44 67 2 127 -150 216 -154 91 -165 87 -148 -62
17 -148 2 -194 -66 -205 -30 -4 366 -9 880 -11 l934 -3 -49 53 c-74 79 -57
114 31 67 31 -17 44 -10 73 40 20 33 44 60 53 60 10 0 13 13 7 29 -6 17 -3 35
8 42 10 6 19 3 19 -8 0 -10 13 -24 29 -30 22 -8 27 6 23 63 -6 84 42 204 82
204 26 0 57 95 53 165 -1 19 11 35 26 35 16 0 34 14 40 31 7 17 23 27 36 22
42 -16 74 59 48 115 -33 72 -8 128 38 87 30 -26 82 -40 220 -58 14 -2 25 -12
25 -22 0 -9 7 -13 16 -8 27 17 66 -19 69 -64 4 -46 21 -51 85 -23 38 16 38 17
-5 19 -25 0 -45 9 -45 18 0 10 25 14 55 9 l55 -9 -63 42 c-58 39 -164 231
-140 254 5 6 -18 36 -52 69 -67 64 -90 64 -57 1 45 -83 13 -223 -49 -223 -24
0 -26 8 -10 39 22 39 7 93 -44 167 -21 30 -19 41 8 61 28 21 29 29 5 62 -33
45 -37 163 -7 182 12 7 65 -29 119 -79 131 -122 194 -119 184 10 -4 45 2 51
44 43 82 -15 121 19 78 68 -62 69 -104 73 -118 11 -8 -30 -24 -67 -38 -84 -13
-16 -30 -46 -36 -65 -7 -19 -22 -35 -33 -35 -33 0 -24 75 21 180 59 137 47
185 -30 113 -55 -51 -106 -59 -56 -9 13 13 24 44 24 69 0 59 25 72 71 38 32
-23 41 -22 61 5 23 32 148 -67 148 -116 0 -22 63 -47 103 -42 23 3 31 -7 25
-32 -7 -27 22 -56 115 -113 l125 -78 65 35 c36 19 85 61 109 93 51 66 95 72
160 20 l46 -38 -39 -127 c-21 -71 -36 -131 -33 -134 7 -7 -108 -104 -124 -104
-26 0 -10 101 26 164 51 90 68 170 39 188 -25 15 -117 -84 -117 -126 0 -45
-70 -66 -147 -44 -139 38 -142 -11 -7 -96 190 -120 278 -154 304 -119 14 18
31 33 39 33 34 0 513 -389 644 -523 233 -241 347 -369 347 -394 0 -13 10 -23
21 -23 12 0 17 -16 11 -35 -6 -19 -3 -48 7 -64 12 -19 11 -39 -3 -55 -16 -20
-11 -26 22 -26 38 0 42 11 42 128 l0 128 -195 185 c-195 185 -439 395 -643
554 -60 47 -96 85 -80 85 15 -1 51 -18 78 -40 28 -22 58 -39 67 -40 9 0 58
-36 108 -80 103 -91 130 -99 121 -35 -3 25 -18 45 -33 45 -14 0 -39 17 -54 39
-16 21 -34 32 -41 25 -7 -7 -43 11 -80 39 -38 29 -68 44 -68 35 0 -32 -41 26
-50 71 -12 61 -28 76 -48 44 -13 -21 -19 -19 -29 6 -7 19 -4 28 7 21 12 -8 20
23 20 78 0 49 7 94 16 100 19 11 6 152 -13 152 -7 0 -43 27 -81 60 -46 41 -82
57 -115 51 -27 -5 -43 0 -36 10 21 35 -32 19 -76 -21 -24 -23 -55 -37 -69 -31
-23 9 -33 -15 -32 -80 0 -18 -33 -21 -130 -12 -15 2 -22 10 -17 19 6 9 -8 17
-30 19 -47 3 -193 124 -195 161 -1 15 -10 21 -20 15 -10 -6 -23 3 -29 19 -7
17 -23 30 -37 30 -14 1 -47 23 -73 50 -48 50 -47 110 2 110 14 0 34 20 45 45
12 25 36 44 57 42 22 -2 32 7 26 23 -7 17 12 35 48 47 33 12 59 15 59 9 0 -7
21 13 48 43 34 40 50 48 58 28 8 -19 11 -16 12 8 1 19 11 35 21 35 28 0 121
91 121 117 0 13 18 23 40 23 22 0 40 13 40 30 0 17 7 31 15 31 8 1 35 6 59 10
24 5 56 -3 70 -18 15 -14 37 -23 49 -19 13 5 29 -10 37 -33 7 -23 25 -41 39
-41 15 0 31 -12 37 -27 6 -16 54 -49 107 -75 91 -44 94 -47 47 -60 -43 -12
-44 -14 -8 -16 23 -1 58 -20 78 -42 20 -22 41 -36 46 -30 6 5 22 0 37 -13 15
-12 27 -16 27 -8 0 7 23 -12 52 -43 28 -31 45 -43 37 -28 -10 19 -7 23 8 14
13 -8 23 -27 23 -43 0 -15 11 -24 25 -18 14 5 40 -17 58 -49 22 -40 52 -61 90
-65 33 -4 55 -18 52 -32 -3 -14 22 -42 55 -62 33 -20 54 -42 47 -49 -7 -7 6
-9 29 -5 43 9 74 -36 51 -74 -7 -12 0 -31 16 -43 17 -12 35 -43 42 -68 9 -37
6 -42 -15 -24 -21 17 -25 8 -23 -44 2 -36 12 -73 23 -81 12 -8 8 -15 -10 -15
-27 -1 -27 -3 0 -20 24 -15 24 -19 3 -20 -22 0 -23 -6 -4 -29 13 -16 18 -48
11 -70 -8 -25 -4 -41 10 -41 12 0 17 -9 10 -20 -7 -12 -21 -16 -30 -10 -10 6
-10 -14 -2 -45 9 -30 12 -67 7 -81 -5 -14 1 -37 13 -52 17 -20 15 -33 -7 -51
-20 -16 -24 -37 -14 -58 22 -46 26 -148 6 -179 -30 -47 -154 -1 -148 54 4 36
-2 42 -35 32 -41 -13 -150 53 -127 77 12 12 -77 53 -114 53 -57 0 7 -68 199
-209 118 -87 235 -186 259 -219 l43 -61 0 659 0 660 -195 149 c-107 82 -372
282 -588 445 -374 282 -463 365 -382 354 47 -6 147 43 133 66 -6 10 -1 30 12
46 13 16 18 37 12 47 -7 10 2 24 19 31 30 11 33 95 4 123 -48 49 519 601 894
871 86 61 91 70 89 156 0 51 -6 81 -11 67 -6 -14 -111 -108 -234 -209 -244
-202 -311 -261 -585 -519 -250 -236 -403 -287 -183 -62 221 227 318 336 346
389 16 29 45 65 65 80 32 23 67 81 72 119 1 8 22 36 45 64 51 58 147 225 147
255 0 11 18 39 41 64 22 24 31 47 20 50 -12 4 -9 19 8 36 16 16 24 43 18 59
-7 17 2 46 18 65 32 36 58 125 59 199 0 25 9 45 20 45 11 0 15 13 9 29 -6 17
-3 35 7 41 10 6 13 26 6 44 -9 22 -5 28 11 18 12 -8 23 -4 23 8 0 12 10 16 21
9 12 -7 16 -27 10 -44 -6 -16 -1 -42 11 -58 17 -20 17 -27 -1 -27 -13 0 -18
-9 -11 -20 7 -11 2 -20 -11 -20 -14 0 -18 -13 -8 -35 8 -19 14 -51 13 -70 -1
-19 7 -39 17 -46 12 -7 10 -28 -3 -54 -19 -34 -17 -47 10 -66 29 -21 29 -29 6
-52 -17 -17 -22 -43 -13 -67 8 -22 5 -52 -6 -66 -15 -18 -10 -33 17 -53 37
-27 38 -16 43 389 10 732 -2 1290 -27 1258z" />
<path d="M1313 5771 c-7 -19 -34 -26 -83 -22 -61 6 -70 2 -60 -28 7 -24 -6
-47 -39 -69 -28 -18 -51 -46 -51 -62 0 -17 -8 -30 -18 -30 -26 0 -107 -135
-94 -156 5 -9 -10 -16 -34 -15 -26 0 -42 -10 -39 -25 3 -14 -23 -84 -57 -156
-35 -71 -57 -135 -51 -142 17 -17 113 89 113 126 0 16 13 34 29 40 16 6 24 24
18 40 -7 16 1 28 18 28 37 0 118 70 101 87 -7 7 -2 13 10 13 13 0 48 38 77 85
29 47 64 94 76 105 55 49 94 109 102 158 11 56 0 70 -18 23z" />
<path d="M290 5601 c-38 -17 -13 -32 38 -22 10 2 7 -11 -7 -28 -23 -27 -22
-30 6 -19 18 7 33 19 33 26 0 8 34 10 75 6 56 -6 69 -3 53 15 -29 31 -149 44
-198 22z" />
<path d="M4860 5458 c-36 -10 -39 -15 -13 -16 23 -1 33 -13 27 -29 -6 -15 6
-41 26 -58 33 -29 37 -28 45 17 5 26 2 48 -6 48 -9 0 -19 12 -23 26 -4 18 -22
22 -56 12z" />
<path d="M4960 5333 c0 -15 16 -49 37 -75 20 -27 43 -66 52 -88 11 -28 19 -32
25 -14 6 15 -9 48 -33 73 -24 25 -45 65 -46 88 -4 47 -35 60 -35 16z" />
<path d="M2 5135 c-1 -64 7 -115 18 -115 11 0 20 -16 20 -35 1 -28 4 -29 18
-7 14 22 20 20 28 -10 8 -32 10 -30 12 8 1 25 -15 84 -35 130 -21 46 -43 98
-49 114 -6 17 -12 -22 -12 -85z" />
<path d="M1441 5156 c-30 -32 -35 -48 -17 -58 33 -21 56 -3 56 43 0 25 10 34
30 26 17 -6 30 -1 30 11 0 37 -56 25 -99 -22z" />
<path d="M214 5101 c-11 -42 33 -119 51 -89 15 24 -5 128 -25 128 -8 0 -20
-18 -26 -39z" />
<path d="M1185 5042 c3 -10 -38 -60 -91 -111 -58 -56 -90 -102 -82 -116 8 -14
7 -19 -1 -11 -23 21 -91 -20 -91 -55 0 -16 -11 -29 -24 -29 -17 0 -18 -6 -3
-21 23 -23 92 -4 77 21 -5 8 4 27 20 40 17 14 30 17 30 7 0 -9 9 -4 19 13 11
16 35 30 53 30 19 0 39 13 44 28 6 18 0 23 -18 13 -16 -8 -12 -1 7 14 19 16
28 36 20 45 -8 9 -4 10 10 2 41 -24 68 6 44 50 -16 30 -14 41 10 50 40 16 40
48 1 48 -16 0 -28 -8 -25 -18z" />
<path d="M154 4762 c14 -53 -53 -154 -79 -118 -14 19 -16 18 -8 -7 6 -19 -7
-54 -28 -78 -22 -25 -39 -64 -39 -87 1 -35 7 -32 42 23 23 36 52 66 65 68 13
2 32 5 43 8 11 2 32 5 46 7 36 3 1 222 -35 222 -10 0 -13 -17 -7 -38z" />
<path d="M1831 4604 c2 -19 9 -47 16 -64 6 -16 26 -75 44 -130 73 -224 109
-281 259 -417 297 -269 378 -318 634 -385 95 -25 190 -54 211 -65 21 -11 99
-35 174 -52 188 -44 619 -268 714 -371 106 -117 120 -300 22 -300 -46 0 -19
-65 35 -85 24 -10 23 -12 -5 -13 -19 -1 -35 -11 -35 -22 0 -11 -13 -20 -29
-20 -16 0 -43 -20 -60 -44 -17 -25 -31 -37 -31 -28 0 9 -13 6 -29 -8 -35 -28
9 -140 55 -140 13 0 50 -14 82 -30 72 -38 58 -57 143 201 71 218 87 374 47
479 -8 22 -21 58 -30 80 -8 22 -17 45 -19 50 -2 6 -11 29 -18 53 -8 23 -36 52
-63 64 -50 23 -62 61 -28 95 13 13 -15 63 -84 149 -57 71 -101 133 -98 137 3
4 -24 26 -61 49 -56 35 -62 36 -39 6 27 -33 25 -34 -24 -11 -29 13 -48 32 -42
41 6 9 -4 17 -21 17 -17 0 -31 -11 -32 -25 0 -14 -15 0 -34 30 -42 68 -87 83
-182 63 -83 -17 -105 -18 -202 -2 -37 7 -114 2 -170 -9 -141 -29 -270 -21
-342 21 -33 19 -83 41 -112 48 -179 45 -479 337 -579 565 -42 94 -74 128 -67
73z m1569 -844 c32 17 37 15 27 -10 -6 -16 -1 -30 13 -30 13 0 20 -11 15 -25
-5 -14 39 -48 103 -80 108 -55 182 -116 182 -151 0 -19 -124 -25 -140 -6 -5 7
-28 22 -50 35 -22 13 -38 33 -35 46 6 25 -90 70 -133 63 -15 -3 -33 3 -40 13
-15 23 -167 49 -153 26 6 -9 -23 -8 -64 2 -41 10 -109 24 -150 30 -41 7 -75
20 -75 30 0 9 -16 17 -35 17 -30 1 -31 3 -5 21 17 11 79 15 140 9 61 -6 151
-3 200 6 51 10 105 10 125 0 21 -10 51 -9 75 4z" />
<path d="M40 4232 c0 -16 30 -68 66 -115 36 -48 90 -130 120 -182 63 -108 84
-117 103 -43 19 76 -4 124 -77 158 -35 17 -90 71 -121 121 -57 90 -91 113 -91
61z" />
<path d="M5165 4172 c-7 -11 -1 -23 12 -28 13 -4 17 -17 10 -29 -8 -12 10 -5
39 17 29 21 53 45 53 53 1 21 -100 10 -114 -13z" />
<path d="M5120 3992 c0 -33 11 -52 30 -52 17 0 30 12 30 28 0 15 -13 38 -30
52 -25 21 -30 17 -30 -28z" />
<path d="M1829 3948 c8 -43 22 -86 32 -97 31 -31 49 8 23 50 -13 21 -24 52
-24 68 0 16 -10 35 -23 43 -16 10 -19 -8 -8 -64z" />
<path d="M4904 3955 c-20 -25 -19 -33 7 -43 17 -6 26 -20 20 -30 -6 -11 -3
-25 9 -32 11 -7 20 -19 20 -28 0 -18 -61 -16 -93 4 -12 7 -34 -1 -49 -18 -22
-27 -20 -31 13 -25 21 4 38 -3 39 -16 0 -44 30 -54 30 -10 0 24 9 43 20 43 11
0 20 -13 20 -30 0 -16 9 -30 21 -30 30 0 48 59 24 83 -23 23 -10 97 17 97 9 0
11 14 5 31 -9 22 -19 24 -37 9 -19 -16 -28 -15 -34 1 -5 16 -15 14 -32 -6z" />
<path d="M5951 3721 c-10 -17 -17 -56 -14 -88 4 -61 -30 -120 -59 -102 -30 19
-20 -24 12 -51 16 -13 25 -32 19 -41 -5 -9 -1 -21 9 -28 17 -10 -3 -142 -25
-165 -6 -6 2 -24 18 -40 30 -30 33 -141 4 -159 -8 -5 -11 -17 -6 -26 5 -8 2
-44 -8 -79 -10 -34 -11 -58 -1 -52 9 6 23 2 30 -10 7 -11 1 -20 -14 -20 -20
-1 -20 -5 2 -18 16 -10 22 -32 15 -51 -7 -19 -23 -27 -35 -20 -12 8 -8 -8 10
-35 18 -27 28 -53 24 -58 -5 -4 -11 -53 -14 -108 -3 -55 -15 -107 -27 -115
-14 -9 -13 -14 4 -15 26 0 35 -64 12 -86 -7 -8 -24 -5 -37 6 -16 13 -23 10
-23 -9 0 -16 7 -25 15 -20 22 14 40 -23 50 -105 6 -46 0 -79 -16 -89 -21 -13
-20 -16 1 -17 22 0 23 -6 4 -28 -16 -20 -16 -33 -2 -41 35 -22 24 -51 -20 -51
-23 0 -36 -9 -29 -20 7 -11 1 -20 -14 -21 -17 0 -14 -9 9 -27 19 -14 35 -35
35 -46 0 -25 77 -96 90 -82 6 5 8 445 5 978 -3 618 -12 957 -24 939z" />
<path d="M4822 3672 c-28 -33 -102 -55 -102 -30 0 10 -17 2 -37 -17 -20 -19
-30 -44 -21 -55 24 -32 -8 -140 -42 -140 -16 0 -27 -12 -24 -28 3 -15 -12 -46
-33 -70 -21 -23 -44 -64 -52 -92 -11 -42 -9 -44 9 -15 12 19 42 35 66 35 36 1
38 4 14 20 -26 17 -25 19 4 20 18 0 52 25 74 55 23 30 51 66 62 79 11 13 20
33 20 43 0 11 28 29 62 41 75 26 57 71 -23 55 l-55 -11 49 49 c27 27 58 45 68
38 10 -6 13 3 7 20 -15 38 -17 38 -46 3z" />
<path d="M2144 3591 c8 -9 6 -32 -4 -51 -22 -41 34 -119 75 -105 35 12 31 45
-4 45 -18 0 -25 12 -18 30 6 17 1 30 -12 30 -13 0 -18 8 -12 19 6 10 0 25 -14
33 -14 8 -19 7 -11 -1z" />
<path d="M2158 3365 c-2 -8 -2 -22 0 -30 1 -8 -5 -15 -14 -15 -22 0 -25 -77
-4 -90 23 -14 106 105 90 130 -14 23 -69 27 -72 5z" />
<path d="M2145 3169 c-11 -22 -13 -57 -4 -79 9 -22 17 -72 18 -111 1 -58 9
-71 46 -74 24 -2 35 3 24 11 -12 8 -20 62 -18 120 3 124 -33 196 -66 133z" />
<path d="M2687 2945 c-163 -68 -286 -238 -300 -413 -8 -108 -5 -119 79 -292
68 -139 68 -141 -11 -133 -48 6 -67 19 -76 55 l-11 48 -24 -44 c-51 -93 0
-158 121 -154 44 2 75 -7 75 -20 0 -142 502 -179 755 -56 202 98 140 129 -84
42 -98 -38 -178 -58 -211 -51 -28 6 -64 3 -80 -7 -17 -10 -43 -6 -68 11 -23
16 -60 29 -84 29 -48 0 -138 64 -169 121 -22 41 20 37 79 -9 46 -36 499 -29
522 8 13 21 9 33 -15 42 -29 10 -28 16 12 50 88 74 123 156 127 297 6 192 86
193 134 1 43 -172 9 -241 -155 -309 -102 -42 -77 -68 50 -53 141 16 134 11
197 144 69 145 64 253 -14 344 -31 36 -56 73 -56 82 0 37 -220 184 -348 232
-182 68 -337 81 -445 35z m261 -102 c6 -9 -25 -43 -68 -75 -57 -42 -79 -73
-80 -111 0 -28 -14 -64 -32 -79 -87 -72 12 -363 144 -423 86 -39 59 -72 -44
-53 -215 41 -348 170 -348 340 0 98 61 286 108 334 59 60 294 109 320 67z
m175 -109 c78 -27 137 -69 137 -96 0 -28 -42 -20 -130 22 -93 45 -133 49 -165
17 -12 -12 -39 -16 -59 -8 -116 45 93 108 217 65z m28 -184 c18 -94 -16 -134
-109 -126 -58 5 -73 15 -79 52 -19 136 163 208 188 74z m29 -270 c0 -21 -124
-120 -149 -120 -42 0 -150 87 -151 122 0 6 68 11 150 11 83 0 150 -6 150 -13z" />
<path d="M2132 2847 c-16 -41 20 -84 47 -56 11 12 8 33 -8 55 -24 33 -27 33
-39 1z" />
<path d="M4653 2768 c-31 -17 -73 -68 -93 -114 -38 -85 -34 -135 5 -65 12 21
57 78 101 125 83 91 80 104 -13 54z" />
<path d="M2110 2680 c7 -11 -1 -73 -18 -137 -27 -108 -29 -260 -2 -302 5 -10
-12 -15 -40 -12 -27 3 -50 -5 -50 -17 0 -12 -10 -8 -22 8 -16 23 -23 24 -31 4
-6 -14 -32 -51 -59 -83 -26 -31 -48 -69 -48 -84 0 -15 -18 -39 -40 -52 -22
-14 -40 -36 -40 -48 0 -13 -22 -53 -50 -89 -27 -36 -50 -74 -50 -84 0 -10 -38
-75 -84 -146 -46 -70 -85 -134 -85 -142 -1 -8 -19 -35 -41 -60 -40 -47 -43
-54 -47 -106 -2 -16 -15 -30 -29 -30 -26 0 -86 -135 -68 -152 26 -26 114 -27
114 -1 0 15 27 61 60 103 33 41 54 83 48 93 -6 9 4 23 21 29 17 7 31 29 31 48
0 20 8 40 18 43 10 4 21 25 25 47 4 22 16 51 27 64 62 76 74 86 88 77 9 -5 17
23 18 63 3 76 23 113 38 71 5 -14 26 -34 46 -45 48 -26 43 22 -9 79 -21 23
-27 41 -14 41 13 0 23 15 23 34 0 55 36 4 46 -66 12 -75 48 -148 75 -148 31 0
22 35 -13 48 -42 16 -26 57 26 65 40 6 77 -39 58 -71 -5 -7 8 -13 29 -13 46 0
51 36 9 71 -16 14 -30 51 -30 82 0 42 -8 54 -30 45 -16 -6 -30 -1 -30 12 0 13
9 18 19 12 31 -20 81 95 58 135 -13 23 -12 34 2 34 12 0 21 23 21 50 0 28 8
50 19 50 25 0 35 77 19 153 -11 52 -8 62 18 52 19 -7 26 -4 17 10 -8 12 -6 58
4 102 10 43 11 91 2 105 -9 15 -7 38 5 52 16 20 11 26 -23 26 -24 0 -38 -9
-31 -20z" />
<path d="M432 2403 c-7 -10 -30 -15 -52 -9 -26 7 -40 1 -40 -17 0 -24 -84 -77
-122 -77 -17 0 -158 -134 -158 -150 0 -14 195 84 265 134 31 22 50 47 44 58
-6 10 7 18 29 18 39 0 75 33 56 53 -5 5 -15 1 -22 -10z" />
<path d="M113 2037 c-62 -55 -108 -110 -101 -121 8 -12 18 -13 26 -1 28 43
145 47 156 5 13 -47 71 -53 106 -10 41 49 64 35 50 -30 -16 -75 6 -75 65 -1
l44 56 -81 56 c-45 31 -97 77 -117 102 l-35 45 -113 -101z" />
<path d="M1450 2057 c-90 -50 -182 -212 -142 -252 14 -14 92 53 92 79 0 10 32
48 70 85 99 93 87 147 -20 88z" />
<path d="M3580 1663 c0 -10 -21 -13 -46 -9 -27 6 -57 -4 -73 -22 -16 -21 -18
-32 -4 -32 12 0 16 -15 9 -33 -10 -25 -6 -29 16 -16 15 10 40 20 55 22 59 9
87 29 76 56 -6 16 0 33 13 38 13 5 8 11 -11 11 -19 1 -35 -6 -35 -15z" />
<path d="M3365 1604 c7 -27 -1 -46 -22 -54 -30 -11 -29 -15 4 -33 44 -25 54
-17 59 53 2 33 -8 60 -24 65 -20 8 -25 -1 -17 -31z" />
<path d="M2240 1435 c0 -8 -12 -15 -27 -15 -15 0 -37 -23 -50 -51 -28 -61 -30
-91 -3 -49 10 17 26 30 35 30 9 0 45 23 80 50 63 49 63 50 14 50 -27 0 -49 -7
-49 -15z" />
<path d="M2631 902 c-13 -21 105 -53 124 -34 6 7 -3 12 -22 12 -18 0 -33 9
-33 20 0 25 -54 26 -69 2z" />
<path d="M2561 799 c22 -22 35 -49 29 -60 -7 -10 -2 -19 11 -19 15 0 19 -18
10 -52 -7 -30 -5 -47 6 -40 27 17 43 -37 43 -145 0 -205 26 -423 50 -423 35 0
91 137 100 243 4 50 12 126 19 169 6 43 6 67 -1 53 -21 -47 -53 -26 -40 26 9
34 2 61 -19 82 -17 18 -27 44 -21 59 6 15 1 32 -9 39 -11 6 -14 21 -7 33 7 11
1 28 -14 38 -45 28 -63 21 -52 -22 6 -22 2 -40 -8 -40 -10 0 -18 13 -18 29 0
16 -17 39 -39 50 -63 34 -84 24 -40 -20z" />
<path d="M1064 674 c3 -24 22 -47 41 -50 52 -10 46 69 -6 82 -33 9 -40 3 -35
-32z" />
<path d="M2839 665 c-1 -8 -6 -35 -10 -59 -6 -33 1 -43 30 -41 30 3 34 11 19
39 -13 24 -12 36 2 36 13 0 17 9 10 20 -14 23 -49 27 -51 5z" />
<path d="M4690 641 c-6 -11 23 -37 64 -58 42 -22 117 -87 166 -146 50 -59 108
-125 131 -147 44 -43 44 -110 0 -110 -33 0 -75 -49 -58 -67 7 -7 25 -3 40 9
14 13 58 19 97 14 50 -6 70 0 70 19 0 15 -8 22 -19 16 -21 -13 -50 24 -53 69
-1 17 -3 50 -5 75 -2 26 -16 45 -34 45 -17 0 -27 7 -21 16 5 9 -8 29 -29 45
-21 15 -39 35 -39 43 0 18 -74 96 -91 96 -7 0 -41 23 -77 50 -69 52 -121 64
-142 31z" />
<path d="M4540 541 c0 -21 -9 -44 -20 -51 -30 -19 -24 -50 10 -50 20 0 30 20
30 58 0 32 11 63 25 69 15 6 11 10 -10 11 -22 1 -35 -13 -35 -37z" />
<path d="M4613 507 c-24 -24 -14 -87 14 -87 15 0 43 -18 63 -40 20 -22 29 -40
19 -40 -45 0 31 -41 88 -47 35 -5 82 -24 104 -44 80 -72 96 1 18 83 -129 135
-267 213 -306 175z" />
<path d="M1880 183 c0 -15 28 -31 153 -88 24 -11 53 -14 65 -6 12 7 22 4 22
-8 0 -13 48 -20 122 -18 l123 2 -78 37 c-105 49 -407 109 -407 81z" />
<path d="M461 51 c-13 -16 -57 -32 -98 -37 -40 -4 31 -7 157 -7 127 0 196 3
155 8 -74 7 -98 32 -50 52 14 5 -12 11 -58 11 -49 1 -92 -10 -106 -27z" />
<path d="M3337 18 c-16 -11 29 -17 113 -16 152 1 154 9 7 24 -51 5 -105 1
-120 -8z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24">
<path fill="#414141" d="M10 21H14C14 22.1 13.1 23 12 23S10 22.1 10 21M21 19V20H3V19L5 17V11C5 7.9 7 5.2 10 4.3V4C10 2.9 10.9 2 12 2S14 2.9 14 4V4.3C17 5.2 19 7.9 19 11V17L21 19M17 11C17 8.2 14.8 6 12 6S7 8.2 7 11V18H17V11Z" />
</svg>

After

Width:  |  Height:  |  Size: 515 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 43 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path d="M13,15V9H12L10,10V11H11.5V15M17,17H7V14L3,18L7,22V19H19V13H17M7,7H17V10L21,6L17,2V5H5V11H7V7Z" /></svg>

After

Width:  |  Height:  |  Size: 388 B

View File

@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path d="M17,17H7V14L3,18L7,22V19H19V13H17M7,7H17V10L21,6L17,2V5H5V11H7V7Z" /></svg>

After

Width:  |  Height:  |  Size: 360 B

View File

@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path d="M17,3L22.25,7.5L17,12L22.25,16.5L17,21V18H14.26L11.44,15.18L13.56,13.06L15.5,15H17V12L17,9H15.5L6.5,18H2V15H5.26L14.26,6H17V3M2,6H6.5L9.32,8.82L7.2,10.94L5.26,9H2V6Z" /></svg>

After

Width:  |  Height:  |  Size: 460 B

View File

@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path d="M12,20C16.42,20 20,16.42 20,12C20,7.58 16.42,4 12,4C7.58,4 4,7.58 4,12C4,16.42 7.58,20 12,20M12,2C17.52,2 22,6.48 22,12C22,17.52 17.52,22 12,22C6.47,22 2,17.5 2,12C2,6.48 6.48,2 12,2M12.5,7V12.25L17,14.92L16.25,16.15L11,13V7H12.5Z" /></svg>

After

Width:  |  Height:  |  Size: 525 B

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24">
<path d="M4,6H20V16H4M20,18C21.1,18 22,17.1 22,16V6C22,4.89 21.1,4 20,4H4C2.89,4 2,4.89 2,6V16C2,17.1 2.9,18 4,18H0V20H24V18H20Z" />
</svg>

After

Width:  |  Height:  |  Size: 421 B

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24">
<path d="M19,16C19,17.72 18.37,19.3 17.34,20.5C17.75,20.89 18,21.41 18,22H6C6,21.41 6.25,20.89 6.66,20.5C5.63,19.3 5,17.72 5,16H3C3,14.75 3.57,13.64 4.46,12.91L4.47,12.89C6,11.81 7,10 7,8V7C7,4.24 9.24,2 12,2C14.76,2 17,4.24 17,7V8C17,10 18,11.81 19.53,12.89L19.54,12.91C20.43,13.64 21,14.75 21,16H19M16,16C16,13.79 14.21,12 12,12C9.79,12 8,13.79 8,16C8,18.21 9.79,20 12,20C14.21,20 16,18.21 16,16M10,9L12,10.5L14,9L12,7.5L10,9M10,5C9.45,5 9,5.45 9,6C9,6.55 9.45,7 10,7C10.55,7 11,6.55 11,6C11,5.45 10.55,5 10,5M14,5C13.45,5 13,5.45 13,6C13,6.55 13.45,7 14,7C14.55,7 15,6.55 15,6C15,5.45 14.55,5 14,5Z" />
</svg>

After

Width:  |  Height:  |  Size: 894 B

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24">
<path d="M12,4C14.21,4 16,5.79 16,8C16,10.21 14.21,12 12,12C9.79,12 8,10.21 8,8C8,5.79 9.79,4 12,4M12,6C10.9,6 10,6.9 10,8C10,9.1 10.9,10 12,10C13.1,10 14,9.1 14,8C14,6.9 13.1,6 12,6M12,13C14.67,13 20,14.33 20,17V20H4V17C4,14.33 9.33,13 12,13M12,14.9C9.03,14.9 5.9,16.36 5.9,17V18.1H18.1V17C18.1,16.36 14.97,14.9 12,14.9Z" />
</svg>

After

Width:  |  Height:  |  Size: 614 B

View File

@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path d="M12,3.77L11.25,4.61C11.25,4.61 9.97,6.06 8.68,7.94C7.39,9.82 6,12.07 6,14.23C6,17.54 8.69,20.23 12,20.23C15.31,20.23 18,17.54 18,14.23C18,12.07 16.61,9.82 15.32,7.94C14.03,6.06 12.75,4.61 12.75,4.61L12,3.77M12,6.9C12.44,7.42 12.84,7.85 13.68,9.07C14.89,10.83 16,13.07 16,14.23C16,16.45 14.22,18.23 12,18.23C9.78,18.23 8,16.45 8,14.23C8,13.07 9.11,10.83 10.32,9.07C11.16,7.85 11.56,7.42 12,6.9Z" /></svg>

After

Width:  |  Height:  |  Size: 688 B

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24">
<path fill="#ffab40" d="M17.75,4.09L15.22,6.03L16.13,9.09L13.5,7.28L10.87,9.09L11.78,6.03L9.25,4.09L12.44,4L13.5,1L14.56,4L17.75,4.09M21.25,11L19.61,12.25L20.2,14.23L18.5,13.06L16.8,14.23L17.39,12.25L15.75,11L17.81,10.95L18.5,9L19.19,10.95L21.25,11M18.97,15.95C19.8,15.87 20.69,17.05 20.16,17.8C19.84,18.25 19.5,18.67 19.08,19.07C15.17,23 8.84,23 4.94,19.07C1.03,15.17 1.03,8.83 4.94,4.93C5.34,4.53 5.76,4.17 6.21,3.85C6.96,3.32 8.14,4.21 8.06,5.04C7.79,7.9 8.75,10.87 10.95,13.06C13.14,15.26 16.1,16.22 18.97,15.95M17.33,17.97C14.5,17.81 11.7,16.64 9.53,14.5C7.36,12.31 6.2,9.5 6.04,6.68C3.23,9.82 3.34,14.64 6.35,17.66C9.37,20.67 14.19,20.78 17.33,17.97Z" />
</svg>

After

Width:  |  Height:  |  Size: 949 B

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24">
<path fill="#ffab40" d="M6,19C3.24,19 1,16.76 1,14C1,11.24 3.24,9 6,9C7,6.65 9.3,5 12,5C15.43,5 18.24,7.66 18.5,11.03L19,11C21.21,11 23,12.79 23,15C23,17.21 21.21,19 19,19H6M19,13H17V12C17,9.24 14.76,7 12,7C9.5,7 7.45,8.82 7.06,11.19C6.73,11.07 6.37,11 6,11C4.34,11 3,12.34 3,14C3,15.66 4.34,17 6,17H19C20.1,17 21,16.1 21,15C21,13.9 20.1,13 19,13M13,12H11V8H13V12M13,16H11V14H13" />
</svg>

After

Width:  |  Height:  |  Size: 671 B

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24">
<path fill="#ffab40" d="M6,19A5,5 0 0,1 1,14A5,5 0 0,1 6,9C7,6.65 9.3,5 12,5C15.43,5 18.24,7.66 18.5,11.03L19,11A4,4 0 0,1 23,15A4,4 0 0,1 19,19H6M19,13H17V12A5,5 0 0,0 12,7C9.5,7 7.45,8.82 7.06,11.19C6.73,11.07 6.37,11 6,11A3,3 0 0,0 3,14A3,3 0 0,0 6,17H19A2,2 0 0,0 21,15A2,2 0 0,0 19,13Z" />
</svg>

After

Width:  |  Height:  |  Size: 583 B

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24">
<path fill="#ffab40" d="M3,15H13C13.55,15 14,15.45 14,16C14,16.55 13.55,17 13,17H3C2.45,17 2,16.55 2,16C2,15.45 2.45,15 3,15M16,15H21C21.55,15 22,15.45 22,16C22,16.55 21.55,17 21,17H16C15.45,17 15,16.55 15,16C15,15.45 15.45,15 16,15M1,12C1,9.24 3.24,7 6,7C7,4.65 9.3,3 12,3C15.43,3 18.24,5.66 18.5,9.03L19,9C21.19,9 22.97,10.76 23,13H21C21,11.9 20.1,11 19,11H17V10C17,7.24 14.76,5 12,5C9.5,5 7.45,6.82 7.06,9.19C6.73,9.07 6.37,9 6,9C4.34,9 3,10.34 3,12C3,12.35 3.06,12.69 3.17,13H1.1L1,12M3,19H5C5.55,19 6,19.45 6,20C6,20.55 5.55,21 5,21H3C2.45,21 2,20.55 2,20C2,19.45 2.45,19 3,19M8,19H21C21.55,19 22,19.45 22,20C22,20.55 21.55,21 21,21H8C7.45,21 7,20.55 7,20C7,19.45 7.45,19 8,19Z" />
</svg>

After

Width:  |  Height:  |  Size: 975 B

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24">
<path fill="#ffab40" d="M6,14C6.55,14 7,14.45 7,15C7,15.55 6.55,16 6,16C3.24,16 1,13.76 1,11C1,8.24 3.24,6 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8C21.21,8 23,9.79 23,12C23,14.21 21.21,16 19,16H18C17.45,16 17,15.55 17,15C17,14.45 17.45,14 18,14H19C20.1,14 21,13.1 21,12C21,10.9 20.1,10 19,10H17V9C17,6.24 14.76,4 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8C4.34,8 3,9.34 3,11C3,12.66 4.34,14 6,14M10,18C11.1,18 12,18.9 12,20C12,21.1 11.1,22 10,22C8.9,22 8,21.1 8,20C8,18.9 8.9,18 10,18M14.5,16C15.33,16 16,16.67 16,17.5C16,18.33 15.33,19 14.5,19C13.67,19 13,18.33 13,17.5C13,16.67 13.67,16 14.5,16M10.5,12C11.33,12 12,12.67 12,13.5C12,14.33 11.33,15 10.5,15C9.67,15 9,14.33 9,13.5C9,12.67 9.67,12 10.5,12Z" />
</svg>

After

Width:  |  Height:  |  Size: 1021 B

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24">
<path fill="#ffab40" d="M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64M14,15C14,14.45 13.55,14 13,14H3C2.45,14 2,14.45 2,15C2,15.55 2.45,16 3,16H13C13.55,16 14,15.55 14,15M22,15C22,14.45 21.55,14 21,14H17C16.45,14 16,14.45 16,15C16,15.55 16.45,16 17,16H21C21.55,16 22,15.55 22,15M10,19C10,19.55 10.45,20 11,20H20C20.55,20 21,19.55 21,19C21,18.45 20.55,18 20,18H11C10.45,18 10,18.45 10,19M3,19C3,19.55 3.45,20 4,20H7C7.55,20 8,19.55 8,19C8,18.45 7.55,18 7,18H4C3.45,18 3,18.45 3,19M12,9C13.66,9 15,10.34 15,12H17C17,9.24 14.76,7 12,7C9.24,7 7,9.24 7,12H9C9,10.34 10.34,9 12,9Z" />
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24">
<path fill="#ffab40" d="M15,6.79C16.86,7.86 18,9.85 18,12C18,22 6,22 6,22C7.25,21.06 8.38,19.95 9.34,18.71C9.38,18.66 9.41,18.61 9.44,18.55C9.69,18.06 9.5,17.46 9,17.21C7.14,16.14 6,14.15 6,12C6,2 18,2 18,2C16.75,2.94 15.62,4.05 14.66,5.29C14.62,5.34 14.59,5.39 14.56,5.45C14.31,5.94 14.5,6.54 15,6.79M12,14C13.1,14 14,13.1 14,12C14,10.9 13.1,10 12,10C10.9,10 10,10.9 10,12C10,13.1 10.9,14 12,14Z" />
</svg>

After

Width:  |  Height:  |  Size: 689 B

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24">
<path fill="#ffab40" d="M4.5,13.59C5,13.87 5.14,14.5 4.87,14.96C4.59,15.44 4,15.6 3.5,15.33V15.33C2,14.47 1,12.85 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16A1,1 0 0,1 18,15A1,1 0 0,1 19,14A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11C3,12.11 3.6,13.08 4.5,13.6V13.59M9.5,11H12.5L10.5,15H12.5L8.75,22L9.5,17H7L9.5,11M17.5,18.67C17.5,19.96 16.5,21 15.25,21C14,21 13,19.96 13,18.67C13,17.12 15.25,14.5 15.25,14.5C15.25,14.5 17.5,17.12 17.5,18.67Z" />
</svg>

After

Width:  |  Height:  |  Size: 865 B

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24">
<path fill="#ffab40" d="M6,16C3.24,16 1,13.76 1,11C1,8.24 3.24,6 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8C21.21,8 23,9.79 23,12C23,14.21 21.21,16 19,16H18C17.45,16 17,15.55 17,15C17,14.45 17.45,14 18,14H19C20.1,14 21,13.1 21,12C21,10.9 20.1,10 19,10H17V9C17,6.24 14.76,4 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8C4.34,8 3,9.34 3,11C3,12.66 4.34,14 6,14H7C7.55,14 8,14.45 8,15C8,15.55 7.55,16 7,16H6M12,11H15L13,15H15L11.25,22L12,17H9.5L12,11Z" />
</svg>

After

Width:  |  Height:  |  Size: 760 B

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24">
<path fill="#ffab40" d="M22,10.28C21.74,10.3 21.5,10.31 21.26,10.31C19.32,10.31 17.39,9.57 15.91,8.09C14.25,6.44 13.5,4.19 13.72,2C13.77,1.53 13.22,1 12.71,1C12.57,1 12.44,1.04 12.32,1.12C12,1.36 11.66,1.64 11.36,1.94C9.05,4.24 8.55,7.66 9.84,10.46C8.31,11.11 7.13,12.43 6.69,14.06L6,14C3.79,14 2,15.79 2,18C2,20.21 3.79,22 6,22H19C20.66,22 22,20.66 22,19C22,17.34 20.66,16 19,16C18.42,16 17.88,16.16 17.42,16.45L17.5,15.5C17.5,15.28 17.5,15.05 17.46,14.83C19.14,14.67 20.77,13.94 22.06,12.64C22.38,12.34 22.64,12 22.88,11.68C23.27,11.13 22.65,10.28 22.04,10.28M19,18C19.55,18 20,18.45 20,19C20,19.55 19.55,20 19,20H6C4.9,20 4,19.1 4,18C4,16.9 4.9,16 6,16H8.5V15.5C8.5,13.94 9.53,12.64 10.94,12.18C11.1,12.13 11.26,12.09 11.43,12.06C11.61,12.03 11.8,12 12,12C12.23,12 12.45,12.03 12.66,12.07C12.73,12.08 12.8,12.1 12.87,12.13C13,12.16 13.15,12.2 13.28,12.25C13.36,12.28 13.44,12.32 13.5,12.36C13.63,12.41 13.74,12.47 13.84,12.54C13.92,12.59 14,12.64 14.07,12.7C14.17,12.77 14.25,12.84 14.34,12.92C14.41,13 14.5,13.05 14.55,13.12C14.63,13.2 14.69,13.29 14.76,13.37C14.82,13.45 14.89,13.53 14.94,13.62C15,13.71 15.04,13.8 15.09,13.9C15.14,14 15.2,14.08 15.24,14.18C15.41,14.59 15.5,15.03 15.5,15.5V18M16.83,12.86C15.9,11.16 14.08,10 12,10H11.87C11.41,9.19 11.14,8.26 11.14,7.29C11.14,6.31 11.39,5.37 11.86,4.55C12.21,6.41 13.12,8.14 14.5,9.5C15.86,10.88 17.58,11.79 19.45,12.14C18.66,12.6 17.76,12.84 16.83,12.86Z" />
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24">
<path fill="#ffab40" d="M12.74,5.47C15.1,6.5 16.35,9.03 15.92,11.46C17.19,12.56 18,14.19 18,16V16.17C18.31,16.06 18.65,16 19,16C20.66,16 22,17.34 22,19C22,20.66 20.66,22 19,22H6C3.79,22 2,20.21 2,18C2,15.79 3.79,14 6,14H6.27C5,12.45 4.6,10.24 5.5,8.26C6.72,5.5 9.97,4.24 12.74,5.47M11.93,7.3C10.16,6.5 8.09,7.31 7.31,9.07C6.85,10.09 6.93,11.22 7.41,12.13C8.5,10.83 10.16,10 12,10C12.7,10 13.38,10.12 14,10.34C13.94,9.06 13.18,7.86 11.93,7.3M13.55,3.64C13,3.4 12.45,3.23 11.88,3.12L14.37,1.82L15.27,4.71C14.76,4.29 14.19,3.93 13.55,3.64M6.09,4.44C5.6,4.79 5.17,5.19 4.8,5.63L4.91,2.82L7.87,3.5C7.25,3.71 6.65,4.03 6.09,4.44M18,9.71C17.91,9.12 17.78,8.55 17.59,8L19.97,9.5L17.92,11.73C18.03,11.08 18.05,10.4 18,9.71M3.04,11.3C3.11,11.9 3.24,12.47 3.43,13L1.06,11.5L3.1,9.28C3,9.93 2.97,10.61 3.04,11.3M19,18H16V16C16,13.79 14.21,12 12,12C9.79,12 8,13.79 8,16H6C4.9,16 4,16.9 4,18C4,19.1 4.9,20 6,20H19C19.55,20 20,19.55 20,19C20,18.45 19.55,18 19,18Z" />
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24">
<path fill="#ffab40" d="M19,15C18.65,15 18.31,15.06 18,15.17V15C18,13.19 17.19,11.56 15.92,10.46C16.35,8.03 15.1,5.5 12.75,4.47C9.97,3.24 6.72,4.5 5.5,7.25C4.6,9.24 5,11.45 6.27,13H6C3.79,13 2,14.79 2,17C2,19.21 3.79,21 6,21H7C7,21 8,21 8,20C8,19 7,19 7,19H6C4.9,19 4,18.1 4,17C4,15.9 4.9,15 6,15H8C8,12.79 9.79,11 12,11C14.21,11 16,12.79 16,15V17H19C19.55,17 20,17.45 20,18C20,18.55 19.55,19 19,19H17C17,19 16,19 16,20C16,21 17,21 17,21H19C20.66,21 22,19.66 22,18C22,16.34 20.66,15 19,15M12,9C10.16,9 8.5,9.83 7.41,11.13C6.93,10.22 6.85,9.09 7.31,8.07C8.09,6.31 10.16,5.5 11.93,6.3C13.18,6.86 13.94,8.06 14,9.34C13.38,9.12 12.7,9 12,9M13.55,2.63C13,2.4 12.45,2.23 11.88,2.12L14.37,0.82L15.27,3.71C14.76,3.29 14.19,2.93 13.55,2.63M6.09,3.44C5.6,3.79 5.17,4.19 4.8,4.63L4.91,1.82L7.87,2.5C7.25,2.71 6.65,3.03 6.09,3.44M18,8.71C17.91,8.12 17.78,7.55 17.59,7L19.97,8.5L17.92,10.73C18.03,10.08 18.05,9.4 18,8.71M3.04,10.3C3.11,10.9 3.25,11.47 3.43,12L1.06,10.5L3.1,8.28C3,8.93 2.97,9.61 3.04,10.3M11.8,15H14.25L12.61,18.27H14.25L11.18,24L11.8,19.91H9.75" />
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24">
<path fill="#ffab40" d="M12.75,4.47C15.1,5.5 16.35,8.03 15.92,10.46C17.19,11.56 18,13.19 18,15V15.17C18.31,15.06 18.65,15 19,15C20.66,15 22,16.34 22,18C22,19.66 20.66,21 19,21H17C17,21 16,21 16,20C16,19 17,19 17,19H19C19.55,19 20,18.55 20,18C20,17.45 19.55,17 19,17H16V15C16,12.79 14.21,11 12,11C9.79,11 8,12.79 8,15H6C4.9,15 4,15.9 4,17C4,18.1 4.9,19 6,19H7C7,19 8,19 8,20C8,21 7,21 7,21H6C3.79,21 2,19.21 2,17C2,14.79 3.79,13 6,13H6.27C5,11.45 4.6,9.24 5.5,7.25C6.72,4.5 9.97,3.24 12.75,4.47M11.93,6.3C10.16,5.5 8.09,6.31 7.31,8.07C6.85,9.09 6.93,10.22 7.41,11.13C8.5,9.83 10.16,9 12,9C12.7,9 13.38,9.12 14,9.34C13.94,8.06 13.18,6.86 11.93,6.3M13.55,2.63C13,2.4 12.45,2.23 11.88,2.12L14.37,0.82L15.27,3.71C14.76,3.29 14.19,2.93 13.55,2.63M6.09,3.44C5.6,3.79 5.17,4.19 4.8,4.63L4.91,1.82L7.87,2.5C7.25,2.71 6.65,3.03 6.09,3.44M18,8.71C17.91,8.12 17.78,7.55 17.59,7L19.97,8.5L17.92,10.73C18.03,10.08 18.05,9.4 18,8.71M3.04,10.3C3.11,10.9 3.25,11.47 3.43,12L1.06,10.5L3.1,8.28C3,8.93 2.97,9.61 3.04,10.3M12,18.91C12.59,19.82 13,20.63 13,21C13,21.55 12.55,22 12,22C11.45,22 11,21.55 11,21C11,20.63 11.41,19.82 12,18.91M12,15.62C12,15.62 9,19 9,21C9,22.66 10.34,24 12,24C13.66,24 15,22.66 15,21C15,19 12,15.62 12,15.62Z" />
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24">
<path fill="#ffab40" d="M13.55,2.66C13,2.42 12.45,2.26 11.88,2.15L14.37,0.84L15.27,3.73C14.76,3.31 14.19,2.95 13.55,2.66M6.09,3.46C5.6,3.81 5.17,4.21 4.8,4.66L4.91,1.84L7.87,2.53C7.25,2.73 6.65,3.05 6.09,3.46M18,8.73C17.91,8.15 17.78,7.57 17.59,7.03L19.97,8.53L17.92,10.76C18.03,10.1 18.05,9.42 18,8.73M3.04,10.32C3.11,10.92 3.25,11.5 3.43,12.03L1.06,10.53L3.1,8.3C3,8.95 2.97,9.64 3.04,10.32M16.68,22.21C16.68,23.2 15.91,24 14.95,24C14,24 13.23,23.2 13.23,22.21C13.23,21.03 14.95,19.03 14.95,19.03C14.95,19.03 16.68,21.03 16.68,22.21M6.03,21.45C5.93,21.07 6.15,20.68 6.54,20.58L8.13,20.15L6.96,19C6.68,18.72 6.68,18.27 6.96,18C7.23,17.7 7.7,17.7 8,18L9.14,19.14L9.55,17.56C9.65,17.17 10.05,16.94 10.43,17.05C10.82,17.15 11.05,17.55 10.93,17.93L10.5,19.5L12.1,19.1C12.5,19 12.88,19.21 13,19.6C13.08,19.97 12.86,20.37 12.47,20.47L10.89,20.89L12.05,22.05C12.33,22.32 12.33,22.79 12.05,23.07C11.77,23.35 11.31,23.35 11.03,23.07L9.87,21.9L9.45,23.5C9.35,23.88 8.95,24.1 8.57,24C8.18,23.9 7.97,23.5 8.06,23.12L8.5,21.55L6.91,21.96C6.5,22.06 6.13,21.84 6.03,21.45M19,15.03C18.65,15.03 18.31,15.08 18,15.19V15.03C18,13.21 17.19,11.58 15.92,10.5C16.35,8.05 15.1,5.53 12.75,4.5C9.97,3.27 6.72,4.53 5.5,7.28C4.6,9.27 5,11.47 6.27,13.03H6C3.79,13.03 2,14.81 2,17.03C2,18.17 2.5,19.2 3.27,19.93V19.93C3.27,19.93 3.97,20.64 4.68,19.93C5.39,19.22 4.68,18.5 4.68,18.5C4.27,18.15 4,17.62 4,17.03C4,15.92 4.9,15.03 6,15.03H8C8,12.81 9.79,11.03 12,11.03C14.21,11.03 16,12.82 16,15.03V17.03H19C19.55,17.03 20,17.48 20,18.03C20,18.57 19.55,19.03 19,19.03H18C18,19.03 17,19.03 17,20.03C17,21.03 18,21.03 18,21.03H19C20.66,21.03 22,19.69 22,18.03C22,16.37 20.66,15.03 19,15.03M12,9.03C10.16,9.03 8.5,9.85 7.41,11.16C6.93,10.25 6.85,9.11 7.31,8.09C8.09,6.33 10.16,5.53 11.93,6.32C13.18,6.89 13.94,8.08 14,9.37C13.38,9.15 12.7,9.03 12,9.03Z" />
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24">
<path fill="#ffab40" d="M6,19.03C4.9,19.03 4,18.13 4,17.03C4,15.92 4.9,15.03 6,15.03H8C8,12.81 9.79,11.03 12,11.03C14.21,11.03 16,12.82 16,15.03V17.03H19C19.55,17.03 20,17.48 20,18.03C20,18.57 19.55,19.03 19,19.03H17C17,19.03 16,19.03 16,20.03C16,21.03 17,21.03 17,21.03H19C20.66,21.03 22,19.69 22,18.03C22,16.37 20.66,15.03 19,15.03C18.65,15.03 18.31,15.08 18,15.19V15.03C18,13.21 17.19,11.58 15.92,10.5C16.35,8.05 15.1,5.53 12.75,4.5C9.97,3.27 6.72,4.53 5.5,7.28C4.6,9.27 5,11.47 6.27,13.03H6C3.79,13.03 2,14.81 2,17.03C2,19.24 3.79,21.03 6,21.03C6,21.03 7,21.03 7,20.03C7,19.03 6,19.03 6,19.03M12,9.03C10.16,9.03 8.5,9.85 7.41,11.16C6.93,10.25 6.85,9.11 7.31,8.09C8.09,6.33 10.16,5.53 11.93,6.32C13.18,6.89 13.94,8.08 14,9.37C13.38,9.15 12.7,9.03 12,9.03M13.55,2.66C13,2.42 12.45,2.26 11.88,2.15L14.37,0.84L15.27,3.73C14.76,3.31 14.19,2.95 13.55,2.66M6.09,3.46C5.6,3.81 5.17,4.21 4.8,4.66L4.91,1.84L7.87,2.53C7.25,2.73 6.65,3.05 6.09,3.46M18,8.73C17.91,8.15 17.78,7.57 17.59,7.03L19.97,8.53L17.92,10.76C18.03,10.1 18.05,9.42 18,8.73M3.04,10.32C3.11,10.92 3.25,11.5 3.43,12.03L1.06,10.53L3.1,8.3C3,8.95 2.97,9.64 3.04,10.32M8.03,21.45C8.13,21.84 8.53,22.06 8.91,21.96L10.5,21.54L10.06,23.11C9.96,23.5 10.19,23.9 10.57,24C10.95,24.1 11.35,23.87 11.45,23.5L11.87,21.91L13.03,23.07C13.3,23.35 13.77,23.35 14.05,23.07C14.33,22.79 14.33,22.32 14.05,22.05L12.89,20.88L14.47,20.47C14.85,20.37 15.08,19.97 15,19.59C14.88,19.21 14.5,19 14.09,19.08L12.5,19.5L12.94,17.93C13.04,17.54 12.82,17.15 12.43,17.05C12.05,16.95 11.66,17.17 11.55,17.56L11.14,19.14L10,17.97C9.7,17.69 9.23,17.69 8.95,17.97C8.68,18.27 8.68,18.72 8.95,19L10.11,20.16L8.54,20.57C8.15,20.68 7.93,21.07 8.03,21.45Z" />
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24">
<path fill="#ffab40" d="M9,12C9.53,12.14 9.85,12.69 9.71,13.22L8.41,18.05C8.27,18.59 7.72,18.9 7.19,18.76C6.65,18.62 6.34,18.07 6.5,17.54L7.78,12.71C7.92,12.17 8.47,11.86 9,12M13,12C13.53,12.14 13.85,12.69 13.71,13.22L11.64,20.95C11.5,21.5 10.95,21.8 10.41,21.66C9.88,21.5 9.56,20.97 9.7,20.43L11.78,12.71C11.92,12.17 12.47,11.86 13,12M17,12C17.53,12.14 17.85,12.69 17.71,13.22L16.41,18.05C16.27,18.59 15.72,18.9 15.19,18.76C14.65,18.62 14.34,18.07 14.5,17.54L15.78,12.71C15.92,12.17 16.47,11.86 17,12M17,10V9C17,6.24 14.76,4 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8C4.34,8 3,9.34 3,11C3,12.11 3.6,13.08 4.5,13.6V13.59C5,13.87 5.14,14.5 4.87,14.96C4.59,15.43 4,15.6 3.5,15.32V15.33C2,14.47 1,12.85 1,11C1,8.24 3.24,6 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8C21.21,8 23,9.79 23,12C23,13.5 22.2,14.77 21,15.46V15.46C20.5,15.73 19.91,15.57 19.63,15.09C19.36,14.61 19.5,14 20,13.72V13.73C20.6,13.39 21,12.74 21,12C21,10.9 20.1,10 19,10H17Z" />
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24">
<path fill="#ffab40" d="M6,14.03C6.55,14.03 7,14.48 7,15.03C7,15.58 6.55,16.03 6,16.03C3.24,16.03 1,13.79 1,11.03C1,8.27 3.24,6.03 6,6.03C7,3.68 9.3,2.03 12,2.03C15.43,2.03 18.24,4.69 18.5,8.06L19,8.03C21.21,8.03 23,9.82 23,12.03C23,14.23 21.21,16.03 19,16.03H18C17.45,16.03 17,15.58 17,15.03C17,14.47 17.45,14.03 18,14.03H19C20.1,14.03 21,13.13 21,12.03C21,10.93 20.1,10.03 19,10.03H17V9.03C17,6.27 14.76,4.03 12,4.03C9.5,4.03 7.45,5.84 7.06,8.21C6.73,8.09 6.37,8.03 6,8.03C4.34,8.03 3,9.37 3,11.03C3,12.69 4.34,14.03 6,14.03M12,14.15C12.18,14.39 12.37,14.66 12.56,14.94C13,15.56 14,17.03 14,18C14,19.11 13.1,20 12,20C10.9,20 10,19.1 10,18C10,17.03 11,15.56 11.44,14.94C11.63,14.66 11.82,14.4 12,14.15M12,11.03L11.5,11.59C11.5,11.59 10.65,12.55 9.79,13.81C8.93,15.06 8,16.56 8,18C8,20.21 9.79,22 12,22C14.21,22 16,20.21 16,18C16,16.56 15.07,15.06 14.21,13.81C13.35,12.55 12.5,11.59 12.5,11.59" />
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24">
<path fill="#ffab40" d="M4,16.36C3.86,15.82 4.18,15.25 4.73,15.11L7,14.5L5.33,12.86C4.93,12.46 4.93,11.81 5.33,11.4C5.73,11 6.4,11 6.79,11.4L8.45,13.05L9.04,10.8C9.18,10.24 9.75,9.92 10.29,10.07C10.85,10.21 11.17,10.78 11,11.33L10.42,13.58L12.67,13C13.22,12.83 13.79,13.15 13.93,13.71C14.08,14.25 13.76,14.82 13.2,14.96L10.95,15.55L12.6,17.21C13,17.6 13,18.27 12.6,18.67C12.2,19.07 11.54,19.07 11.15,18.67L9.5,17L8.89,19.27C8.75,19.83 8.18,20.14 7.64,20C7.08,19.86 6.77,19.29 6.91,18.74L7.5,16.5L5.26,17.09C4.71,17.23 4.14,16.92 4,16.36M1,10C1,7.24 3.24,5 6,5C7,2.65 9.3,1 12,1C15.43,1 18.24,3.66 18.5,7.03L19,7C21.21,7 23,8.79 23,11C23,13.21 21.21,15 19,15C18.45,15 18,14.55 18,14C18,13.45 18.45,13 19,13C20.1,13 21,12.1 21,11C21,9.9 20.1,9 19,9H17V8C17,5.24 14.76,3 12,3C9.5,3 7.45,4.82 7.06,7.19C6.73,7.07 6.37,7 6,7C4.34,7 3,8.34 3,10C3,10.85 3.35,11.61 3.91,12.16C4.27,12.55 4.26,13.16 3.88,13.54C3.5,13.93 2.85,13.93 2.47,13.54C1.56,12.63 1,11.38 1,10M14.03,20.43C14.13,20.82 14.5,21.04 14.91,20.94L16.5,20.5L16.06,22.09C15.96,22.5 16.18,22.87 16.57,22.97C16.95,23.08 17.35,22.85 17.45,22.46L17.86,20.89L19.03,22.05C19.3,22.33 19.77,22.33 20.05,22.05C20.33,21.77 20.33,21.3 20.05,21.03L18.89,19.86L20.46,19.45C20.85,19.35 21.08,18.95 20.97,18.57C20.87,18.18 20.5,17.96 20.09,18.06L18.5,18.5L18.94,16.91C19.04,16.5 18.82,16.13 18.43,16.03C18.05,15.92 17.65,16.15 17.55,16.54L17.14,18.11L15.97,16.95C15.7,16.67 15.23,16.67 14.95,16.95C14.67,17.24 14.67,17.7 14.95,17.97L16.11,19.14L14.54,19.55C14.15,19.65 13.92,20.05 14.03,20.43Z" />
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24">
<path fill="#ffab40" d="M18.5,18.67C18.5,19.96 17.5,21 16.25,21C15,21 14,19.96 14,18.67C14,17.12 16.25,14.5 16.25,14.5C16.25,14.5 18.5,17.12 18.5,18.67M4,17.36C3.86,16.82 4.18,16.25 4.73,16.11L7,15.5L5.33,13.86C4.93,13.46 4.93,12.81 5.33,12.4C5.73,12 6.4,12 6.79,12.4L8.45,14.05L9.04,11.8C9.18,11.24 9.75,10.92 10.29,11.07C10.85,11.21 11.17,11.78 11,12.33L10.42,14.58L12.67,14C13.22,13.83 13.79,14.15 13.93,14.71C14.08,15.25 13.76,15.82 13.2,15.96L10.95,16.55L12.6,18.21C13,18.6 13,19.27 12.6,19.67C12.2,20.07 11.54,20.07 11.15,19.67L9.5,18L8.89,20.27C8.75,20.83 8.18,21.14 7.64,21C7.08,20.86 6.77,20.29 6.91,19.74L7.5,17.5L5.26,18.09C4.71,18.23 4.14,17.92 4,17.36M1,11C1,8.24 3.24,6 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8C21.21,8 23,9.79 23,12C23,14.21 21.21,16 19,16C18.45,16 18,15.55 18,15C18,14.45 18.45,14 19,14C20.1,14 21,13.1 21,12C21,10.9 20.1,10 19,10H17V9C17,6.24 14.76,4 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8C4.34,8 3,9.34 3,11C3,11.85 3.35,12.61 3.91,13.16C4.27,13.55 4.26,14.16 3.88,14.54C3.5,14.93 2.85,14.93 2.47,14.54C1.56,13.63 1,12.38 1,11Z" />
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24">
<path fill="#ffab40" d="M6,14C6.55,14 7,14.45 7,15C7,15.55 6.55,16 6,16C3.24,16 1,13.76 1,11C1,8.24 3.24,6 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8C21.21,8 23,9.79 23,12C23,14.21 21.21,16 19,16H18C17.45,16 17,15.55 17,15C17,14.45 17.45,14 18,14H19C20.1,14 21,13.1 21,12C21,10.9 20.1,10 19,10H17V9C17,6.24 14.76,4 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8C4.34,8 3,9.34 3,11C3,12.66 4.34,14 6,14M7.88,18.07L10.07,17.5L8.46,15.88C8.07,15.5 8.07,14.86 8.46,14.46C8.85,14.07 9.5,14.07 9.88,14.46L11.5,16.07L12.07,13.88C12.21,13.34 12.76,13.03 13.29,13.17C13.83,13.31 14.14,13.86 14,14.4L13.41,16.59L15.6,16C16.14,15.86 16.69,16.17 16.83,16.71C16.97,17.24 16.66,17.79 16.12,17.93L13.93,18.5L15.54,20.12C15.93,20.5 15.93,21.15 15.54,21.54C15.15,21.93 14.5,21.93 14.12,21.54L12.5,19.93L11.93,22.12C11.79,22.66 11.24,22.97 10.71,22.83C10.17,22.69 9.86,22.14 10,21.6L10.59,19.41L8.4,20C7.86,20.14 7.31,19.83 7.17,19.29C7.03,18.76 7.34,18.21 7.88,18.07Z" />
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24">
<path fill="#ffab40" d="M12,7C9.24,7 7,9.24 7,12C7,14.76 9.24,17 12,17C14.76,17 17,14.76 17,12C17,9.24 14.76,7 12,7M12,15C10.34,15 9,13.66 9,12C9,10.34 10.34,9 12,9C13.66,9 15,10.34 15,12C15,13.66 13.66,15 12,15M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M3.36,17L5.12,13.23C5.26,14 5.53,14.78 5.95,15.5C6.37,16.24 6.91,16.86 7.5,17.37L3.36,17M12,22L9.59,18.56C10.33,18.83 11.14,19 12,19C12.82,19 13.63,18.83 14.37,18.56M19,13V7H21V13H19M19,17V15H21V17" />
</svg>

After

Width:  |  Height:  |  Size: 854 B

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24">
<path fill="#ffab40" d="M12,7C14.76,7 17,9.24 17,12C17,14.76 14.76,17 12,17C9.24,17 7,14.76 7,12C7,9.24 9.24,7 12,7M12,9C10.34,9 9,10.34 9,12C9,13.66 10.34,15 12,15C13.66,15 15,13.66 15,12C15,10.34 13.66,9 12,9M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M3.36,17L5.12,13.23C5.26,14 5.53,14.78 5.95,15.5C6.37,16.24 6.91,16.86 7.5,17.37L3.36,17M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64L20.65,7M20.64,17L16.5,17.36C17.09,16.85 17.62,16.22 18.04,15.5C18.46,14.77 18.73,14 18.87,13.21L20.64,17M12,22L9.59,18.56C10.33,18.83 11.14,19 12,19C12.82,19 13.63,18.83 14.37,18.56L12,22Z" />
</svg>

After

Width:  |  Height:  |  Size: 1014 B

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24">
<path fill="#ffab40" d="M3,12H7C7,9.24 9.24,7 12,7C14.76,7 17,9.24 17,12H21C21.55,12 22,12.45 22,13C22,13.55 21.55,14 21,14H3C2.45,14 2,13.55 2,13C2,12.45 2.45,12 3,12M5,16H19C19.55,16 20,16.45 20,17C20,17.55 19.55,18 19,18H5C4.45,18 4,17.55 4,17C4,16.45 4.45,16 5,16M17,20C17.55,20 18,20.45 18,21C18,21.55 17.55,22 17,22H7C6.45,22 6,21.55 6,21C6,20.45 6.45,20 7,20H17M15,12C15,10.34 13.66,9 12,9C10.34,9 9,10.34 9,12H15M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64L20.65,7Z" />
</svg>

After

Width:  |  Height:  |  Size: 956 B

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24">
<path fill="#ffab40" d="M21,5H3C2.45,5 2,4.55 2,4C2,3.45 2.45,3 3,3H21C21.55,3 22,3.45 22,4C22,4.55 21.55,5 21,5M20,8C20,7.45 19.55,7 19,7H5C4.45,7 4,7.45 4,8C4,8.55 4.45,9 5,9H19C19.55,9 20,8.55 20,8M21,12C21,11.45 20.55,11 20,11H10C9.45,11 9,11.45 9,12C9,12.55 9.45,13 10,13H20C20.55,13 21,12.55 21,12M16,16C16,15.45 15.55,15 15,15H9C8.45,15 8,15.45 8,16C8,16.55 8.45,17 9,17H15C15.55,17 16,16.55 16,16M13,20C13,19.45 12.55,19 12,19H10C9.45,19 9,19.45 9,20C9,20.55 9.45,21 10,21H12C12.55,21 13,20.55 13,20Z" />
</svg>

After

Width:  |  Height:  |  Size: 801 B

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24">
<path fill="#ffab40" d="M6,6L6.69,6.06C7.32,3.72 9.46,2 12,2C15.04,2 17.5,4.46 17.5,7.5L17.42,8.45C17.88,8.16 18.42,8 19,8C20.66,8 22,9.34 22,11C22,12.66 20.66,14 19,14H6C3.79,14 2,12.21 2,10C2,7.79 3.79,6 6,6M6,8C4.9,8 4,8.9 4,10C4,11.1 4.9,12 6,12H19C19.55,12 20,11.55 20,11C20,10.45 19.55,10 19,10H15.5V7.5C15.5,5.57 13.93,4 12,4C10.07,4 8.5,5.57 8.5,7.5V8H6M18,18H4C3.45,18 3,17.55 3,17C3,16.45 3.45,16 4,16H18C19.66,16 21,17.34 21,19C21,20.66 19.66,22 18,22C17.17,22 16.42,21.66 15.88,21.12C15.5,20.73 15.5,20.1 15.88,19.71C16.27,19.32 16.9,19.32 17.29,19.71C17.47,19.89 17.72,20 18,20C18.55,20 19,19.55 19,19C19,18.45 18.55,18 18,18Z" />
</svg>

After

Width:  |  Height:  |  Size: 932 B

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24">
<path fill="#ffab40" d="M4,10C3.45,10 3,9.55 3,9C3,8.45 3.45,8 4,8H12C13.1,8 14,7.1 14,6C14,4.9 13.1,4 12,4C11.45,4 10.95,4.22 10.59,4.59C10.2,5 9.56,5 9.17,4.59C8.78,4.2 8.78,3.56 9.17,3.17C9.9,2.45 10.9,2 12,2C14.21,2 16,3.79 16,6C16,8.21 14.21,10 12,10H4M19,12C19.55,12 20,11.55 20,11C20,10.45 19.55,10 19,10C18.72,10 18.47,10.11 18.29,10.29C17.9,10.68 17.27,10.68 16.88,10.29C16.5,9.9 16.5,9.27 16.88,8.88C17.42,8.34 18.17,8 19,8C20.66,8 22,9.34 22,11C22,12.66 20.66,14 19,14H5C4.45,14 4,13.55 4,13C4,12.45 4.45,12 5,12H19M18,18H4C3.45,18 3,17.55 3,17C3,16.45 3.45,16 4,16H18C19.66,16 21,17.34 21,19C21,20.66 19.66,22 18,22C17.17,22 16.42,21.66 15.88,21.12C15.5,20.73 15.5,20.1 15.88,19.71C16.27,19.32 16.9,19.32 17.29,19.71C17.47,19.89 17.72,20 18,20C18.55,20 19,19.55 19,19C19,18.45 18.55,18 18,18Z" />
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -1,7 +1,7 @@
-- Awesome Libs -- Awesome Libs
local awful = require("awful") local awful = require("awful")
local gears = require("gears") local gears = require("gears")
local globalkeys = require("../mappings/global_keys") local globalkeys = require("src.bindings.global_keys")
local modkey = user_vars.modkey local modkey = user_vars.modkey
for i = 1, 9 do for i = 1, 9 do

View File

@@ -9,17 +9,17 @@ do
awesome.connect_signal( awesome.connect_signal(
"debug::error", "debug::error",
function(err) function(err)
if in_error then if in_error then
return return
end end
in_error = true in_error = true
naughty.notify({ naughty.notify({
preset = naughty.config.presets.critical, preset = naughty.config.presets.critical,
title = "ERROR", title = "ERROR",
text = tostring(err) text = tostring(err)
}) })
in_error = false in_error = false
end end
) )
end end

View File

@@ -10,6 +10,8 @@ local menubar = require('menubar')
local naughty = require("naughty") local naughty = require("naughty")
local wibox = require("wibox") local wibox = require("wibox")
local rubato = require("src.lib.rubato")
local icondir = awful.util.getdir("config") .. "src/assets/icons/notifications/" local icondir = awful.util.getdir("config") .. "src/assets/icons/notifications/"
-- TODO: Figure out how to use hover effects without messing up the actions -- TODO: Figure out how to use hover effects without messing up the actions
@@ -42,335 +44,343 @@ naughty.connect_signal(
naughty.connect_signal( naughty.connect_signal(
"request::display", "request::display",
function(n) function(n)
if n.urgency == "critical" then if user_vars.dnd then
n.title = string.format("<span foreground='%s' font='JetBrainsMono Nerd Font, ExtraBold 16'>%s</span>", n:destroy()
color["RedA200"], n.title) or ""
n.message = string.format("<span foreground='%s'>%s</span>", color["Red200"], n.message) or ""
n.app_name = string.format("<span foreground='%s'>%s</span>", color["RedA400"], n.app_name) or ""
n.bg = color["Grey900"]
else else
n.title = string.format("<span foreground='%s' font='JetBrainsMono Nerd Font, ExtraBold 16'>%s</span>", if n.urgency == "critical" then
color["Pink200"], n.title) or "" n.title = string.format("<span foreground='%s' font='JetBrainsMono Nerd Font, ExtraBold 16'>%s</span>",
n.message = string.format("<span foreground='%s'>%s</span>", "#ffffffaa", n.message) or "" color["RedA200"], n.title) or ""
n.bg = color["Grey900"] n.message = string.format("<span foreground='%s'>%s</span>", color["Red200"], n.message) or ""
n.timeout = n.timeout or 3 n.app_name = string.format("<span foreground='%s'>%s</span>", color["RedA400"], n.app_name) or ""
end n.bg = color["Grey900"]
else
n.title = string.format("<span foreground='%s' font='JetBrainsMono Nerd Font, ExtraBold 16'>%s</span>",
color["Pink200"], n.title) or ""
n.message = string.format("<span foreground='%s'>%s</span>", "#ffffffaa", n.message) or ""
n.bg = color["Grey900"]
n.timeout = n.timeout or 3
end
local use_image = false local use_image = false
if n.app_name == "Spotify" then if n.app_name == "Spotify" then
n.actions = { naughty.action { n.actions = { naughty.action {
program = "Spotify", program = "Spotify",
id = "skip-prev", id = "skip-prev",
icon = gears.color.recolor_image(icondir .. "skip-prev.svg", color["Cyan200"]) icon = gears.color.recolor_image(icondir .. "skip-prev.svg", color["Cyan200"])
}, naughty.action { }, naughty.action {
program = "Spotify", program = "Spotify",
id = "play-pause", id = "play-pause",
icon = gears.color.recolor_image(icondir .. "play-pause.svg", color["Cyan200"]) icon = gears.color.recolor_image(icondir .. "play-pause.svg", color["Cyan200"])
}, naughty.action { }, naughty.action {
program = "Spotify", program = "Spotify",
id = "skip-next", id = "skip-next",
icon = gears.color.recolor_image(icondir .. "skip-next.svg", color["Cyan200"]) icon = gears.color.recolor_image(icondir .. "skip-next.svg", color["Cyan200"])
} } } }
use_image = true use_image = true
end end
local action_template_widget = {} local action_template_widget = {}
if use_image then if use_image then
action_template_widget = { action_template_widget = {
{
{
{
{
id = "icon_role",
widget = wibox.widget.imagebox
},
id = "centered",
valign = "center",
halign = "center",
widget = wibox.container.place
},
margins = dpi(5),
widget = wibox.container.margin
},
forced_height = dpi(35),
forced_width = dpi(35),
fg = color["Cyan200"],
bg = color["Grey800"],
shape = function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, dpi(6))
end,
widget = wibox.container.background,
id = "bgrnd"
},
id = "mrgn",
top = dpi(10),
bottom = dpi(10),
widget = wibox.container.margin
}
else
action_template_widget = {
{
{
{
{
id = "text_role",
font = "JetBrainsMono Nerd Font, Regular 12",
widget = wibox.widget.textbox
},
id = "centered",
widget = wibox.container.place
},
margins = dpi(5),
widget = wibox.container.margin
},
fg = color["Green200"],
bg = color["Grey800"],
shape = function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, dpi(6))
end,
widget = wibox.container.background,
id = "bgrnd"
},
id = "mrgn",
top = dpi(10),
bottom = dpi(10),
widget = wibox.container.margin
}
end
local actions_template = wibox.widget {
notification = n,
base_layout = wibox.widget {
spacing = dpi(40),
layout = wibox.layout.fixed.horizontal
},
widget_template = action_template_widget,
style = {
underline_normal = false,
underline_selected = true,
bg_normal = color["Grey100"],
bg_selected = color["Grey200"]
},
widget = naughty.list.actions
}
local w_template = wibox.widget {
{
{
{ {
{ {
{ {
{ {
{ id = "icon_role",
{ widget = wibox.widget.imagebox
{
{
image = gears.color.recolor_image(icondir .. "notification-outline.svg", color["Teal200"]),
resize = false,
widget = wibox.widget.imagebox
},
right = dpi(5),
widget = wibox.container.margin
},
{
markup = n.app_name or 'System Notification',
align = "center",
valign = "center",
widget = wibox.widget.textbox
},
layout = wibox.layout.fixed.horizontal
},
fg = color["Teal200"],
widget = wibox.container.background
},
margins = dpi(10),
widget = wibox.container.margin
}, },
nil, id = "centered",
valign = "center",
halign = "center",
widget = wibox.container.place
},
margins = dpi(5),
widget = wibox.container.margin
},
forced_height = dpi(35),
forced_width = dpi(35),
fg = color["Cyan200"],
bg = color["Grey800"],
shape = function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, dpi(6))
end,
widget = wibox.container.background,
id = "bgrnd"
},
id = "mrgn",
top = dpi(10),
bottom = dpi(10),
widget = wibox.container.margin
}
else
action_template_widget = {
{
{
{
{
id = "text_role",
font = "JetBrainsMono Nerd Font, Regular 12",
widget = wibox.widget.textbox
},
id = "centered",
widget = wibox.container.place
},
margins = dpi(5),
widget = wibox.container.margin
},
fg = color["Green200"],
bg = color["Grey800"],
shape = function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, dpi(6))
end,
widget = wibox.container.background,
id = "bgrnd"
},
id = "mrgn",
top = dpi(10),
bottom = dpi(10),
widget = wibox.container.margin
}
end
local actions_template = wibox.widget {
notification = n,
base_layout = wibox.widget {
spacing = dpi(40),
layout = wibox.layout.fixed.horizontal
},
widget_template = action_template_widget,
style = {
underline_normal = false,
underline_selected = true,
bg_normal = color["Grey100"],
bg_selected = color["Grey200"]
},
widget = naughty.list.actions
}
local w_template = wibox.widget {
{
{
{
{
{ {
{
{
text = os.date("%H:%M"),
widget = wibox.widget.textbox
},
id = "background",
fg = color["Teal200"],
widget = wibox.container.background
},
{ {
{ {
{ {
{ {
{ {
font = user_vars.font.specify .. ", 10", image = gears.color.recolor_image(icondir .. "notification-outline.svg", color["Teal200"]),
text = "", resize = false,
align = "center", widget = wibox.widget.imagebox
valign = "center",
widget = wibox.widget.textbox
}, },
start_angle = 4.71239, right = dpi(5),
thickness = dpi(2), widget = wibox.container.margin
min_value = 0,
max_value = 360,
value = 360,
widget = wibox.container.arcchart,
id = "arc_chart"
}, },
id = "background", {
fg = color["Teal200"], markup = n.app_name or 'System Notification',
bg = color["Grey900"], align = "center",
widget = wibox.container.background valign = "center",
widget = wibox.widget.textbox
},
layout = wibox.layout.fixed.horizontal
}, },
strategy = "exact", fg = color["Teal200"],
width = dpi(20), widget = wibox.container.background
height = dpi(20),
widget = wibox.container.constraint,
id = "const"
}, },
margins = dpi(10), margins = dpi(10),
widget = wibox.container.margin, widget = wibox.container.margin
id = "arc_margin"
}, },
layout = wibox.layout.fixed.horizontal, nil,
id = "arc_app_layout_2" {
{
{
text = os.date("%H:%M"),
widget = wibox.widget.textbox
},
id = "background",
fg = color["Teal200"],
widget = wibox.container.background
},
{
{
{
{
{
font = user_vars.font.specify .. ", 10",
text = "",
align = "center",
valign = "center",
widget = wibox.widget.textbox
},
start_angle = 4.71239,
thickness = dpi(2),
min_value = 0,
max_value = n.timeout or 10,
value = n.timeout or 10,
widget = wibox.container.arcchart,
id = "arc_chart"
},
id = "background",
fg = color["Teal200"],
bg = color["Grey900"],
widget = wibox.container.background
},
strategy = "exact",
width = dpi(20),
height = dpi(20),
widget = wibox.container.constraint,
id = "const"
},
margins = dpi(10),
widget = wibox.container.margin,
id = "arc_margin"
},
layout = wibox.layout.fixed.horizontal,
id = "arc_app_layout_2"
},
id = "arc_app_layout",
layout = wibox.layout.align.horizontal
}, },
id = "arc_app_layout", id = "arc_app_bg",
layout = wibox.layout.align.horizontal border_color = color["Grey800"],
border_width = dpi(2),
widget = wibox.container.background
}, },
id = "arc_app_bg",
border_color = color["Grey800"],
border_width = dpi(2),
widget = wibox.container.background
},
{
{ {
{ {
{ {
{ {
image = n.icon, {
resize = true, image = n.icon,
widget = wibox.widget.imagebox, resize = true,
clip_shape = function(cr, width, height) widget = wibox.widget.imagebox,
gears.shape.rounded_rect(cr, width, height, 10) clip_shape = function(cr, width, height)
end gears.shape.rounded_rect(cr, width, height, 10)
end
},
width = naughty.config.defaults.icon_size,
height = naughty.config.defaults.icon_size,
strategy = "exact",
widget = wibox.container.constraint
}, },
width = naughty.config.defaults.icon_size, halign = "center",
height = naughty.config.defaults.icon_size, valign = "top",
strategy = "exact",
widget = wibox.container.constraint
},
halign = "center",
valign = "top",
widget = wibox.container.place
},
left = dpi(20),
bottom = dpi(15),
top = dpi(15),
right = dpi(10),
widget = wibox.container.margin
},
{
{
{
widget = naughty.widget.title,
align = "left"
},
{
widget = naughty.widget.message,
align = "left"
},
{
actions_template,
widget = wibox.container.place widget = wibox.container.place
}, },
layout = wibox.layout.fixed.vertical left = dpi(20),
bottom = dpi(15),
top = dpi(15),
right = dpi(10),
widget = wibox.container.margin
}, },
left = dpi(10), {
bottom = dpi(10), {
top = dpi(10), {
right = dpi(20), widget = naughty.widget.title,
widget = wibox.container.margin align = "left"
},
{
widget = naughty.widget.message,
align = "left"
},
{
actions_template,
widget = wibox.container.place
},
layout = wibox.layout.fixed.vertical
},
left = dpi(10),
bottom = dpi(10),
top = dpi(10),
right = dpi(20),
widget = wibox.container.margin
},
layout = wibox.layout.fixed.horizontal
}, },
layout = wibox.layout.fixed.horizontal id = "widget_layout",
layout = wibox.layout.fixed.vertical
}, },
id = "widget_layout", id = "min_size",
layout = wibox.layout.fixed.vertical strategy = "min",
width = dpi(100),
widget = wibox.container.constraint
}, },
id = "min_size", id = "max_size",
strategy = "min", strategy = "max",
width = dpi(100), width = Theme.notification_max_width or dpi(500),
widget = wibox.container.constraint widget = wibox.container.constraint
}, },
id = "max_size", id = "background",
strategy = "max", bg = color["Grey900"],
width = Theme.notification_max_width or dpi(500), border_color = color["Grey800"],
widget = wibox.container.constraint border_width = dpi(4),
}, shape = function(cr, width, height)
id = "background", gears.shape.rounded_rect(cr, width, height, 4)
bg = color["Grey900"], end,
border_color = color["Grey800"], widget = wibox.container.background
border_width = dpi(4),
shape = function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, 4)
end,
widget = wibox.container.background
}
local close = w_template.max_size.min_size.widget_layout.arc_app_bg.arc_app_layout.arc_app_layout_2.arc_margin.const.background
local arc = close.arc_chart
local timeout = n.timeout
local remove_time = timeout
if timeout ~= 0 then
arc.value = 360
local arc_timer = gears.timer {
timeout = 0.1,
call_now = true,
autostart = true,
callback = function()
arc.value = (remove_time - 0) / (timeout - 0) * 360
remove_time = remove_time - 0.1
end
} }
w_template:connect_signal( local close = w_template.max_size.min_size.widget_layout.arc_app_bg.arc_app_layout.arc_app_layout_2.arc_margin.const.background
"mouse::enter", local arc = close.arc_chart
function()
-- Setting to 0 doesn't work
arc_timer:stop()
n.timeout = 99999
end
)
w_template:connect_signal( local timeout = n.timeout
"mouse::leave",
function()
arc_timer:start()
n.timeout = remove_time
end
)
end
Hover_signal(close, color["Grey900"], color["Teal200"]) if timeout ~= 0 then
close:connect_signal( local rubato_timer = rubato.timed {
"button::press", duration = n.timeout,
function() pos = n.timeout,
n:destroy() easing = rubato.linear,
subscribed = function(value)
arc.value = value
end
}
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()
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()
rubato_timer.target = 0
end
)
end end
)
w_template:connect_signal( Hover_signal(close, color["Grey900"], color["Teal200"])
"button::press",
function(c, d, e, key) close:connect_signal(
if key == 3 then "button::press",
function()
n:destroy() n:destroy()
end end
-- TODO: Find out how to get the associated client )
--[[ if key == 1 then
w_template:connect_signal(
"button::press",
function(c, d, e, key)
if key == 3 then
n:destroy()
end
-- TODO: Find out how to get the associated client
--[[ if key == 1 then
if n.clients then if n.clients then
n.clients[1]:activate { n.clients[1]:activate {
switch_to_tag = true, switch_to_tag = true,
@@ -378,22 +388,23 @@ naughty.connect_signal(
} }
end end
end ]] end ]]
end end
) )
local box = naughty.layout.box { local box = naughty.layout.box {
notification = n, notification = n,
timeout = 3, timeout = 3,
type = "notification", type = "notification",
screen = awful.screen.focused(), screen = awful.screen.focused(),
shape = function(cr, width, height) shape = function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, 10) gears.shape.rounded_rect(cr, width, height, 10)
end, end,
widget_template = w_template widget_template = w_template
} }
box.buttons = {} box.buttons = {}
n.buttons = {} n.buttons = {}
end
end end
) )
@@ -405,13 +416,13 @@ naughty.connect_signal(
) )
-- Test notification -- Test notification
--[[naughty.notification { --[[ naughty.notification {
app_name = "System Notification", app_name = "System Notification",
title = "A notification 3", title = "A notification 2",
message = "This is very informative and overflowing", message = "This is very informative and overflowing",
icon = "/home/crylia/.config/awesome/src/assets/userpfp/crylia.png", icon = "/home/crylia/.config/awesome/src/assets/userpfp/crylia.png",
urgency = "normal", urgency = "normal",
timeout = 1, timeout = 0,
actions = { actions = {
naughty.action { naughty.action {
name = "Accept", name = "Accept",
@@ -423,7 +434,7 @@ naughty.connect_signal(
name = "Ignore", name = "Ignore",
}, },
} }
}--]] } ]]
naughty.connect_signal( naughty.connect_signal(
"invoked", "invoked",

View File

@@ -15,8 +15,8 @@ awful.rules.rules = {
border_color = beautiful.border_normal, border_color = beautiful.border_normal,
focus = awful.client.focus.filter, focus = awful.client.focus.filter,
raise = true, raise = true,
keys = require("../../mappings/client_keys"), keys = require("src.bindings.client_keys"),
buttons = require("../../mappings/client_buttons"), buttons = require("src.bindings.client_buttons"),
screen = awful.screen.preferred, screen = awful.screen.preferred,
placement = awful.placement.no_overlap + awful.placement.no_offscreen placement = awful.placement.no_overlap + awful.placement.no_offscreen
} }
@@ -53,13 +53,13 @@ awful.rules.rules = {
awful.spawn.easy_async_with_shell( awful.spawn.easy_async_with_shell(
"cat ~/.config/awesome/src/assets/rules.txt", "cat ~/.config/awesome/src/assets/rules.txt",
function(stdout) function(stdout)
for class in stdout:gmatch("%a+") do for class in stdout:gmatch("%a+") do
ruled.client.append_rule { ruled.client.append_rule {
rule = { class = class }, rule = { class = class },
properties = { properties = {
floating = true floating = true
}, },
} }
end
end end
end
) )

File diff suppressed because it is too large Load Diff

Submodule awesome/src/lib/rubato added at 7ed12e1835

View File

@@ -17,10 +17,10 @@ BACKLIGHT_SEPS = 0
awful.spawn.easy_async_with_shell( awful.spawn.easy_async_with_shell(
"pkexec xfpm-power-backlight-helper --get-max-brightness", "pkexec xfpm-power-backlight-helper --get-max-brightness",
function(stdout) function(stdout)
BACKLIGHT_MAX_BRIGHTNESS = tonumber(stdout) BACKLIGHT_MAX_BRIGHTNESS = tonumber(stdout)
BACKLIGHT_SEPS = BACKLIGHT_MAX_BRIGHTNESS / 100 BACKLIGHT_SEPS = BACKLIGHT_MAX_BRIGHTNESS / 100
BACKLIGHT_SEPS = math.floor(BACKLIGHT_SEPS) BACKLIGHT_SEPS = math.floor(BACKLIGHT_SEPS)
end end
) )
return function(s) return function(s)
@@ -112,60 +112,61 @@ return function(s)
brightness_osd_widget.container.osd_layout.icon_slider_layout.slider_layout.brightness_slider:connect_signal( brightness_osd_widget.container.osd_layout.icon_slider_layout.slider_layout.brightness_slider:connect_signal(
"property::value", "property::value",
function() function()
awful.spawn.easy_async_with_shell( awful.spawn.easy_async_with_shell(
"pkexec xfpm-power-backlight-helper --get-brightness", "pkexec xfpm-power-backlight-helper --get-brightness",
function(stdout) function(stdout)
local brightness_value = math.floor((tonumber(stdout) - 1) / (BACKLIGHT_MAX_BRIGHTNESS - 1) * 100) local brightness_value = math.floor((tonumber(stdout) - 1) / (BACKLIGHT_MAX_BRIGHTNESS - 1) * 100)
brightness_osd_widget.container.osd_layout.icon_slider_layout.label_value_layout.value:set_text(tostring(brightness_value) .. "%") brightness_osd_widget.container.osd_layout.icon_slider_layout.label_value_layout.value:set_text(tostring(brightness_value) .. "%")
awesome.emit_signal( awesome.emit_signal(
"widget::brightness:update", "widget::brightness:update",
brightness_value brightness_value
)
if awful.screen.focused().show_brightness_osd then
awesome.emit_signal(
"module::brightness_osd:show",
true
)
end
local icon = icondir .. "brightness"
if brightness_value >= 0 and brightness_value < 34 then
icon = icon .. "-low"
elseif brightness_value >= 34 and brightness_value < 67 then
icon = icon .. "-medium"
elseif brightness_value >= 67 then
icon = icon .. "-high"
end
brightness_osd_widget.container.osd_layout.icon_slider_layout.icon_margin1.icon_margin2.icon:set_image(icon .. ".svg")
awesome.emit_signal("update::backlight_widget", brightness_value, icon .. ".svg")
end
) )
if awful.screen.focused().show_brightness_osd then
awesome.emit_signal(
"module::brightness_osd:show",
true
)
end
local icon = icondir .. "brightness"
if brightness_value >= 0 and brightness_value < 34 then
icon = icon .. "-low"
elseif brightness_value >= 34 and brightness_value < 67 then
icon = icon .. "-medium"
elseif brightness_value >= 67 then
icon = icon .. "-high"
end
brightness_osd_widget.container.osd_layout.icon_slider_layout.icon_margin1.icon_margin2.icon:set_image(icon .. ".svg")
end end
)
end
) )
local update_slider = function() local update_slider = function()
awful.spawn.easy_async_with_shell( awful.spawn.easy_async_with_shell(
[[ pkexec xfpm-power-backlight-helper --get-brightness ]], [[ pkexec xfpm-power-backlight-helper --get-brightness ]],
function(stdout) function(stdout)
stdout = math.floor((tonumber(stdout) - 1) / (BACKLIGHT_MAX_BRIGHTNESS - 1) * 100) stdout = math.floor((tonumber(stdout) - 1) / (BACKLIGHT_MAX_BRIGHTNESS - 1) * 100)
brightness_osd_widget.container.osd_layout.icon_slider_layout.slider_layout.brightness_slider:set_value(stdout) brightness_osd_widget.container.osd_layout.icon_slider_layout.slider_layout.brightness_slider:set_value(stdout)
end end
) )
end end
awesome.connect_signal( awesome.connect_signal(
"module::brightness_slider:update", "module::brightness_slider:update",
function() function()
update_slider() update_slider()
end end
) )
awesome.connect_signal( awesome.connect_signal(
"widget::brightness:update", "widget::brightness:update",
function(value) function(value)
brightness_osd_widget.container.osd_layout.icon_slider_layout.slider_layout.brightness_slider:set_value(tonumber(value)) brightness_osd_widget.container.osd_layout.icon_slider_layout.slider_layout.brightness_slider:set_value(tonumber(value))
end end
) )
update_slider() update_slider()
@@ -199,36 +200,36 @@ return function(s)
awesome.connect_signal( awesome.connect_signal(
"widget::brightness_osd:rerun", "widget::brightness_osd:rerun",
function() function()
if hide_brightness_osd.started then if hide_brightness_osd.started then
hide_brightness_osd:again() hide_brightness_osd:again()
else else
hide_brightness_osd:start() hide_brightness_osd:start()
end
end end
end
) )
awesome.connect_signal( awesome.connect_signal(
"module::brightness_osd:show", "module::brightness_osd:show",
function() function()
if s == mouse.screen then if s == mouse.screen then
brightness_container.visible = true brightness_container.visible = true
end
end end
end
) )
brightness_container:connect_signal( brightness_container:connect_signal(
"mouse::enter", "mouse::enter",
function() function()
brightness_container.visible = true brightness_container.visible = true
hide_brightness_osd:stop() hide_brightness_osd:stop()
end end
) )
brightness_container:connect_signal( brightness_container:connect_signal(
"mouse::leave", "mouse::leave",
function() function()
brightness_container.visible = true brightness_container.visible = true
hide_brightness_osd:again() hide_brightness_osd:again()
end end
) )
end end

View File

@@ -0,0 +1,52 @@
--------------------------------------------------------------------------------------------------------------
-- This is the statusbar, every widget, module and so on is combined to all the stuff you see on the screen --
--------------------------------------------------------------------------------------------------------------
return function(s)
-- Every Widget
--[[
If you are going to use a widget on a single screen only, put it inside the s.index == X where X is the screen number.
This will lead to better performance and prevent widgets to be loaded but not used
--]]
s.audio = require("src.widgets.audio")(s)
s.date = require("src.widgets.date")()
s.clock = require("src.widgets.clock")()
s.layoutlist = require("src.widgets.layout_list")()
s.powerbutton = require("src.widgets.power")()
s.kblayout = require("src.widgets.kblayout")(s)
s.taglist = require("src.widgets.taglist")(s)
s.tasklist = require("src.widgets.tasklist")(s)
-- s.battery = require("src.widgets.battery")()
-- s.bluetooth = require("src.widgets.bluetooth")()
-- s.cpu_freq = require("src.widgets.cpu_info")("freq", "average")
-- s.systray = require("src.widgets.systray")(s)
-- s.cpu_usage = require("src.widgets.cpu_info")("usage")
-- s.cpu_temp = require("src.widgets.cpu_info")("temp")
-- s.gpu_usage = require("src.widgets.gpu_info")("usage")
-- s.gpu_temp = require("src.widgets.gpu_info")("temp")
-- s.network = require("src.widgets.network")()
-- s.ram_info = require("src.widgets.ram_info")()
if s.index == 1 then
s.systray = require("src.widgets.systray")(s)
s.cpu_usage = require("src.widgets.cpu_info")("usage")
s.cpu_temp = require("src.widgets.cpu_info")("temp")
s.gpu_usage = require("src.widgets.gpu_info")("usage")
s.gpu_temp = require("src.widgets.gpu_info")("temp")
require("src.modules.crylia_bar.left_bar")(s, { s.layoutlist, s.systray, s.taglist })
require("src.modules.crylia_bar.center_bar")(s, { s.tasklist })
require("src.modules.crylia_bar.right_bar")(s, { s.gpu_usage, s.gpu_temp, s.cpu_usage, s.cpu_temp, s.audio, s.kblayout, s.date, s.clock, s.powerbutton })
require("src.modules.crylia_bar.dock")(s, user_vars.dock_programs)
end
if s.index == 2 then
s.network = require("src.widgets.network")()
s.ram_info = require("src.widgets.ram_info")()
require("src.modules.crylia_bar.left_bar")(s, { s.layoutlist, s.taglist })
require("src.modules.crylia_bar.center_bar")(s, { s.tasklist })
require("src.modules.crylia_bar.right_bar")(s, { s.ram_info, s.audio, s.kblayout, s.network, s.date, s.clock, s.powerbutton })
end
end

View File

@@ -0,0 +1,28 @@
--------------------------------------------------------------------------------------------------------------
-- This is the statusbar, every widget, module and so on is combined to all the stuff you see on the screen --
--------------------------------------------------------------------------------------------------------------
-- Awesome Libs
local awful = require("awful")
awful.screen.connect_for_each_screen(
-- For each screen this function is called once
-- If you want to change the modules per screen use the indices
-- e.g. 1 would be the primary screen and 2 the secondary screen.
function(s)
-- Create 9 tags
awful.layout.layouts = user_vars.layouts
awful.tag(
{ "1", "2", "3", "4", "5", "6", "7", "8", "9" },
s,
user_vars.layouts[1]
)
require("src.modules.powermenu")(s)
require("src.modules.volume_osd")(s)
require("src.modules.brightness_osd")(s)
require("src.modules.titlebar")
require("src.modules.volume_controller")(s)
require("src.modules.crylia_bar.init")(s)
require("src.modules.notification-center.init")(s)
end
)

View File

@@ -0,0 +1,371 @@
-------------------------------------
-- This is the notification-center --
-------------------------------------
-- Awesome Libs
local awful = require("awful")
local color = require("src.theme.colors")
local dpi = require("beautiful").xresources.apply_dpi
local gears = require("gears")
local wibox = require("wibox")
-- Icon directory path
local icondir = awful.util.getdir("config") .. "src/assets/icons/notifications/"
return function(s)
--#region Activation area
local activation_area = awful.popup {
bg = '#00000000',
widget = wibox.container.background,
ontop = true,
screen = s,
type = 'dock',
placement = function(c)
awful.placement.top(c)
end,
}
activation_area:setup({
widget = wibox.container.background,
forced_height = dpi(1),
forced_width = dpi(300),
bg = '#00000000',
layout = wibox.layout.fixed.horizontal
})
--#endregion
--#region Widgets
local nl = require("src.modules.notification-center.notification_list").notification_list
local music_widget = require("src.modules.notification-center.song_info")()
local time_date = require("src.modules.notification-center.time_date")()
local weather_widget = require("src.modules.notification-center.weather")()
local profile_widget = require("src.modules.notification-center.profile")()
local status_bars_widget = require("src.modules.notification-center.status_bars")()
--#endregion
--#region Notification buttons
local clear_all_widget = wibox.widget { -- Clear all button
{
{
{
text = "Clear",
valign = "center",
align = "center",
widget = wibox.widget.textbox,
id = "clearall"
},
id = "background4",
fg = color["Grey900"],
bg = color["Blue200"],
shape = function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, 12)
end,
forced_width = dpi(80),
forced_height = dpi(40),
widget = wibox.container.background
},
id = "margin3",
margins = dpi(10),
widget = wibox.container.margin
},
id = "place",
widget = wibox.container.place,
valign = "bottom",
halign = "right",
}
local left_button = wibox.widget {
{
{
widget = wibox.container.background,
bg = color["Grey700"],
shape = function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, dpi(8))
end,
forced_height = dpi(30),
forced_width = dpi(30),
id = "circle"
},
left = dpi(5),
right = dpi(5),
widget = wibox.container.margin,
id = "margin"
},
visible = true,
valign = "center",
halign = "left",
widget = wibox.container.place,
}
local right_button = wibox.widget {
{
{
widget = wibox.container.background,
bg = color["Purple200"],
shape = function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, dpi(8))
end,
forced_height = dpi(30),
forced_width = dpi(30),
id = "circle"
},
left = dpi(5),
right = dpi(5),
widget = wibox.container.margin,
id = "margin"
},
valign = "center",
halign = "right",
visible = false,
widget = wibox.container.place,
}
local toggle_button = wibox.widget {
{
left_button,
right_button,
widget = wibox.layout.flex.horizontal
},
active = false,
widget = wibox.container.background,
bg = color["Grey900"],
border_color = color["Grey800"],
border_width = dpi(2),
forced_height = dpi(40),
forced_width = dpi(80),
shape = function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, dpi(10))
end,
}
toggle_button:connect_signal(
"button::press",
function()
if toggle_button.active then
left_button.visible = true
right_button.visible = false
toggle_button.active = not toggle_button.active
toggle_button.border_color = color["Grey800"]
user_vars.dnd = false
else
left_button.visible = false
right_button.visible = true
toggle_button.active = not toggle_button.active
toggle_button.border_color = color["Purple200"]
user_vars.dnd = true
end
end
)
local dnd = wibox.widget { -- Clear all button
{
{
{
{
text = "Do Not Disturb",
valign = "center",
align = "center",
widget = wibox.widget.textbox,
id = "clearall"
},
toggle_button,
spacing = dpi(10),
layout = wibox.layout.fixed.horizontal,
id = "layout12"
},
id = "background4",
fg = color["Pink200"],
shape = function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, 12)
end,
forced_height = dpi(40),
widget = wibox.container.background
},
id = "margin3",
margins = dpi(10),
widget = wibox.container.margin
},
id = "place",
widget = wibox.container.place,
valign = "bottom",
halign = "right",
}
-- TODO: Add rubato animation. For this the widget needs to be rewritten to use a single moving square
local no_notification_widget = wibox.widget {
{
{
valign = "center",
halign = "center",
resize = true,
forced_height = dpi(200),
forced_width = dpi(200),
image = icondir .. "megamind.svg",
widget = wibox.widget.imagebox,
id = "icon"
},
{
id = "txt",
markup = "<span color='#414141' font='JetBrainsMono Nerd Font, ExtraBold 20'>No Notifications?</span>",
valign = "center",
halign = "center",
widget = wibox.widget.textbox
},
id = "lay",
layout = wibox.layout.fixed.vertical
},
valign = "center",
halign = "center",
widget = wibox.container.place
}
--#endregion
--#region Notification center
local notification_center = awful.popup {
widget = wibox.container.background,
bg = color["Grey900"],
border_color = color["Grey800"],
border_width = dpi(4),
placement = function(c)
awful.placement.top(c, { margins = dpi(10) })
end,
ontop = true,
screen = s,
visible = false,
shape = function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, 12)
end,
}
-- TODO: Currently awesome doesn't come with a scroll container, there is a PR(#3309) and once its merged we can use it
local function notification_center_setup()
notification_center:setup({
widget = notification_center,
-- Custom widgets
{
time_date,
require("src.modules.notification-center.spacingline_widget")(),
{
{
weather_widget,
{
profile_widget,
layout = wibox.layout.fixed.vertical
},
layout = wibox.layout.fixed.horizontal
},
layout = wibox.layout.fixed.horizontal
},
status_bars_widget,
music_widget,
layout = wibox.layout.fixed.vertical
},
-- Notification list
{
{
{
nl,
height = dpi(680),
strategy = "max",
widget = wibox.container.constraint
},
{
no_notification_widget,
strategy = "max",
height = dpi(400),
widget = wibox.container.constraint
},
{
dnd,
nil,
clear_all_widget,
layout = wibox.layout.align.horizontal
},
id = "layout5",
layout = wibox.layout.align.vertical
},
id = "margin6",
margins = dpi(20),
widget = wibox.container.margin
},
id = "yes",
spacing_widget = {
{
fg = color["Grey800"],
bg = color["Grey800"],
widget = wibox.container.background
},
top = dpi(40),
bottom = dpi(40),
widget = wibox.container.margin
},
spacing = dpi(1),
forced_height = dpi(800),
forced_width = dpi(1000),
layout = wibox.layout.flex.horizontal
})
end
--#endregion
--#region Signals
-- Toggle notification_center visibility when mouse is over activation_area
activation_area:connect_signal(
"mouse::enter",
function()
notification_center.visible = true
notification_center_setup()
end
)
-- Update the notification center popup and check if there are no notifications
awesome.connect_signal(
"notification_center:update::needed",
function()
if #nl == 0 then
math.randomseed(os.time())
local prob = math.random(1, 10)
if (prob == 5) or (prob == 6) then
no_notification_widget.lay.icon.image = icondir .. "megamind.svg"
no_notification_widget.lay.txt.markup = "<span color='#414141' font='JetBrainsMono Nerd Font, ExtraBold 20'>No Notifications?</span>"
else
no_notification_widget.lay.icon.image = icondir .. "bell-outline.svg"
no_notification_widget.lay.txt.markup = "<span color='#414141' font='JetBrainsMono Nerd Font, ExtraBold 20'>No Notification</span>"
end
no_notification_widget.visible = true
else
no_notification_widget.visible = false
end
notification_center_setup()
end
)
-- Hide notification_center when mouse leaves it
notification_center:connect_signal(
"mouse::leave",
function()
notification_center.visible = false
end
)
-- Clear all notifications on button press
clear_all_widget:connect_signal(
"button::press",
function()
local size = #nl
for i = 0, size do
nl[i] = nil
end
awesome.emit_signal("notification_center:update::needed")
end
)
Hover_signal(clear_all_widget, color["Blue200"], color["Grey900"])
--#endregion
end

View File

@@ -0,0 +1,261 @@
-------------------------------------
-- This is the notification-center --
-------------------------------------
-- Awesome Libs
local awful = require("awful")
local color = require("src.theme.colors")
local dpi = require("beautiful").xresources.apply_dpi
local gears = require("gears")
local wibox = require("wibox")
local naughty = require("naughty")
-- Icon directory path
local icondir = awful.util.getdir("config") .. "src/assets/icons/notifications/"
local nl = {}
nl.notification_list = { layout = wibox.layout.fixed.vertical, spacing = dpi(20) }
-- @param {table} notification
-- @return {widget} notifications_list
function nl.create_notification(n)
n.time = os.time()
local time_ago_text = "- ago"
local timer_widget = wibox.widget {
{
{
text = time_ago_text,
widget = wibox.widget.textbox,
id = "txt"
},
id = "background",
fg = color["Teal200"],
widget = wibox.container.background
},
margins = dpi(10),
widget = wibox.container.margin,
}
gears.timer {
timeout = 1,
autostart = true,
call_now = true,
callback = function()
local time_ago = math.floor(os.time() - n.time)
local timer_text = timer_widget.background.txt
if time_ago < 5 then
timer_text:set_text("now")
elseif time_ago < 60 then
timer_text:set_text(time_ago .. "s ago")
elseif time_ago < 3600 then
timer_text:set_text(math.floor(time_ago / 60) .. "m ago")
elseif time_ago < 86400 then
timer_text:set_text(math.floor(time_ago / 3600) .. "h ago")
else
timer_text:set_text(math.floor(time_ago / 86400) .. "d ago")
end
end
}
local close_widget = wibox.widget {
{
{
{
{
font = user_vars.font.specify .. ", 10",
text = "",
align = "center",
valign = "center",
widget = wibox.widget.textbox
},
start_angle = 4.71239,
thickness = dpi(2),
min_value = 0,
max_value = 360,
value = 360,
widget = wibox.container.arcchart,
id = "arc_chart"
},
id = "background",
fg = color["Teal200"],
widget = wibox.container.background
},
strategy = "exact",
width = dpi(20),
height = dpi(20),
widget = wibox.container.constraint,
id = "const"
},
margins = dpi(10),
widget = wibox.container.margin,
id = "arc_margin"
}
local timer_close_widget = timer_widget
local notification = wibox.widget {
{
{
{
{
{
{
{
{
{
{
image = gears.color.recolor_image(icondir .. "notification-outline.svg", color["Teal200"]),
resize = false,
widget = wibox.widget.imagebox
},
right = dpi(5),
widget = wibox.container.margin
},
{
markup = n.app_name or 'System Notification',
align = "center",
valign = "center",
widget = wibox.widget.textbox
},
layout = wibox.layout.fixed.horizontal
},
fg = color["Teal200"],
widget = wibox.container.background
},
margins = dpi(10),
widget = wibox.container.margin
},
nil,
{
timer_widget,
layout = wibox.layout.fixed.horizontal,
id = "arc_app_layout_2"
},
id = "arc_app_layout",
layout = wibox.layout.align.horizontal
},
id = "arc_app_bg",
border_color = color["Grey800"],
border_width = dpi(2),
widget = wibox.container.background
},
{
{
{
{
{
image = n.icon,
resize = true,
widget = wibox.widget.imagebox,
clip_shape = function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, 10)
end
},
width = naughty.config.defaults.icon_size,
height = naughty.config.defaults.icon_size,
strategy = "exact",
widget = wibox.container.constraint
},
halign = "center",
valign = "top",
widget = wibox.container.place
},
id = "margin01",
left = dpi(20),
bottom = dpi(15),
top = dpi(15),
right = dpi(10),
widget = wibox.container.margin
},
{
{
{
markup = n.title,
widget = wibox.widget.textbox,
align = "left"
},
{
markup = n.message,
widget = wibox.widget.textbox,
align = "left"
},
layout = wibox.layout.fixed.vertical
},
left = dpi(10),
bottom = dpi(10),
top = dpi(10),
right = dpi(20),
widget = wibox.container.margin
},
layout = wibox.layout.fixed.horizontal
},
id = "widget_layout",
layout = wibox.layout.fixed.vertical
},
id = "min_size",
strategy = "min",
width = dpi(100),
widget = wibox.container.constraint
},
id = "max_size",
strategy = "max",
width = Theme.notification_max_width or dpi(500),
widget = wibox.container.constraint
},
pk = #nl.notification_list + 1,
bg = color["Grey900"],
border_color = color["Grey800"],
border_width = dpi(4),
shape = function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, 8)
end,
widget = wibox.container.background
}
close_widget:connect_signal(
"button::press",
function(_, _, _, button)
if button == 1 then
for i, b in pairs(nl.notification_list) do
if b.pk == notification.pk then
table.remove(nl.notification_list, i)
awesome.emit_signal("notification_center:update::needed")
break
end
end
end
end
)
Hover_signal(close_widget.const.background, color["Grey900"], color["Teal200"])
notification:connect_signal(
"mouse::enter",
function()
notification:get_children_by_id("arc_app_layout_2")[1]:set(1, close_widget)
end
)
notification:connect_signal(
"mouse::leave",
function()
notification:get_children_by_id("arc_app_layout_2")[1]:set(1, timer_close_widget)
end
)
table.insert(nl.notification_list, notification)
end
naughty.connect_signal(
"request::display",
function(n)
nl.create_notification(n)
awesome.emit_signal("notification_center:update::needed")
end
)
return nl

View File

@@ -0,0 +1,207 @@
--------------------------------
-- This is the profile widget --
--------------------------------
-- Awesome Libs
local awful = require("awful")
local color = require("src.theme.colors")
local dpi = require("beautiful").xresources.apply_dpi
local gears = require("gears")
local wibox = require("wibox")
-- Icon directory path
local icondir = awful.util.getdir("config") .. "src/assets/icons/profile/"
return function()
local profile_widget = wibox.widget {
{
{
{
{
{
{
image = gears.surface.load_uncached(awful.util.getdir("config") .. "src/assets/userpfp/crylia.png"),
id = "icon",
valign = "center",
halign = "center",
clip_shape = function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, dpi(12))
end,
widget = wibox.widget.imagebox
},
strategy = "exact",
widget = wibox.container.constraint
},
id = "icon_margin",
margins = dpi(20),
widget = wibox.container.margin
},
{
{
{
{
{ -- Username
id = "username_prefix",
image = gears.color.recolor_image(icondir .. "user.svg", color["Blue200"]),
valign = "center",
halign = "left",
resize = false,
widget = wibox.widget.imagebox
},
{ -- Username
id = "username",
valign = "center",
align = "left",
widget = wibox.widget.textbox
},
spacing = dpi(10),
layout = wibox.layout.fixed.horizontal
},
{
{
id = "os_prefix",
image = gears.color.recolor_image(icondir .. "laptop.svg", color["Blue200"]),
valign = "center",
halign = "left",
resize = false,
widget = wibox.widget.imagebox
},
{ -- OS
id = "os",
valign = "center",
align = "left",
widget = wibox.widget.textbox
},
spacing = dpi(10),
layout = wibox.layout.fixed.horizontal
},
{
{
id = "kernel_prefix",
image = gears.color.recolor_image(icondir .. "penguin.svg", color["Blue200"]),
valign = "center",
halign = "left",
resize = false,
widget = wibox.widget.imagebox
},
{ -- Kernel
id = "kernel",
valign = "center",
align = "left",
widget = wibox.widget.textbox
},
spacing = dpi(10),
layout = wibox.layout.fixed.horizontal
},
{
{
id = "uptime_prefix",
image = gears.color.recolor_image(icondir .. "clock.svg", color["Blue200"]),
valign = "center",
halign = "left",
resize = false,
widget = wibox.widget.imagebox
},
{ -- Uptime
id = "uptime",
valign = "center",
align = "left",
widget = wibox.widget.textbox
},
spacing = dpi(10),
id = "uptime_layout",
layout = wibox.layout.fixed.horizontal
},
spacing = dpi(5),
id = "info_layout",
layout = wibox.layout.flex.vertical
},
id = "text_margin",
widget = wibox.container.constraint
},
id = "text_container",
bottom = dpi(20),
left = dpi(20),
widget = wibox.container.margin
},
id = "text_container_wrapper",
widget = wibox.layout.fixed.vertical
},
id = "wrapper",
fg = color["Green200"],
border_color = color["Grey800"],
border_width = dpi(4),
shape = function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, dpi(8))
end,
widget = wibox.container.background
},
id = "const",
strategy = "exact",
width = dpi(250),
height = dpi(350),
widget = wibox.container.constraint
},
top = dpi(20),
left = dpi(10),
right = dpi(20),
bottom = dpi(10),
widget = wibox.container.margin
}
local function get_os_name_pretty()
awful.spawn.easy_async_with_shell(
"cat /etc/os-release | grep -w NAME",
function(stdout)
profile_widget:get_children_by_id("os")[1].text = stdout:match("\"(.+)\"")
end
)
end
-- function to get and set the kernel version
local function get_kernel_version()
awful.spawn.easy_async_with_shell(
"uname -r",
function(stdout)
profile_widget:get_children_by_id("kernel")[1].text = stdout:match("(%d+%.%d+%.%d+)")
end
)
end
--function to get the username and hostname
local function get_user_hostname()
awful.spawn.easy_async_with_shell(
"echo $USER@$(hostname)",
function(stdout)
profile_widget:get_children_by_id("username")[1].text = stdout:gsub("\n", "") or ""
end
)
end
-- function to fetch uptime async
local function get_uptime()
awful.spawn.easy_async_with_shell("uptime -p", function(stdout)
local hours = stdout:match("(%d+) hours") or 0
local minutes = stdout:match("(%d+) minutes") or 0
profile_widget:get_children_by_id("uptime")[1].text = hours .. "h, " .. minutes .. "m"
end)
end
get_os_name_pretty()
get_kernel_version()
get_user_hostname()
gears.timer {
timeout = 60,
autostart = true,
call_now = true,
callback = get_uptime
}
return profile_widget
end

View File

@@ -0,0 +1,466 @@
---------------------------
-- This is the song-info --
---------------------------
-- Awesome Libs
local awful = require("awful")
local color = require("src.theme.colors")
local dpi = require("beautiful").xresources.apply_dpi
local gears = require("gears")
local wibox = require("wibox")
local naughty = require("naughty")
-- Icon directory path
local icondir = awful.util.getdir("config") .. "src/assets/icons/notifications/"
return function(s)
--#region Music control button widgets
local function button_hover_effect(widget, svg, color, color2)
local mouse_enter = function()
widget.image = gears.surface.load_uncached(gears.color.recolor_image(icondir .. svg, color2))
local w = mouse.current_wibox
if w then
w.cursor = "hand1"
end
end
local mouse_leave = function()
widget.image = gears.surface.load_uncached(gears.color.recolor_image(icondir .. svg, color))
mouse.cursor = "left_ptr"
local w = mouse.current_wibox
if w then
w.cursor = "left_ptr"
end
end
widget:disconnect_signal("mouse::enter", mouse_enter)
widget:connect_signal("mouse::enter", mouse_enter)
widget:disconnect_signal("mouse::leave", mouse_leave)
widget:connect_signal("mouse::leave", mouse_leave)
end
local shuffle_button = wibox.widget {
resize = false,
image = gears.color.recolor_image(icondir .. "shuffle.svg", color["Grey800"]),
widget = wibox.widget.imagebox,
}
local function suffle_handler()
awful.spawn.easy_async_with_shell(
"playerctl shuffle",
function(stdout)
if stdout:match("On") then
awful.spawn.with_shell("playerctl shuffle off")
shuffle_button.image = gears.color.recolor_image(icondir .. "shuffle.svg", color["Grey800"])
else
awful.spawn.with_shell("playerctl shuffle on")
shuffle_button.image = gears.color.recolor_image(icondir .. "shuffle.svg", color["Green200"])
end
end
)
end
local function update_shuffle()
awful.spawn.easy_async_with_shell(
"playerctl shuffle",
function(stdout)
if stdout:match("On") then
shuffle_button.image = gears.color.recolor_image(icondir .. "shuffle.svg", color["Green200"])
else
shuffle_button.image = gears.color.recolor_image(icondir .. "shuffle.svg", color["Grey800"])
end
end
)
end
update_shuffle()
local repeat_button = wibox.widget {
resize = false,
image = gears.color.recolor_image(icondir .. "repeat.svg", color["Grey800"]),
widget = wibox.widget.imagebox,
id = "imagebox"
}
-- On first time load set the correct loop
local function update_loop()
awful.spawn.easy_async_with_shell(
"playerctl loop",
function(stdout)
local loop_mode = stdout:gsub("\n", "")
if loop_mode == "Track" then
repeat_button.image = gears.color.recolor_image(gears.surface.load_uncached(icondir .. "repeat-once.svg"), color["Green200"])
elseif loop_mode == "None" then
repeat_button.image = gears.color.recolor_image(gears.surface.load_uncached(icondir .. "repeat.svg"), color["Grey800"])
elseif loop_mode == "Playlist" then
repeat_button.image = gears.color.recolor_image(gears.surface.load_uncached(icondir .. "repeat.svg"), color["Green200"])
end
end
)
end
update_loop()
-- Activate shuffle when button is clicked
shuffle_button:buttons(gears.table.join(
awful.button({}, 1, suffle_handler)))
local prev_button = wibox.widget {
resize = false,
image = gears.color.recolor_image(icondir .. "skip-prev.svg", color["Teal200"]),
widget = wibox.widget.imagebox
}
-- Activate previous song when button is clicked
prev_button:buttons(gears.table.join(
awful.button({}, 1, function()
awful.spawn.easy_async_with_shell(
"playerctl previous && sleep 1",
function()
update_loop()
end
)
end)
))
local pause_play_button = wibox.widget {
resize = false,
image = gears.color.recolor_image(icondir .. "play-pause.svg", color["Teal200"]),
widget = wibox.widget.imagebox
}
-- Activate play/pause when button is clicked
pause_play_button:buttons(gears.table.join(
awful.button({}, 1, function()
awful.spawn.with_shell("playerctl play-pause")
end)
))
local next_button = wibox.widget {
resize = false,
image = gears.color.recolor_image(icondir .. "skip-next.svg", color["Teal200"]),
widget = wibox.widget.imagebox
}
-- Activate next song when button is clicked
next_button:buttons(gears.table.join(
awful.button({}, 1, function()
awful.spawn.easy_async_with_shell(
"playerctl next && sleep 1",
function()
update_loop()
end
)
end)
))
--- This function updates the repeat button svg and changes the mode on click
local function loop_handler()
awful.spawn.easy_async_with_shell(
"playerctl loop",
function(stdout)
local loop_mode = stdout:gsub("\n", "")
if loop_mode == "None" then
awful.spawn.with_shell("playerctl loop playlist")
repeat_button.image = gears.color.recolor_image(gears.surface.load_uncached(icondir .. "repeat.svg"), color["Green200"])
elseif loop_mode == "Playlist" then
awful.spawn.with_shell("playerctl loop track")
repeat_button.image = gears.color.recolor_image(gears.surface.load_uncached(icondir .. "repeat-once.svg"), color["Green200"])
elseif loop_mode == "Track" then
awful.spawn.with_shell("playerctl loop none")
repeat_button.image = gears.color.recolor_image(gears.surface.load_uncached(icondir .. "repeat.svg"), color["Grey800"])
end
end
)
end
repeat_button:buttons(gears.table.join(awful.button({}, 1, loop_handler)))
button_hover_effect(prev_button, "skip-prev.svg", color["Teal200"], color["Teal300"])
button_hover_effect(pause_play_button, "play-pause.svg", color["Teal200"], color["Teal300"])
button_hover_effect(next_button, "skip-next.svg", color["Teal200"], color["Teal300"])
--#endregion
-- Main music widget
local music_widget = wibox.widget {
{
{
{
{
{
{ -- Album art
{
image = "default image",
resize = true,
clip_shape = function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, dpi(8))
end,
widget = wibox.widget.imagebox,
id = "imagebox"
},
width = dpi(80),
height = dpi(80),
strategy = "exact",
widget = wibox.container.constraint,
id = "const"
},
{
{
{
{
{ --Title
halign = "center",
align = "center",
widget = wibox.widget.textbox,
id = "textbox4"
},
fg = color["Pink200"],
id = "textbox5",
widget = wibox.container.background
},
strategy = "max",
width = dpi(400),
widget = wibox.container.constraint
},
halign = "center",
valign = "center",
id = "textbox_container4",
widget = wibox.container.place
},
{
{
{
{ --Artist
halign = "center",
align = "center",
widget = wibox.widget.textbox,
id = "textbox3"
},
fg = color["Teal200"],
id = "background",
widget = wibox.container.background
},
strategy = "max",
width = dpi(400),
widget = wibox.container.constraint
},
halign = "center",
valign = "center",
id = "artist_container",
widget = wibox.container.place
},
{ --Buttons
{
{
shuffle_button,
prev_button,
pause_play_button,
next_button,
repeat_button,
spacing = dpi(15),
layout = wibox.layout.fixed.horizontal,
id = "layout5"
},
halign = "center",
widget = wibox.container.place,
id = "place2"
},
widget = wibox.container.margin,
id = "margin6"
},
layout = wibox.layout.flex.vertical,
id = "layout4"
},
fill_space = true,
spacing = dpi(10),
layout = wibox.layout.fixed.horizontal,
id = "layout3"
},
widget = wibox.container.margin,
id = "margin5"
},
{ --Song Duration
{
{
{
markup = "0:00",
widget = wibox.widget.textbox,
id = "textbox2"
},
fg = color["Lime200"],
widget = wibox.container.background,
id = "background3"
},
right = dpi(10),
widget = wibox.container.margin,
id = "margin4"
},
{ -- Progressbar
{
color = color["Purple200"],
background_color = color["Grey800"],
max_value = 100,
value = 50,
forced_height = dpi(5),
shape = function(cr, width)
gears.shape.rounded_bar(cr, width, dpi(5))
end,
widget = wibox.widget.progressbar,
id = "progressbar1"
},
valign = "center",
halign = "center",
widget = wibox.container.place,
id = "place1"
},
{
{
{
text = "00:00",
widget = wibox.widget.textbox,
id = "text1"
},
id = "background2",
fg = color["Lime200"],
widget = wibox.container.background
},
id = "margin3",
left = dpi(10),
widget = wibox.container.margin
},
id = "layout2",
layout = wibox.layout.align.horizontal
},
id = "layout1",
spacing = dpi(10),
layout = wibox.layout.fixed.vertical
},
id = "margin2",
widget = wibox.container.margin,
margins = dpi(10)
},
id = "background1",
border_color = color["Grey800"],
border_width = dpi(4),
shape = function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, dpi(8))
end,
widget = wibox.container.background
},
id = "margin1",
widget = wibox.container.margin,
top = dpi(10),
bottom = dpi(20),
left = dpi(20),
right = dpi(20)
}
-- Used to check if the music changed and if everthing should be updated
local trackid = ""
local artist = ""
local title = ""
-- Function to get spotify title, artist, album, album_art, length and track_id
local function get_spotify_metadata(skip_check)
skip_check = skip_check or false
awful.spawn.easy_async_with_shell(
"playerctl metadata",
function(stdout)
-- Only fetch info if the track changed or if the title/artist is empty
if skip_check or (not stdout:match(trackid)) or (not stdout:match(artist)) or (not stdout:match(title)) then
update_loop()
update_shuffle()
-- Get the song title
awful.spawn.easy_async_with_shell(
"playerctl metadata xesam:title",
function(stdout2)
local tit = stdout2:gsub("\n", "")
title = tit
music_widget:get_children_by_id("textbox4")[1].text = tit
end
)
-- Get the song artist
awful.spawn.easy_async_with_shell(
"playerctl metadata xesam:artist",
function(stdout2)
local art = stdout2:gsub("\n", "")
artist = art
music_widget:get_children_by_id("textbox3")[1].text = art
end
)
-- Get the song album image
awful.spawn.easy_async_with_shell(
"playerctl metadata mpris:artUrl",
function(album_art)
local url = album_art:gsub("\n", "")
awful.spawn.easy_async_with_shell(
-- TODO: curl does not stdout and is returns before it finished. This causes the image to sometimes not show correctly.
-- !Find a better solution than sleep 0.1
-- Maybe cache the image? Not sure if that would be a waste of space or not.
"curl -s " .. url .. " -o /tmp/album_art.jpg && echo /tmp/album_art.jpg && sleep 0.5",
function()
music_widget:get_children_by_id("imagebox")[1].image = gears.surface.load_uncached("/tmp/album_art.jpg")
end
)
end
)
-- Get the length of the song
awful.spawn.easy_async_with_shell(
"playerctl metadata mpris:length",
function(stdout2)
local length = stdout2:gsub("\n", "")
if length ~= "" then
local length_formated = string.format("%02d:%02d", math.floor(tonumber(length or 1) / 60000000) or 0, (math.floor(tonumber(length or 1) / 1000000) % 60) or 0)
music_widget:get_children_by_id("progressbar1")[1].max_value = tonumber(math.floor(tonumber(length) / 1000000))
music_widget:get_children_by_id("text1")[1].markup = string.format("<span foreground='%s' font='JetBrainsMono Nerd Font, Bold 14'>%s</span>", color["Teal200"], length_formated)
end
end
)
end
awful.spawn.easy_async_with_shell(
"playerctl metadata mpris:trackid",
function(stdout2)
trackid = stdout2:gsub("\n", "")
end
)
-- Update track id
trackid, artist, title = stdout, music_widget:get_children_by_id("textbox3")[1].text, music_widget:get_children_by_id("textbox4")[1].text
end
)
-- Always update the current song progression
awful.spawn.easy_async_with_shell(
"playerctl position",
function(stdout)
local time = stdout:gsub("\n", "")
if time ~= "" then
local time_formated = string.format("%02d:%02d", math.floor(tonumber(time or "1") / 60), math.floor(tonumber(time or "1")) % 60)
music_widget:get_children_by_id("textbox2")[1].markup = string.format("<span foreground='%s' font='JetBrainsMono Nerd Font, Bold 14'>%s</span>", color["Teal200"], time_formated)
music_widget:get_children_by_id("progressbar1")[1].value = tonumber(time)
end
end
)
end
-- Call every second, if performance is bad, set the timer to a higher value
gears.timer {
timeout = 1,
autostart = true,
call_now = true,
callback = function()
get_spotify_metadata()
end
}
-- get_spotify_metadata() on awesome reload
awesome.connect_signal("startup", function()
get_spotify_metadata(true)
end)
return music_widget
end

View File

@@ -0,0 +1,23 @@
------------------------------------------------
-- This is the spacing widget under the clock --
------------------------------------------------
-- Awesome Libs
local color = require("src.theme.colors")
local dpi = require("beautiful").xresources.apply_dpi
local wibox = require("wibox")
return function()
return wibox.widget {
{
forced_height = dpi(2),
bg = color["Grey800"],
widget = wibox.container.background
},
left = dpi(80),
right = dpi(80),
widget = wibox.container.margin
}
end

View File

@@ -0,0 +1,712 @@
------------------------------------
-- This is the status_bars widget --
------------------------------------
-- Awesome Libs
local awful = require("awful")
local color = require("src.theme.colors")
local dpi = require("beautiful").xresources.apply_dpi
local gears = require("gears")
local wibox = require("wibox")
local rubato = require("src.lib.rubato")
-- Icon directory path
local icondir = awful.util.getdir("config") .. "src/assets/icons/"
--- Signal bars widget for the notification-center
---@return wibox.widget
return function()
---Creates a layout with bar widgets based on the given table
---@param widget_table string{}
---@return table @{layout}
local function create_bar_layout(widget_table)
local bar_layout = { layout = wibox.layout.flex.horizontal, spacing = dpi(10) }
for _, widget in pairs(widget_table) do
local w
if widget == "cpu_usage" then
w = wibox.widget {
{
{
{ --Bar
color = color["Blue200"],
background_color = color["Grey800"],
max_value = 100,
value = 0,
forced_height = dpi(8),
shape = function(cr, width, heigth)
gears.shape.rounded_bar(cr, dpi(58), dpi(8))
end,
id = "progressbar1",
widget = wibox.widget.progressbar
},
id = "background1",
halign = "center",
valign = "center",
widget = wibox.container.place
},
id = "background2",
forced_height = dpi(58), --120 Base size - (10+10) margin - (4+4) Border - 24 Icon - 10 spacing = 58
forced_width = dpi(24),
direction = "east",
widget = wibox.container.rotate
},
{
{ --Icon
image = gears.color.recolor_image(icondir .. "cpu/cpu.svg", color["Cyan200"]),
halign = "center",
valign = "center",
widget = wibox.widget.imagebox,
id = "icon1",
},
id = "background3",
height = dpi(24),
width = dpi(24),
widget = wibox.container.constraint
},
id = "cpu_layout",
spacing = dpi(10),
layout = wibox.layout.fixed.vertical
}
local bar = w:get_children_by_id("progressbar1")[1]
local rubato_timer = rubato.timed {
duration = 1,
pos = bar.value,
easing = rubato.linear,
subscribed = function(v)
bar.value = v
end
}
local tooltip = awful.tooltip {
objects = { w },
mode = "inside",
preferred_alignments = "middle",
margins = dpi(10)
}
awesome.connect_signal(
"update::cpu_usage_widget",
function(cpu_usage)
w:get_children_by_id("progressbar1")[1].value = cpu_usage
tooltip.text = "CPU Usage: " .. cpu_usage .. "%"
rubato_timer.target = cpu_usage
end
)
elseif widget == "cpu_temp" then
w = wibox.widget {
{
{
{ --Bar
color = color["Blue200"],
background_color = color["Grey800"],
max_value = 100,
value = 50,
forced_height = dpi(8),
shape = function(cr, width, heigth)
gears.shape.rounded_bar(cr, dpi(58), dpi(8))
end,
id = "progressbar1",
widget = wibox.widget.progressbar
},
id = "background1",
halign = "center",
valign = "center",
widget = wibox.container.place
},
id = "background2",
forced_height = dpi(58), --120 Base size - (10+10) margin - (4+4) Border - 24 Icon - 10 spacing = 58
forced_width = dpi(24),
direction = "east",
widget = wibox.container.rotate
},
{
{ --Icon
id = "icon1",
image = gears.color.recolor_image(icondir .. "cpu/thermometer.svg", color["Cyan200"]),
halign = "center",
valign = "center",
widget = wibox.widget.imagebox
},
id = "background3",
height = dpi(24),
width = dpi(24),
widget = wibox.container.constraint
},
id = "cpu_temp_layout",
spacing = dpi(10),
layout = wibox.layout.fixed.vertical
}
local bar = w:get_children_by_id("progressbar1")[1]
local rubato_timer = rubato.timed {
duration = 1,
pos = bar.value,
easing = rubato.linear,
subscribed = function(v)
bar.value = v
end
}
local tooltip = awful.tooltip {
objects = { w },
mode = "inside",
preferred_alignments = "middle",
margins = dpi(10)
}
awesome.connect_signal(
"update::cpu_temp_widget",
function(cpu_temp, cpu_temp_icon)
w:get_children_by_id("progressbar1")[1].value = cpu_temp
w:get_children_by_id("icon1")[1].image = gears.color.recolor_image(cpu_temp_icon, color["Blue200"])
tooltip.text = "CPU Temp: " .. cpu_temp .. "°C"
rubato_timer.target = cpu_temp
end
)
elseif widget == "ram_usage" then
w = wibox.widget {
{
{
{ --Bar
color = color["Red200"],
background_color = color["Grey800"],
max_value = 100,
value = 50,
forced_height = dpi(8),
shape = function(cr, width, heigth)
gears.shape.rounded_bar(cr, dpi(58), dpi(8))
end,
id = "progressbar1",
widget = wibox.widget.progressbar
},
id = "background1",
halign = "center",
valign = "center",
widget = wibox.container.place
},
id = "background2",
forced_height = dpi(58), --120 Base size - (10+10) margin - (4+4) Border - 24 Icon - 10 spacing = 58
forced_width = dpi(24),
direction = "east",
widget = wibox.container.rotate
},
{
{ --Icon
image = gears.color.recolor_image(icondir .. "cpu/ram.svg", color["Red200"]),
halign = "center",
valign = "center",
widget = wibox.widget.imagebox
},
height = dpi(24),
width = dpi(24),
widget = wibox.container.constraint
},
id = "ram_layout",
spacing = dpi(10),
layout = wibox.layout.fixed.vertical
}
local bar = w:get_children_by_id("progressbar1")[1]
local rubato_timer = rubato.timed {
duration = 1,
pos = bar.value,
easing = rubato.linear,
subscribed = function(v)
bar.value = v
end
}
local tooltip = awful.tooltip {
objects = { w },
mode = "inside",
preferred_alignments = "middle",
margins = dpi(10)
}
awesome.connect_signal(
"update::ram_widget",
function(ram_usage)
w:get_children_by_id("progressbar1")[1].value = ram_usage
tooltip.text = "RAM Usage: " .. ram_usage .. "%"
rubato_timer.target = ram_usage
end
)
elseif widget == "gpu_usage" then
w = wibox.widget {
{
{
{ --Bar
color = color["Green200"],
background_color = color["Grey800"],
max_value = 100,
value = 50,
forced_height = dpi(8),
shape = function(cr, width, heigth)
gears.shape.rounded_bar(cr, dpi(58), dpi(8))
end,
id = "progressbar1",
widget = wibox.widget.progressbar
},
id = "background1",
halign = "center",
valign = "center",
widget = wibox.container.place
},
id = "background2",
forced_height = dpi(58), --120 Base size - (10+10) margin - (4+4) Border - 24 Icon - 10 spacing = 58
forced_width = dpi(24),
direction = "east",
widget = wibox.container.rotate
},
{
{ --Icon
image = gears.color.recolor_image(icondir .. "cpu/gpu.svg", color["Green200"]),
halign = "center",
valign = "center",
widget = wibox.widget.imagebox
},
height = dpi(24),
width = dpi(24),
widget = wibox.container.constraint
},
id = "gpu_layout",
spacing = dpi(10),
layout = wibox.layout.fixed.vertical
}
local bar = w:get_children_by_id("progressbar1")[1]
local rubato_timer = rubato.timed {
duration = 1,
pos = bar.value,
easing = rubato.linear,
subscribed = function(v)
bar.value = v
end
}
local tooltip = awful.tooltip {
objects = { w },
mode = "inside",
preferred_alignments = "middle",
margins = dpi(10)
}
awesome.connect_signal(
"update::gpu_usage_widget",
function(gpu_usage)
w:get_children_by_id("progressbar1")[1].value = gpu_usage
tooltip.text = "GPU Usage: " .. gpu_usage .. "%"
rubato_timer.target = gpu_usage
end
)
elseif widget == "gpu_temp" then
w = wibox.widget {
{
{
{ --Bar
color = color["Green200"],
background_color = color["Grey800"],
max_value = 100,
value = 50,
forced_height = dpi(8),
shape = function(cr, width, heigth)
gears.shape.rounded_bar(cr, dpi(58), dpi(8))
end,
id = "progressbar1",
widget = wibox.widget.progressbar
},
id = "background1",
halign = "center",
valign = "center",
widget = wibox.container.place
},
id = "background2",
forced_height = dpi(58), --120 Base size - (10+10) margin - (4+4) Border - 24 Icon - 10 spacing = 58
forced_width = dpi(24),
direction = "east",
widget = wibox.container.rotate
},
{
{ --Icon
id = "icon1",
image = gears.color.recolor_image(icondir .. "cpu/gpu.svg", color["Green200"]),
halign = "center",
valign = "center",
widget = wibox.widget.imagebox
},
id = "background3",
height = dpi(24),
width = dpi(24),
widget = wibox.container.constraint
},
id = "gpu_temp_layout",
spacing = dpi(10),
layout = wibox.layout.fixed.vertical
}
local bar = w:get_children_by_id("progressbar1")[1]
local rubato_timer = rubato.timed {
duration = 1,
pos = bar.value,
easing = rubato.linear,
subscribed = function(v)
bar.value = v
end
}
local tooltip = awful.tooltip {
objects = { w },
mode = "inside",
preferred_alignments = "middle",
margins = dpi(10)
}
awesome.connect_signal(
"update::gpu_temp_widget",
function(gpu_temp, gpu_temp_icon)
w:get_children_by_id("progressbar1")[1].value = gpu_temp
w:get_children_by_id("icon1")[1].image = gears.color.recolor_image(gpu_temp_icon, color["Green200"])
tooltip.text = "GPU Temp: " .. gpu_temp .. "°C"
rubato_timer.target = gpu_temp
end
)
elseif widget == "volume" then
w = wibox.widget {
{
{
{ --Bar
color = color["Yellow200"],
background_color = color["Grey800"],
max_value = 100,
value = 50,
forced_height = dpi(8),
shape = function(cr, width, heigth)
gears.shape.rounded_bar(cr, dpi(58), dpi(8))
end,
id = "progressbar1",
widget = wibox.widget.progressbar
},
id = "background1",
halign = "center",
valign = "center",
widget = wibox.container.place
},
id = "background2",
forced_height = dpi(58), --120 Base size - (10+10) margin - (4+4) Border - 24 Icon - 10 spacing = 58
forced_width = dpi(24),
direction = "east",
widget = wibox.container.rotate
},
{
{ --Icon
id = "icon1",
image = gears.color.recolor_image(icondir .. "audio/volume-high.svg", color["Yellow200"]),
halign = "center",
valign = "center",
widget = wibox.widget.imagebox
},
id = "background3",
height = dpi(24),
width = dpi(24),
widget = wibox.container.constraint
},
id = "volume_layout",
spacing = dpi(10),
layout = wibox.layout.fixed.vertical
}
local bar = w:get_children_by_id("progressbar1")[1]
local rubato_timer = rubato.timed {
duration = 1,
pos = bar.value,
easing = rubato.linear,
subscribed = function(v)
bar.value = v
end
}
local tooltip = awful.tooltip {
objects = { w },
mode = "inside",
preferred_alignments = "middle",
margins = dpi(10)
}
awesome.connect_signal(
"update::volume_widget",
function(volume, volume_icon)
w:get_children_by_id("progressbar1")[1].value = volume
w:get_children_by_id("icon1")[1].image = gears.color.recolor_image(volume_icon, color["Yellow200"])
tooltip.text = "Volume: " .. volume .. "%"
rubato_timer.target = volume
end
)
elseif widget == "microphone" then
w = wibox.widget {
{
{
{ --Bar
color = color["Purple200"],
background_color = color["Grey800"],
max_value = 100,
value = 50,
forced_height = dpi(8),
shape = function(cr, width, heigth)
gears.shape.rounded_bar(cr, dpi(58), dpi(8))
end,
id = "progressbar1",
widget = wibox.widget.progressbar
},
id = "background1",
halign = "center",
valign = "center",
widget = wibox.container.place
},
id = "background2",
forced_height = dpi(58), --120 Base size - (10+10) margin - (4+4) Border - 24 Icon - 10 spacing = 58
forced_width = dpi(24),
direction = "east",
widget = wibox.container.rotate
},
{
{ --Icon
id = "icon1",
image = gears.color.recolor_image(icondir .. "audio/microphone.svg", color["Purple200"]),
halign = "center",
valign = "center",
widget = wibox.widget.imagebox
},
id = "background3",
height = dpi(24),
width = dpi(24),
widget = wibox.container.constraint
},
id = "microphone_layout",
spacing = dpi(10),
layout = wibox.layout.fixed.vertical
}
local bar = w:get_children_by_id("progressbar1")[1]
local rubato_timer = rubato.timed {
duration = 1,
pos = bar.value,
easing = rubato.linear,
subscribed = function(v)
bar.value = v
end
}
local tooltip = awful.tooltip {
objects = { w },
mode = "inside",
preferred_alignments = "middle",
margins = dpi(10)
}
awesome.connect_signal(
"update::microphone_widget",
function(microphone, microphone_icon)
w:get_children_by_id("progressbar1")[1].value = microphone
w:get_children_by_id("icon1")[1].image = gears.color.recolor_image(microphone_icon, color["Purple200"])
tooltip.text = "Microphone: " .. microphone .. "%"
rubato_timer.target = microphone
end
)
elseif widget == "backlight" then
w = wibox.widget {
{
{
{ --Bar
color = color["Pink200"],
background_color = color["Grey800"],
max_value = 100,
value = 50,
forced_height = dpi(8),
shape = function(cr, width, heigth)
gears.shape.rounded_bar(cr, dpi(58), dpi(8))
end,
id = "progressbar1",
widget = wibox.widget.progressbar
},
id = "background1",
halign = "center",
valign = "center",
widget = wibox.container.place
},
id = "background2",
forced_height = dpi(58), --120 Base size - (10+10) margin - (4+4) Border - 24 Icon - 10 spacing = 58
forced_width = dpi(24),
direction = "east",
widget = wibox.container.rotate
},
{
{ --Icon
id = "icon1",
image = gears.color.recolor_image(icondir .. "brightness/brightness-high.svg", color["Pink200"]),
halign = "center",
valign = "center",
widget = wibox.widget.imagebox
},
id = "background3",
height = dpi(24),
width = dpi(24),
widget = wibox.container.constraint
},
id = "brightness_layout",
spacing = dpi(10),
layout = wibox.layout.fixed.vertical
}
local bar = w:get_children_by_id("progressbar1")[1]
local rubato_timer = rubato.timed {
duration = 1,
pos = bar.value,
easing = rubato.linear,
subscribed = function(v)
bar.value = v
end
}
local tooltip = awful.tooltip {
objects = { w },
mode = "inside",
preferred_alignments = "middle",
margins = dpi(10)
}
awesome.connect_signal(
"update::backlight_widget",
function(backlight, backlight_icon)
w:get_children_by_id("progressbar1")[1].value = backlight
w:get_children_by_id("icon1")[1].image = gears.color.recolor_image(backlight_icon, color["Pink200"])
tooltip.text = "Backlight: " .. backlight .. "%"
rubato_timer.target = backlight
end
)
elseif widget == "battery" then
w = wibox.widget {
{
{
{ --Bar
color = color["Purple200"],
background_color = color["Grey800"],
max_value = 100,
value = 50,
forced_height = dpi(8),
shape = function(cr, width, heigth)
gears.shape.rounded_bar(cr, dpi(58), dpi(8))
end,
id = "progressbar1",
widget = wibox.widget.progressbar
},
id = "background1",
halign = "center",
valign = "center",
widget = wibox.container.place
},
id = "background2",
forced_height = dpi(58), --120 Base size - (10+10) margin - (4+4) Border - 24 Icon - 10 spacing = 58
forced_width = dpi(24),
direction = "east",
widget = wibox.container.rotate
},
{
{ --Icon
id = "icon1",
image = gears.color.recolor_image(icondir .. "battery/battery.svg", color["Purple200"]),
halign = "center",
valign = "center",
widget = wibox.widget.imagebox
},
id = "background3",
height = dpi(24),
width = dpi(24),
widget = wibox.container.constraint
},
id = "battery_layout",
spacing = dpi(10),
layout = wibox.layout.fixed.vertical
}
local bar = w:get_children_by_id("progressbar1")[1]
local rubato_timer = rubato.timed {
duration = 1,
pos = bar.value,
easing = rubato.linear,
subscribed = function(v)
bar.value = v
end
}
local tooltip = awful.tooltip {
objects = { w },
mode = "inside",
preferred_alignments = "middle",
margins = dpi(10)
}
awesome.connect_signal(
"update::battery_widget",
function(battery, battery_icon)
w:get_children_by_id("progressbar1")[1].value = battery
w:get_children_by_id("icon1")[1].image = gears.color.recolor_image(battery_icon, color["Purple200"])
tooltip.text = "Battery: " .. battery .. "%"
rubato_timer.target = battery
end
)
end
table.insert(bar_layout, w)
end
return bar_layout
end
local signal_bars = wibox.widget {
{
{
{
{
create_bar_layout({ "cpu_usage", "cpu_temp", "ram_usage", "battery", "microphone", "backlight", "volume", "gpu_temp", "gpu_usage" }),
width = dpi(480),
strategy = "exact",
widget = wibox.container.constraint
},
halign = "center",
valign = "center",
widget = wibox.container.place
},
magins = dpi(10),
layout = wibox.container.margin
},
forced_height = dpi(120),
forced_width = dpi(500),
border_color = color["Grey800"],
border_width = dpi(4),
shape = function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, dpi(10))
end,
widget = wibox.container.background
},
top = dpi(10),
left = dpi(20),
right = dpi(20),
bottom = dpi(10),
widget = wibox.container.margin
}
return signal_bars
end

View File

@@ -0,0 +1,65 @@
----------------------------------
-- This is the time_date widget --
----------------------------------
-- Awesome Libs
local dpi = require("beautiful").xresources.apply_dpi
local wibox = require("wibox")
return function()
local time_date = wibox.widget {
{
{
{
{ -- Time
{
id = "label",
align = "center",
valign = "center",
format = "<span foreground='#18FFFF' font='JetBrainsMono Nerd Font, Bold 46'><b>%H:%M</b></span>",
widget = wibox.widget.textclock
},
widget = wibox.container.margin
},
{ -- Date and Day
{ -- Date
{
id = "label",
align = "left",
valign = "bottom",
format = "<span foreground='#69F0AE' font='JetBrainsMono Nerd Font, Regular 18'><b>%e</b></span><span foreground='#18FFFF' font='JetBrainsMono Nerd Font, Regular 18'><b> %b %Y</b></span>",
widget = wibox.widget.textclock
},
widget = wibox.container.margin
},
{ -- Day
{
id = "label",
align = "left",
valign = "top",
format = "<span foreground='#69F0AE' font='JetBrainsMono Nerd Font, Bold 20'><b>%A</b></span>",
widget = wibox.widget.textclock
},
widget = wibox.container.margin
},
layout = wibox.layout.flex.vertical
},
spacing = dpi(20),
layout = wibox.layout.fixed.horizontal
},
valign = "center",
halign = "center",
widget = wibox.container.place
},
id = "background",
widget = wibox.container.background
},
id = "margin",
margins = dpi(20),
widget = wibox.container.margin
}
return time_date
end

View File

@@ -0,0 +1,219 @@
--------------------------------
-- This is the weather widget --
--------------------------------
-- Awesome Libs
local awful = require("awful")
local color = require("src.theme.colors")
local dpi = require("beautiful").xresources.apply_dpi
local gears = require("gears")
local wibox = require("wibox")
local naughty = require("naughty")
local json_lua = require("src.lib.json-lua.json-lua")
-- Icon directory path
local icondir = awful.util.getdir("config") .. "src/assets/icons/weather/"
return function()
local api_secrets = {
key = user_vars.weather_secrets.key,
city_id = user_vars.weather_secrets.city_id,
unit = user_vars.weather_secrets.unit
}
local weather_widget = wibox.widget {
{
{
{
{
{
{ -- Icon
valign = "center",
align = "center",
resize = true,
forced_width = dpi(64),
forced_height = dpi(64),
widget = wibox.widget.imagebox,
id = "icon"
},
id = "place2",
valing = "center",
halign = "center",
widget = wibox.container.place
},
{ -- Temperature
text = "0°C",
valign = "center",
align = "center",
widget = wibox.widget.textbox,
font = "JetBrains Mono Bold 24",
id = "temp"
},
{ -- City, Country
text = "City, Country",
valign = "center",
align = "center",
widget = wibox.widget.textbox,
id = "city_country",
},
{
{ -- Description
text = "Description",
valign = "center",
align = "center",
widget = wibox.widget.textbox,
id = "description"
},
fg = color["LightBlue200"],
widget = wibox.container.background
},
{ -- line
forced_height = dpi(4),
forced_width = dpi(10),
bg = color["Grey800"],
widget = wibox.container.background,
id = "line"
},
{
{ -- Speed
{
image = gears.color.recolor_image(icondir .. "weather-windy.svg", color["OrangeA200"]),
resize = true,
forced_width = dpi(24),
forced_height = dpi(24),
widget = wibox.widget.imagebox
},
{
text = "",
valign = "center",
align = "center",
widget = wibox.widget.textbox,
id = "speed"
},
spacing = dpi(10),
id = "layout3",
layout = wibox.layout.fixed.horizontal
},
id = "place4",
halign = "center",
valign = "center",
widget = wibox.container.place
},
{
{ -- Humidity
{
forced_width = dpi(24),
forced_height = dpi(24),
widget = wibox.widget.imagebox,
image = gears.color.recolor_image(icondir .. "humidity.svg", color["OrangeA200"]),
id = "humidity_icon"
},
{
text = "",
valign = "center",
align = "center",
widget = wibox.widget.textbox,
id = "humidity"
},
spacing = dpi(10),
id = "layoutHum",
layout = wibox.layout.fixed.horizontal
},
halign = "center",
valign = "center",
widget = wibox.container.place
},
id = "lyt",
spacing = dpi(10),
layout = wibox.layout.fixed.vertical
},
margins = dpi(20),
widget = wibox.container.margin,
},
id = "center",
halign = "center",
valign = "center",
widget = wibox.container.place
},
id = "background",
border_color = color["Grey800"],
border_width = dpi(4),
shape = function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, dpi(12))
end,
widget = wibox.container.background
},
id = "margin",
top = dpi(20),
left = dpi(20),
right = dpi(10),
bottom = dpi(10),
forced_width = dpi(250),
widget = wibox.container.margin
}
local function fetch_weather_data()
awful.spawn.easy_async_with_shell(
"curl -sf 'http://api.openweathermap.org/data/2.5/weather?id=" .. api_secrets.city_id .. "&units=" .. api_secrets.unit .. "&appid=" .. api_secrets.key .. "'",
function(stdout)
if not stdout:match('error') then
local weather_metadata = json_lua:decode(stdout)
if weather_metadata then
local temp = weather_metadata.main.temp
local humidity = weather_metadata.main.humidity
local city = weather_metadata.name
local country = weather_metadata.sys.country
local weather_icon = weather_metadata.weather[1].icon
local description = weather_metadata.weather[1].description
local speed = weather_metadata.wind.speed
local icon_table = {
["01d"] = "weather-sunny",
["01n"] = "weather-clear-night",
["02d"] = "weather-partly-cloudy",
["02n"] = "weather-night-partly-cloudy",
["03d"] = "weather-cloudy",
["03n"] = "weather-clouds-night",
["04d"] = "weather-cloudy",
["04n"] = "weather-cloudy",
["09d"] = "weather-rainy",
["09n"] = "weather-rainy",
["10d"] = "weather-partly-rainy",
["10n"] = "weather-partly-rainy",
["11d"] = "weather-pouring",
["11n"] = "weather-pouring",
["13d"] = "weather-snowy",
["13n"] = "weather-snowy",
["50d"] = "weather-fog",
["50n"] = "weather-fog"
}
weather_widget:get_children_by_id("icon")[1].image = icondir .. icon_table[weather_icon] .. ".svg"
weather_widget:get_children_by_id("temp")[1].text = math.floor(temp + 0.5) .. "°C"
weather_widget:get_children_by_id("city_country")[1].text = city .. ", " .. country
weather_widget:get_children_by_id("description")[1].text = description:sub(1, 1):upper() .. description:sub(2)
weather_widget:get_children_by_id("line")[1].bg = color["Grey800"]
weather_widget:get_children_by_id("speed")[1].text = speed .. " m/s"
weather_widget:get_children_by_id("humidity")[1].text = humidity .. "%"
end
end
end
)
end
fetch_weather_data()
gears.timer {
timeout = 900,
autostart = true,
callback = function()
fetch_weather_data()
end
}
return weather_widget
end

View File

@@ -706,10 +706,18 @@ return function(s)
stdout = function(line) stdout = function(line)
get_input_devices() get_input_devices()
get_source_devices() get_source_devices()
awful.spawn.with_shell("pkill pactl && pkill grep")
end end
} }
) )
awesome.connect_signal(
"exit",
function()
awful.spawn.with_shell("pkill pactl && pkill grep")
end
)
-- Get microphone volume -- Get microphone volume
local function get_mic_volume() local function get_mic_volume()
awful.spawn.easy_async_with_shell( awful.spawn.easy_async_with_shell(
@@ -834,8 +842,10 @@ return function(s)
function(volume) function(volume)
if volume > 0 then if volume > 0 then
volume_controller:get_children_by_id("mic_volume_margin")[1].mic_volume.icon:set_image(gears.color.recolor_image(icondir .. "microphone.svg", color["LightBlue200"])) volume_controller:get_children_by_id("mic_volume_margin")[1].mic_volume.icon:set_image(gears.color.recolor_image(icondir .. "microphone.svg", color["LightBlue200"]))
awesome.emit_signal("update::microphone_widget", tonumber(volume), icondir .. "microphone.svg")
else else
volume_controller:get_children_by_id("mic_volume_margin")[1].mic_volume.icon:set_image(gears.color.recolor_image(icondir .. "microphone-off.svg", color["LightBlue200"])) volume_controller:get_children_by_id("mic_volume_margin")[1].mic_volume.icon:set_image(gears.color.recolor_image(icondir .. "microphone-off.svg", color["LightBlue200"]))
awesome.emit_signal("update::microphone_widget", tonumber(volume), icondir .. "microphone-off.svg")
end end
end end
) )

0
awesome/src/scripts/wifi.sh Executable file
View File

View File

@@ -8,6 +8,17 @@ local home = os.getenv("HOME")
-- If you want different default programs, wallpaper path or modkey; edit this file. -- If you want different default programs, wallpaper path or modkey; edit this file.
user_vars = { user_vars = {
-- Uses the openweather api https://home.openweathermap.org/api_keys
-- City ID is also from there
weather_secrets = {
key = "e71b00168ca7219563dde4514a425b14",
city_id = "2864118",
unit = "metric" -- "metric" or "imperial"
},
-- Do not Disturb will turn off all notifications but keep the notification-list in the notification-center
dnd = false,
-- Autotiling layouts -- Autotiling layouts
layouts = { layouts = {
awful.layout.suit.tile, awful.layout.suit.tile,
@@ -38,7 +49,8 @@ user_vars = {
"flatpak run com.spotify.Client", "flatpak run com.spotify.Client",
"discord", "discord",
"/usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1", "/usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1",
"setxkbmap -option caps:swapescape" "setxkbmap -option caps:swapescape",
"whatsdesk"
}, },
-- Type 'ip a' and check your wlan and ethernet name -- Type 'ip a' and check your wlan and ethernet name

View File

@@ -79,6 +79,7 @@ return function(s)
audio_widget.container.audio_layout.icon_margin.icon_layout.icon:set_image( audio_widget.container.audio_layout.icon_margin.icon_layout.icon:set_image(
gears.color.recolor_image(icon .. ".svg", color["Grey900"])) gears.color.recolor_image(icon .. ".svg", color["Grey900"]))
awesome.emit_signal("get::volume", volume) awesome.emit_signal("get::volume", volume)
awesome.emit_signal("update::volume_widget", volume, icon .. ".svg")
end end
) )
end end

View File

@@ -163,7 +163,7 @@ return function()
battery_widget.container.battery_layout.icon_margin.icon_layout.icon:set_image(gears.surface.load_uncached( battery_widget.container.battery_layout.icon_margin.icon_layout.icon:set_image(gears.surface.load_uncached(
gears.color.recolor_image(icondir .. icon .. '.svg', "#212121"))) gears.color.recolor_image(icondir .. icon .. '.svg', "#212121")))
awesome.emit_signal("update::battery_widget", battery_percentage, icondir .. icon .. ".svg")
end end
) )
end end

View File

@@ -155,6 +155,7 @@ return function(widget, clock_mode)
local diff_usage = (1000 * (diff_total - diff_idle) / diff_total + 5) / 10 local diff_usage = (1000 * (diff_total - diff_idle) / diff_total + 5) / 10
cpu_usage_widget.container.cpu_layout.label.text = tostring(math.floor(diff_usage)) .. "%" cpu_usage_widget.container.cpu_layout.label.text = tostring(math.floor(diff_usage)) .. "%"
awesome.emit_signal("update::cpu_usage_widget", math.floor(diff_usage + 0.5))
total_prev = total total_prev = total
idle_prev = idle idle_prev = idle
@@ -185,6 +186,7 @@ return function(widget, clock_mode)
cpu_temp.container.cpu_layout.icon_margin.icon_layout.icon:set_image(temp_icon) cpu_temp.container.cpu_layout.icon_margin.icon_layout.icon:set_image(temp_icon)
cpu_temp:set_bg(temp_color) cpu_temp:set_bg(temp_color)
cpu_temp.container.cpu_layout.label.text = math.floor(temp_num) .. "°C" cpu_temp.container.cpu_layout.label.text = math.floor(temp_num) .. "°C"
awesome.emit_signal("update::cpu_temp_widget", temp_num, temp_icon)
end end
) )
@@ -205,9 +207,9 @@ return function(widget, clock_mode)
average = average + cpu_freq[i] average = average + cpu_freq[i]
end end
average = math.floor(average / #cpu_freq) average = math.floor(average / #cpu_freq)
cpu_clock.container.cpu_layout.label.text = tonumber(average) .. "Mhz" cpu_clock.container.cpu_layout.label.text = average .. "Mhz"
elseif clock_mode then elseif clock_mode then
cpu_clock.container.cpu_layout.label.text = tonumber(cpu_freq[clock_mode]) .. "Mhz" cpu_clock.container.cpu_layout.label.text = cpu_freq[clock_mode] .. "Mhz"
end end
end end
) )

View File

@@ -103,6 +103,7 @@ return function(widget)
3, 3,
function(_, stdout) function(_, stdout)
gpu_usage_widget.container.gpu_layout.label.text = stdout:gsub("\n", "") .. "%" gpu_usage_widget.container.gpu_layout.label.text = stdout:gsub("\n", "") .. "%"
awesome.emit_signal("update::gpu_usage_widget", tonumber(stdout))
end end
) )
@@ -131,6 +132,7 @@ return function(widget)
gpu_temp_widget.container.gpu_layout.icon_margin.icon_layout.icon:set_image(temp_icon) gpu_temp_widget.container.gpu_layout.icon_margin.icon_layout.icon:set_image(temp_icon)
gpu_temp_widget:set_bg(temp_color) gpu_temp_widget:set_bg(temp_color)
gpu_temp_widget.container.gpu_layout.label.text = tostring(temp_num) .. "°C" gpu_temp_widget.container.gpu_layout.label.text = tostring(temp_num) .. "°C"
awesome.emit_signal("update::gpu_temp_widget", temp_num, temp_icon)
end end
) )

View File

@@ -64,7 +64,10 @@ return function()
local MemTotal, MemFree, MemAvailable = stdout:match("(%d+)\n(%d+)\n(%d+)\n") local MemTotal, MemFree, MemAvailable = stdout:match("(%d+)\n(%d+)\n(%d+)\n")
ram_widget.container.ram_layout.label.text = tostring(string.format("%.1f", ((MemTotal - MemAvailable) / 1024 / 1024)) .. "/" .. string.format("%.1f", (MemTotal / 1024 / 1024)) .. "GB"):gsub(",", ".") local ram_string = tostring(string.format("%.1f", ((MemTotal - MemAvailable) / 1024 / 1024)) .. "/" .. string.format("%.1f", (MemTotal / 1024 / 1024)) .. "GB"):gsub(",", ".")
ram_widget.container.ram_layout.label.text = ram_string
awesome.emit_signal("update::ram_widget", math.floor(((MemTotal - MemAvailable) / MemTotal * 100) + 0.5))
end end
) )

View File

@@ -20,7 +20,7 @@ return function(s)
id = 'st' id = 'st'
}, },
strategy = "exact", strategy = "exact",
layout = wibox.container.constraint, widget = wibox.container.constraint,
id = "container" id = "container"
}, },
widget = wibox.container.background, widget = wibox.container.background,