Initial commit

This commit is contained in:
jorraan committed 2021-11-29 19:57:00 +11:00
1 parent ed88af090f
commit 05c9c7fc71
448 files changed
+46802

No files matched your search

@@ -0,0 +1 @@
false
@@ -0,0 +1,35 @@
local wibox = require('wibox')
function build(widget)
local container =
wibox.widget {
widget,
widget = wibox.container.background,
}
local old_cursor, old_wibox
container:connect_signal(
'mouse::enter',
function()
-- Hm, no idea how to get the wibox from this signal's arguments...
local w = mouse.current_wibox
if w then
old_cursor, old_wibox = w.cursor, w
w.cursor = 'hand1'
end
end
)
container:connect_signal(
'mouse::leave',
function()
if old_wibox then
old_wibox.cursor = old_cursor
old_wibox = nil
end
end
)
return container
end
return build
@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
viewBox="0 0 240 240"
version="1.1"
id="svg4"
sodipodi:docname="ic_airplanemode_inactive_48px.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.43457604"
inkscape:cx="-392.6819"
inkscape:cy="-33.781494"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="M 135,90 V 35 c 0,-8.3 -6.7,-15 -15,-15 -8.3,0 -15,6.7 -15,15 V 71.8 L 183.25,150.05 215,160 V 140 Z M 35,52.75 84.85,102.6 25,140 v 20 l 80,-25 v 55 l -20,15 v 15 l 35,-10 35,10 V 205 L 135,190 V 152.75 L 192.25,210 205,197.25 47.75,40 Z"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1;stroke-width:5" />
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
viewBox="0 0 240 240"
version="1.1"
id="svg6"
sodipodi:docname="ic_airplanemode_active_48px.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview8"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.43457604"
inkscape:cx="-51.304834"
inkscape:cy="18.788525"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg6" />
<path
d="M 120,120"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1;stroke-width:5" />
<path
d="M 215,160 V 140 L 135,90 V 35 c 0,-8.3 -6.7,-15 -15,-15 -8.3,0 -15,6.7 -15,15 v 55 l -80,50 v 20 l 80,-25 v 55 l -20,15 v 15 l 35,-10 35,10 v -15 l -20,-15 v -55 z"
id="path4"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1;stroke-width:5" />
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

+169
View File
@@ -0,0 +1,169 @@
local awful = require('awful')
local wibox = require('wibox')
local gears = require('gears')
local watch = awful.widget.watch
local dpi = require('beautiful').xresources.apply_dpi
local clickable_container = require('widget.airplane-mode.clickable-container')
local config_dir = gears.filesystem.get_configuration_dir()
local widget_dir = config_dir .. 'widget/airplane-mode/'
local widget_icon_dir = widget_dir .. 'icons/'
local icons = require('theme.icons')
local ap_state = false
local action_name = wibox.widget {
text = 'Airplane Mode',
font = 'Inter Regular 11',
align = 'left',
widget = wibox.widget.textbox
}
local button_widget = wibox.widget {
{
id = 'icon',
image = icons.toggled_off,
widget = wibox.widget.imagebox,
resize = true
},
layout = wibox.layout.align.horizontal
}
local widget_button = wibox.widget {
{
button_widget,
top = dpi(7),
bottom = dpi(7),
widget = wibox.container.margin
},
widget = clickable_container
}
local update_imagebox = function()
if ap_state then
button_widget.icon:set_image(icons.toggled_on)
else
button_widget.icon:set_image(icons.toggled_off)
end
end
local check_airplane_mode_state = function()
local cmd = 'cat ' .. widget_dir .. 'airplane_mode'
awful.spawn.easy_async_with_shell(
cmd,
function(stdout)
local status = stdout
if status:match("true") then
ap_state = true
elseif status:match("false") then
ap_state = false
else
ap_state = false
awful.spawn.easy_async_with_shell(
'echo "false" > ' .. widget_dir .. 'airplane_mode',
function(stdout)
end
)
end
update_imagebox()
end
)
end
check_airplane_mode_state()
local ap_off_cmd = [[
rfkill unblock wlan
# Create an AwesomeWM Notification
awesome-client "
naughty = require('naughty')
naughty.notification({
app_name = 'Network Manager',
title = '<b>Airplane mode disabled!</b>',
message = 'Initializing network devices',
icon = ']] .. widget_icon_dir .. 'airplane-mode-off' .. '.svg' .. [['
})
"
]] .. "echo false > " .. widget_dir .. "airplane_mode" .. [[
]]
local ap_on_cmd = [[
rfkill block wlan
# Create an AwesomeWM Notification
awesome-client "
naughty = require('naughty')
naughty.notification({
app_name = 'Network Manager',
title = '<b>Airplane mode enabled!</b>',
message = 'Disabling radio devices',
icon = ']] .. widget_icon_dir .. 'airplane-mode' .. '.svg' .. [['
})
"
]] .. "echo true > " .. widget_dir .. "airplane_mode" .. [[
]]
local toggle_action = function()
if ap_state then
awful.spawn.easy_async_with_shell(
ap_off_cmd,
function(stdout)
ap_state = false
update_imagebox()
end
)
else
awful.spawn.easy_async_with_shell(
ap_on_cmd,
function(stdout)
ap_state = true
update_imagebox()
end
)
end
end
widget_button:buttons(
gears.table.join(
awful.button(
{},
1,
nil,
function()
toggle_action()
end
)
)
)
gears.timer {
timeout = 5,
autostart = true,
callback = function()
check_airplane_mode_state()
end
}
local action_widget = wibox.widget {
{
action_name,
nil,
{
widget_button,
layout = wibox.layout.fixed.horizontal,
},
layout = wibox.layout.align.horizontal,
},
left = dpi(24),
right = dpi(24),
forced_height = dpi(48),
widget = wibox.container.margin
}
return action_widget
@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg4"
sodipodi:docname="battery-alert.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="4.9166667"
inkscape:cx="-14.542373"
inkscape:cy="24"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="M31.33 8H28V4h-8v4h-3.33C15.19 8 14 9.19 14 10.67v30.67c0 1.47 1.19 2.67 2.67 2.67h14.67c1.47 0 2.67-1.19 2.67-2.67V10.67C34 9.19 32.81 8 31.33 8zM26 36h-4v-4h4v4zm0-8h-4V18h4v10z"
id="path2"
style="fill:#ff0000;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg4"
sodipodi:docname="ic_battery_alert_48px.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="4.9166667"
inkscape:cx="24"
inkscape:cy="24"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="M31.33 8H28V4h-8v4h-3.33C15.19 8 14 9.19 14 10.67v30.67c0 1.47 1.19 2.67 2.67 2.67h14.67c1.47 0 2.67-1.19 2.67-2.67V10.67C34 9.19 32.81 8 31.33 8zM26 36h-4v-4h4v4zm0-8h-4V18h4v10z"
id="path2"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

@@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
viewBox="0 0 240 240"
version="1.1"
id="svg6"
sodipodi:docname="battery-charging-10.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview8"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="1.2291667"
inkscape:cx="104.49589"
inkscape:cy="142.20093"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg6" />
<g
id="g827"
transform="matrix(5,0,0,5,-0.025,-960)">
<g
transform="translate(0,192)"
id="g833">
<path
inkscape:connector-curvature="0"
d="m 22,40 v -6 h -8 v 7.33 C 14,42.8 15.19,44 16.67,44 h 14.67 c 1.47,0 2.67,-1.19 2.67,-2.67 V 34 h -8.8 z"
id="path2"
style="fill:#ffffff;fill-opacity:0.4" />
<path
inkscape:connector-curvature="0"
d="M 31.33,8 H 28 V 4 H 20 V 8 H 16.67 C 15.19,8 14,9.19 14,10.67 V 34 h 8 v -5 h -4 l 8,-15 v 11 h 4 l -4.8,9 H 34 V 10.67 C 34,9.19 32.81,8 31.33,8 Z"
id="path4"
style="fill:#ffffff;fill-opacity:0.4" />
</g>
<path
style="fill:#ffffff;fill-opacity:1"
id="path2-3"
d="m 22,232 v -6 h -8 v 7.33 c 0,1.47 1.19,2.67 2.67,2.67 h 14.67 c 1.47,0 2.67,-1.19 2.67,-2.67 V 226 h -8.8 z"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg6"
sodipodi:docname="ic_battery_charging_20_48px.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview8"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="4.9166667"
inkscape:cx="-14.542373"
inkscape:cy="24"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg6" />
<path
d="M22 40v-6h-8v7.33C14 42.8 15.19 44 16.67 44h14.67c1.47 0 2.67-1.19 2.67-2.67V34h-8.8L22 40z"
id="path2"
style="fill:#ffffff;fill-opacity:1" />
<path
fill-opacity=".3"
d="M31.33 8H28V4h-8v4h-3.33C15.19 8 14 9.19 14 10.67V34h8v-5h-4l8-15v11h4l-4.8 9H34V10.67C34 9.19 32.81 8 31.33 8z"
id="path4"
style="fill:#ffffff;fill-opacity:0.40000001" />
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg6"
sodipodi:docname="ic_battery_charging_30_48px.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview8"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="4.9166667"
inkscape:cx="-14.542373"
inkscape:cy="24"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg6" />
<path
fill-opacity=".3"
d="M31.33 8H28V4h-8v4h-3.33C15.19 8 14 9.19 14 10.67V29h4l8-15v11h4l-2.13 4H34V10.67C34 9.19 32.81 8 31.33 8z"
id="path2"
style="fill:#ffffff;fill-opacity:0.40000001" />
<path
d="M22 40V29h-8v12.33C14 42.8 15.19 44 16.67 44h14.67c1.47 0 2.67-1.19 2.67-2.67V29h-6.13L22 40z"
id="path4"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg6"
sodipodi:docname="ic_battery_charging_50_48px.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview8"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="4.9166667"
inkscape:cx="-14.542373"
inkscape:cy="24"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg6" />
<path
d="M28.93 27L22 40V29h-4l1.07-2H14v14.33C14 42.8 15.19 44 16.67 44h14.67c1.47 0 2.67-1.19 2.67-2.67V27h-5.08z"
id="path2"
style="fill:#ffffff;fill-opacity:1" />
<path
fill-opacity=".3"
d="M31.33 8H28V4h-8v4h-3.33C15.19 8 14 9.19 14 10.67V27h5.07L26 14v11h4l-1.07 2H34V10.67C34 9.19 32.81 8 31.33 8z"
id="path4"
style="fill:#ffffff;fill-opacity:0.40000001" />
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg6"
sodipodi:docname="ic_battery_charging_60_48px.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview8"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="4.9166667"
inkscape:cx="-14.542373"
inkscape:cy="24"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg6" />
<path
fill-opacity=".3"
d="M31.33 8H28V4h-8v4h-3.33C15.19 8 14 9.19 14 10.67V22h7.73L26 14v8h8V10.67C34 9.19 32.81 8 31.33 8z"
id="path2"
style="fill:#ffffff;fill-opacity:0.40000001" />
<path
d="M26 25h4l-8 15V29h-4l3.73-7H14v19.33C14 42.8 15.19 44 16.67 44h14.67c1.47 0 2.67-1.19 2.67-2.67V22h-8v3z"
id="path4"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg6"
sodipodi:docname="ic_battery_charging_80_48px.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview8"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="4.9166667"
inkscape:cx="-14.542373"
inkscape:cy="24"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg6" />
<path
fill-opacity=".3"
d="M31.33 8H28V4h-8v4h-3.33C15.19 8 14 9.19 14 10.67V18h9.87L26 14v4h8v-7.33C34 9.19 32.81 8 31.33 8z"
id="path2"
style="fill:#ffffff;fill-opacity:0.40000001" />
<path
d="M26 25h4l-8 15V29h-4l5.87-11H14v23.33C14 42.8 15.19 44 16.67 44h14.67c1.47 0 2.67-1.19 2.67-2.67V18h-8v7z"
id="path4"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg6"
sodipodi:docname="ic_battery_charging_90_48px.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview8"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="4.9166667"
inkscape:cx="-14.542373"
inkscape:cy="24"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg6" />
<path
d="M31.33 8H28V4h-8v4h-3.33C15.19 8 14 9.19 14 10.67V16h10.93L26 14v2h8v-5.33C34 9.19 32.81 8 31.33 8z"
id="path2"
fill-opacity=".3"
style="fill:#ffffff;fill-opacity:0.40000001" />
<path
d="M26 25h4l-8 15V29h-4l6.93-13H14v25.33C14 42.8 15.19 44 16.67 44h14.67c1.47 0 2.67-1.19 2.67-2.67V16h-8v9z"
id="path4"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg4"
sodipodi:docname="ic_battery_full_48px.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="4.9166667"
inkscape:cx="-14.542373"
inkscape:cy="24"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="M31.33 8H28V4h-8v4h-3.33C15.19 8 14 9.19 14 10.67v30.67c0 1.47 1.19 2.67 2.67 2.67h14.67c1.47 0 2.67-1.19 2.67-2.67V10.67C34 9.19 32.81 8 31.33 8z"
id="path2"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg6"
sodipodi:docname="ic_battery_20_48px.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview8"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="4.9166667"
inkscape:cx="24"
inkscape:cy="24"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg6" />
<path
d="M14 34v7.33C14 42.8 15.19 44 16.67 44h14.67c1.47 0 2.67-1.19 2.67-2.67V34H14z"
id="path2"
style="fill:#ffffff;fill-opacity:1" />
<path
fill-opacity=".3"
d="M34 10.67C34 9.19 32.81 8 31.33 8H28V4h-8v4h-3.33C15.19 8 14 9.19 14 10.67V34h20V10.67z"
id="path4"
style="fill:#ffffff;fill-opacity:0.40000001" />
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

@@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg6"
sodipodi:docname="ic_battery_30_48px.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10">
<linearGradient
id="linearGradient824"
osb:paint="solid">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop822" />
</linearGradient>
</defs>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview8"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="4.9166667"
inkscape:cx="24"
inkscape:cy="24"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg6" />
<path
fill-opacity=".3"
d="M34 10.67C34 9.19 32.81 8 31.33 8H28V4h-8v4h-3.33C15.19 8 14 9.19 14 10.67V30h20V10.67z"
id="path2"
style="fill-opacity:0.40000001;fill:#ffffff" />
<path
d="M14 30v11.33C14 42.8 15.19 44 16.67 44h14.67c1.47 0 2.67-1.19 2.67-2.67V30H14z"
id="path4"
style="fill-opacity:1;fill:#ffffff" />
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg6"
sodipodi:docname="ic_battery_50_48px.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview8"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="4.9166667"
inkscape:cx="-14.542373"
inkscape:cy="24"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg6" />
<path
fill-opacity=".3"
d="M34 10.67C34 9.19 32.81 8 31.33 8H28V4h-8v4h-3.33C15.19 8 14 9.19 14 10.67V26h20V10.67z"
id="path2"
style="fill:#ffffff;fill-opacity:0.40000001" />
<path
d="M14 26v15.33C14 42.8 15.19 44 16.67 44h14.67c1.47 0 2.67-1.19 2.67-2.67V26H14z"
id="path4"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg6"
sodipodi:docname="ic_battery_60_48px.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview8"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="4.9166667"
inkscape:cx="-14.542373"
inkscape:cy="24"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg6" />
<path
fill-opacity=".3"
d="M34 10.67C34 9.19 32.81 8 31.33 8H28V4h-8v4h-3.33C15.19 8 14 9.19 14 10.67V22h20V10.67z"
id="path2"
style="fill:#ffffff;fill-opacity:0.40000001" />
<path
d="M14 22v19.33C14 42.8 15.19 44 16.67 44h14.67c1.47 0 2.67-1.19 2.67-2.67V22H14z"
id="path4"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg6"
sodipodi:docname="ic_battery_80_48px.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview8"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="4.9166667"
inkscape:cx="-14.542373"
inkscape:cy="24"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg6" />
<path
fill-opacity=".3"
d="M34 10.67C34 9.19 32.81 8 31.33 8H28V4h-8v4h-3.33C15.19 8 14 9.19 14 10.67V18h20v-7.33z"
id="path2"
style="fill:#ffffff;fill-opacity:0.40000001" />
<path
d="M14 18v23.33C14 42.8 15.19 44 16.67 44h14.67c1.47 0 2.67-1.19 2.67-2.67V18H14z"
id="path4"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg6"
sodipodi:docname="ic_battery_90_48px.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview8"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="4.9166667"
inkscape:cx="24"
inkscape:cy="24"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg6" />
<path
fill-opacity=".3"
d="M34 10.67C34 9.19 32.81 8 31.33 8H28V4h-8v4h-3.33C15.19 8 14 9.19 14 10.67V16h20v-5.33z"
id="path2"
style="fill:#ffffff;fill-opacity:0.40000001" />
<path
d="M14 16v25.33C14 42.8 15.19 44 16.67 44h14.67c1.47 0 2.67-1.19 2.67-2.67V16H14z"
id="path4"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg4"
sodipodi:docname="ic_battery_charging_full_48px.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="4.9166667"
inkscape:cx="24"
inkscape:cy="24"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="M31.33 8H28V4h-8v4h-3.33C15.19 8 14 9.19 14 10.67v30.67c0 1.47 1.19 2.67 2.67 2.67h14.67c1.47 0 2.67-1.19 2.67-2.67V10.67C34 9.19 32.81 8 31.33 8zM22 40V29h-4l8-15v11h4l-8 15z"
id="path2"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg4"
sodipodi:docname="ic_battery_unknown_48px.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="4.9166667"
inkscape:cx="-14.542373"
inkscape:cy="24"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="M31.33 8H28V4h-8v4h-3.33C15.19 8 14 9.19 14 10.67v30.67c0 1.47 1.19 2.67 2.67 2.67h14.67c1.47 0 2.67-1.19 2.67-2.67V10.67C34 9.19 32.81 8 31.33 8zM25.9 35.9h-3.8v-3.8h3.8v3.8zm2.7-10.52s-.76.84-1.34 1.42c-.97.97-1.66 2.29-1.66 3.2h-3.2c0-1.66.92-3.05 1.86-3.99l1.86-1.89c.54-.54.88-1.29.88-2.12 0-1.66-1.34-3-3-3s-3 1.34-3 3h-3c0-3.31 2.69-6 6-6s6 2.69 6 6c0 1.32-.53 2.52-1.4 3.38z"
id="path2"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg4"
sodipodi:docname="ic_battery_std_48px.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="4.9166667"
inkscape:cx="-14.542373"
inkscape:cy="24"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="M31.33 8H28V4h-8v4h-3.33C15.19 8 14 9.19 14 10.67v30.67c0 1.47 1.19 2.67 2.67 2.67h14.67c1.47 0 2.67-1.19 2.67-2.67V10.67C34 9.19 32.81 8 31.33 8z"
id="path2"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

+209
View File
@@ -0,0 +1,209 @@
local awful = require('awful')
local wibox = require('wibox')
local awful = require('awful')
local gears = require('gears')
local naughty = require('naughty')
local watch = awful.widget.watch
local apps = require('configuration.apps')
local clickable_container = require('widget.clickable-container')
local dpi = require('beautiful').xresources.apply_dpi
local config_dir = gears.filesystem.get_configuration_dir()
local widget_icon_dir = config_dir .. 'widget/battery/icons/'
local return_button = function()
local battery_imagebox = wibox.widget {
nil,
{
id = 'icon',
image = widget_icon_dir .. 'battery' .. '.svg',
widget = wibox.widget.imagebox,
resize = true
},
nil,
expand = 'none',
layout = wibox.layout.align.vertical
}
local battery_percentage_text = wibox.widget {
id = 'percent_text',
text = '100%',
font = 'Inter Bold 11',
align = 'center',
valign = 'center',
visible = false,
widget = wibox.widget.textbox
}
local battery_widget = wibox.widget {
layout = wibox.layout.fixed.horizontal,
spacing = dpi(0),
battery_imagebox,
battery_percentage_text
}
local battery_button = wibox.widget {
{
battery_widget,
margins = dpi(7),
widget = wibox.container.margin
},
widget = clickable_container
}
battery_button:buttons(
gears.table.join(
awful.button(
{},
1,
nil,
function()
awful.spawn(apps.default.power_manager , false)
end
)
)
)
local battery_tooltip = awful.tooltip {
objects = {battery_button},
text = 'None',
mode = 'outside',
align = 'right',
margin_leftright = dpi(8),
margin_topbottom = dpi(8),
preferred_positions = {'right', 'left', 'top', 'bottom'}
}
local get_battery_info = function()
awful.spawn.easy_async_with_shell(
'upower -i $(upower -e | grep BAT)',
function(stdout)
if stdout == nil or stdout == '' then
battery_tooltip:set_text('No battery detected!')
return
end
-- Remove new line from the last line
battery_tooltip:set_text(stdout:sub(1, -2))
end
)
end
get_battery_info()
battery_widget:connect_signal(
'mouse::enter',
function()
get_battery_info()
end
)
local last_battery_check = os.time()
local notify_critcal_battery = true
local show_battery_warning = function()
naughty.notification ({
icon = widget_icon_dir .. 'battery-alert.svg',
app_name = 'System notification',
title = 'Battery is dying!',
message = 'Hey, I think we have a problem here. Save your work before reaching the oblivion.',
urgency = 'critical'
})
end
local update_battery = function(status)
awful.spawn.easy_async_with_shell(
[[sh -c "
upower -i $(upower -e | grep BAT) | grep percentage | awk '{print \$2}' | tr -d '\n%'
"]],
function(stdout)
local battery_percentage = tonumber(stdout)
-- Stop if null
if not battery_percentage then
return
end
battery_widget.spacing = dpi(5)
battery_percentage_text.visible = true
battery_percentage_text:set_text(battery_percentage .. '%')
local icon_name = 'battery'
-- Fully charged
if (status == 'fully-charged' or status == 'charging') and battery_percentage == 100 then
icon_name = icon_name .. '-' .. 'fully-charged'
battery_imagebox.icon:set_image(gears.surface.load_uncached(widget_icon_dir .. icon_name .. '.svg'))
return
end
-- Critical level warning message
if (battery_percentage > 0 and battery_percentage < 10) and status == 'discharging' then
icon_name = icon_name .. '-' .. 'alert-red'
if os.difftime(os.time(), last_battery_check) > 300 or notify_critcal_battery then
last_battery_check = os.time()
notify_critcal_battery = false
show_battery_warning()
end
battery_imagebox.icon:set_image(gears.surface.load_uncached(widget_icon_dir .. icon_name .. '.svg'))
return
end
-- Discharging
if battery_percentage > 0 and battery_percentage < 20 then
icon_name = icon_name .. '-' .. status .. '-' .. '10'
elseif battery_percentage >= 20 and battery_percentage < 30 then
icon_name = icon_name .. '-' .. status .. '-' .. '20'
elseif battery_percentage >= 30 and battery_percentage < 50 then
icon_name = icon_name .. '-' .. status .. '-' .. '30'
elseif battery_percentage >= 50 and battery_percentage < 60 then
icon_name = icon_name .. '-' .. status .. '-' .. '50'
elseif battery_percentage >= 60 and battery_percentage < 80 then
icon_name = icon_name .. '-' .. status .. '-' .. '60'
elseif battery_percentage >= 80 and battery_percentage < 90 then
icon_name = icon_name .. '-' .. status .. '-' .. '80'
elseif battery_percentage >= 90 and battery_percentage < 100 then
icon_name = icon_name .. '-' .. status .. '-' .. '90'
end
battery_imagebox.icon:set_image(gears.surface.load_uncached(widget_icon_dir .. icon_name .. '.svg'))
end
)
end
-- Watch status if charging, discharging, fully-charged
watch(
[[sh -c "
upower -i $(upower -e | grep BAT) | grep state | awk '{print \$2}' | tr -d '\n'
"]],
5,
function(widget, stdout)
local status = stdout:gsub('%\n', '')
-- If no output or no battery detected
if status == nil or status == '' then
battery_widget.spacing = dpi(0)
battery_percentage_text.visible = false
battery_tooltip:set_text('No battery detected!')
battery_imagebox.icon:set_image(gears.surface.load_uncached(widget_icon_dir .. 'battery-unknown' .. '.svg'))
return
end
update_battery(status)
end
)
return battery_button
end
return return_button
+35
View File
@@ -0,0 +1,35 @@
local wibox = require('wibox')
function build(widget)
local container =
wibox.widget {
widget,
widget = wibox.container.background,
}
local old_cursor, old_wibox
container:connect_signal(
'mouse::enter',
function()
-- Hm, no idea how to get the wibox from this signal's arguments...
local w = mouse.current_wibox
if w then
old_cursor, old_wibox = w.cursor, w
w.cursor = 'hand1'
end
end
)
container:connect_signal(
'mouse::leave',
function()
if old_wibox then
old_wibox.cursor = old_cursor
old_wibox = nil
end
end
)
return container
end
return build
+124
View File
@@ -0,0 +1,124 @@
local awful = require('awful')
local wibox = require('wibox')
local gears = require('gears')
local dpi = require('beautiful').xresources.apply_dpi
local clickable_container = require('widget.blue-light.clickable-container')
local icons = require('theme.icons')
local blue_light_state = nil
local action_name = wibox.widget {
text = 'Blue Light',
font = 'Inter Regular 11',
align = 'left',
widget = wibox.widget.textbox
}
local button_widget = wibox.widget {
{
id = 'icon',
image = icons.toggled_off,
widget = wibox.widget.imagebox,
resize = true
},
layout = wibox.layout.align.horizontal
}
local widget_button = wibox.widget {
{
button_widget,
top = dpi(7),
bottom = dpi(7),
widget = wibox.container.margin
},
widget = clickable_container
}
local update_imagebox = function()
local button_icon = button_widget.icon
if blue_light_state then
button_icon:set_image(icons.toggled_on)
else
button_icon:set_image(icons.toggled_off)
end
end
local kill_state = function()
awful.spawn.easy_async_with_shell(
[[
redshift -x
kill -9 $(pgrep redshift)
]],
function(stdout)
stdout = tonumber(stdout)
if stdout then
blue_light_state = false
update_imagebox()
end
end
)
end
kill_state()
local toggle_action = function()
awful.spawn.easy_async_with_shell(
[[
if [ ! -z $(pgrep redshift) ];
then
redshift -x && pkill redshift && killall redshift
echo 'OFF'
else
redshift -l 0:0 -t 4500:4500 -r &>/dev/null &
echo 'ON'
fi
]],
function(stdout)
if stdout:match('ON') then
blue_light_state = true
else
blue_light_state = false
end
update_imagebox()
end
)
end
widget_button:buttons(
gears.table.join(
awful.button(
{},
1,
nil,
function()
toggle_action()
end
)
)
)
local action_widget = wibox.widget {
{
action_name,
nil,
{
widget_button,
layout = wibox.layout.fixed.horizontal,
},
layout = wibox.layout.align.horizontal,
},
left = dpi(24),
right = dpi(24),
forced_height = dpi(48),
widget = wibox.container.margin
}
awesome.connect_signal(
'widget::blue_light:toggle',
function()
toggle_action()
end
)
return action_widget
@@ -0,0 +1,35 @@
local wibox = require('wibox')
function build(widget)
local container =
wibox.widget {
widget,
widget = wibox.container.background,
}
local old_cursor, old_wibox
container:connect_signal(
'mouse::enter',
function()
-- Hm, no idea how to get the wibox from this signal's arguments...
local w = mouse.current_wibox
if w then
old_cursor, old_wibox = w.cursor, w
w.cursor = 'hand1'
end
end
)
container:connect_signal(
'mouse::leave',
function()
if old_wibox then
old_wibox.cursor = old_cursor
old_wibox = nil
end
end
)
return container
end
return build
@@ -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" baseProfile="full" width="240" height="240" viewBox="0 0 24.00 24.00" enable-background="new 0 0 24.00 24.00" xml:space="preserve">
<path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 12.9975,5.83L 14.8775,7.71L 13.2813,9.31125L 14.6925,10.7175L 17.71,7.7L 12.0025,2.0025L 11.0013,2.0025L 11.0013,7.03125L 12.9975,9.02875M 5.41,3.99875L 3.99875,5.41L 10.5912,12.0025L 5,17.5875L 6.41125,18.9988L 11.0013,14.4088L 11.0013,22.0025L 12.0025,22.0025L 16.2887,17.71L 18.5888,20L 20,18.5887M 12.9975,18.1687L 12.9975,14.4088L 14.8775,16.2888"/>
</svg>
@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
viewBox="0 0 240 240"
version="1.1"
id="svg4"
sodipodi:docname="ic_sync_48px.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.61458333"
inkscape:cx="-276.66458"
inkscape:cy="-76.310045"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="M 120,47.272727 V 20 L 83.636361,56.363636 120,92.72727 V 65.454545 c 30.13636,0 54.54545,24.409095 54.54545,54.545455 0,9.22727 -2.31818,17.86364 -6.31818,25.5 l 13.27272,13.27273 C 188.54545,147.5 192.72727,134.27273 192.72727,120 192.72727,79.818182 160.18181,47.272727 120,47.272727 Z m 0,127.272723 c -30.136366,0 -54.545457,-24.40909 -54.545457,-54.54545 0,-9.22727 2.318182,-17.86364 6.318182,-25.5 L 58.499998,81.227273 C 51.454543,92.5 47.272725,105.72727 47.272725,120 c 0,40.18182 32.545455,72.72727 72.727275,72.72727 V 220 L 156.36363,183.63636 120,147.27273 Z"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1;stroke-width:4.5454545" />
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

@@ -0,0 +1,164 @@
local awful = require('awful')
local wibox = require('wibox')
local gears = require('gears')
local naughty = require('naughty')
local watch = awful.widget.watch
local dpi = require('beautiful').xresources.apply_dpi
local clickable_container = require('widget.bluetooth-toggle.clickable-container')
local config_dir = gears.filesystem.get_configuration_dir()
local widget_icon_dir = config_dir .. 'widget/bluetooth-toggle/icons/'
local icons = require('theme.icons')
local device_state = false
local action_name = wibox.widget {
text = 'Bluetooth Connection',
font = 'Inter Regular 11',
align = 'left',
widget = wibox.widget.textbox
}
local button_widget = wibox.widget {
{
id = 'icon',
image = icons.toggled_off,
widget = wibox.widget.imagebox,
resize = true
},
layout = wibox.layout.align.horizontal
}
local widget_button = wibox.widget {
{
button_widget,
top = dpi(7),
bottom = dpi(7),
widget = wibox.container.margin
},
widget = clickable_container
}
local action_widget = wibox.widget {
{
action_name,
nil,
{
widget_button,
layout = wibox.layout.fixed.horizontal,
},
layout = wibox.layout.align.horizontal,
},
left = dpi(24),
right = dpi(24),
forced_height = dpi(48),
widget = wibox.container.margin
}
local update_imagebox = function()
if device_state then
button_widget.icon:set_image(icons.toggled_on)
else
button_widget.icon:set_image(icons.toggled_off)
end
end
local check_device_state = function()
awful.spawn.easy_async_with_shell(
'rfkill list bluetooth',
function(stdout)
if stdout:match('Soft blocked: yes') then
device_state = false
else
device_state = true
end
update_imagebox()
end
)
end
check_device_state()
local power_on_cmd = [[
rfkill unblock bluetooth
# Create an AwesomeWM Notification
awesome-client "
naughty = require('naughty')
naughty.notification({
app_name = 'Bluetooth Manager',
title = 'System Notification',
message = 'Initializing bluetooth device...',
icon = ']] .. widget_icon_dir .. 'loading' .. '.svg' .. [['
})
"
# Add a delay here so we can enable the bluetooth
sleep 1
bluetoothctl power on
]]
local power_off_cmd = [[
bluetoothctl power off
rfkill block bluetooth
# Create an AwesomeWM Notification
awesome-client "
naughty = require('naughty')
naughty.notification({
app_name = 'Bluetooth Manager',
title = 'System Notification',
message = 'The bluetooth device has been disabled.',
icon = ']] .. widget_icon_dir .. 'bluetooth-off' .. '.svg' .. [['
})
"
]]
local toggle_action = function()
if device_state then
device_state = false
awful.spawn.easy_async_with_shell(
power_off_cmd,
function(stdout)
update_imagebox()
end
)
else
device_state = true
awful.spawn.easy_async_with_shell(
power_on_cmd,
function(stdout)
update_imagebox()
end
)
end
end
widget_button:buttons(
gears.table.join(
awful.button(
{},
1,
nil,
function()
toggle_action()
end
)
)
)
watch(
'rfkill list bluetooth',
5,
function(_, stdout)
check_device_state()
collectgarbage('collect')
end
)
return action_widget
@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
viewBox="0 0 240 240"
version="1.1"
id="svg4"
sodipodi:docname="bluetooth-connected.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.86915209"
inkscape:cx="-203.9165"
inkscape:cy="77.465699"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="M 70,120 50,100 30,120 50,140 Z M 177.05,77.05 120,20 H 110 V 95.85 L 64.15,50 50,64.15 105.85,120 50,175.85 64.15,190 110,144.15 V 220 h 10 L 177.05,162.95 134.15,120 Z M 130,58.3 148.8,77.1 130,95.85 Z M 148.8,162.95 130,181.7 V 144.1 Z M 190,100 l -20,20 20,20 20,-20 z"
id="path2"
style="fill:#ffffff;fill-opacity:1;stroke-width:5"
inkscape:connector-curvature="0" />
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

@@ -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" baseProfile="full" width="240" height="240" viewBox="0 0 24.00 24.00" enable-background="new 0 0 24.00 24.00" xml:space="preserve">
<path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 12.9975,5.83L 14.8775,7.71L 13.2813,9.31125L 14.6925,10.7175L 17.71,7.7L 12.0025,2.0025L 11.0013,2.0025L 11.0013,7.03125L 12.9975,9.02875M 5.41,3.99875L 3.99875,5.41L 10.5912,12.0025L 5,17.5875L 6.41125,18.9988L 11.0013,14.4088L 11.0013,22.0025L 12.0025,22.0025L 16.2887,17.71L 18.5888,20L 20,18.5887M 12.9975,18.1687L 12.9975,14.4088L 14.8775,16.2888"/>
</svg>
@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
viewBox="0 0 240 240"
version="1.1"
id="svg4"
sodipodi:docname="bluetooth-scanning.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.43457604"
inkscape:cx="-749.4527"
inkscape:cy="-132.18179"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="m 142.4,120.1 23.2,23.2 c 2.8,-7.25 4.4,-15.1 4.4,-23.3 0,-8.15 -1.55,-15.95 -4.3,-23.15 z M 195.3,67.15 182.65,79.8 c 6.25,12.05 9.85,25.7 9.85,40.25 0,14.55 -3.6,28.15 -9.85,40.25 l 12,12 C 204.3,156.8 210,138.65 210,119.15 c 0,-19.1 -5.45,-36.85 -14.7,-52 z M 157.05,77.05 100,20 H 90 V 95.85 L 44.15,50 30,64.15 85.85,120 30,175.85 44.15,190 90,144.15 V 220 h 10 L 157.05,162.95 114.15,120 Z M 110,58.3 128.8,77.1 110,95.85 Z M 128.8,162.95 110,181.7 v -37.6 z"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1;stroke-width:5" />
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

@@ -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" baseProfile="full" width="240" height="240" viewBox="0 0 24.00 24.00" enable-background="new 0 0 24.00 24.00" xml:space="preserve">
<path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 14.8783,16.2911L 12.9993,18.1701L 12.9993,14.4121M 12.9993,5.82607L 14.8783,7.70507L 12.9993,9.58407M 17.7063,7.70507L 11.9993,1.99807L 10.9993,1.99807L 10.9993,9.58407L 6.41331,4.99807L 4.99931,6.41207L 10.5853,11.9981L 4.99931,17.5841L 6.41331,18.9981L 10.9993,14.4121L 10.9993,21.9981L 11.9993,21.9981L 17.7063,16.2911L 13.4133,11.9981L 17.7063,7.70507 Z "/>
</svg>
@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
viewBox="0 0 240 240"
version="1.1"
id="svg4"
sodipodi:docname="ic_sync_48px.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.61458333"
inkscape:cx="-276.66458"
inkscape:cy="-76.310045"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="M 120,47.272727 V 20 L 83.636361,56.363636 120,92.72727 V 65.454545 c 30.13636,0 54.54545,24.409095 54.54545,54.545455 0,9.22727 -2.31818,17.86364 -6.31818,25.5 l 13.27272,13.27273 C 188.54545,147.5 192.72727,134.27273 192.72727,120 192.72727,79.818182 160.18181,47.272727 120,47.272727 Z m 0,127.272723 c -30.136366,0 -54.545457,-24.40909 -54.545457,-54.54545 0,-9.22727 2.318182,-17.86364 6.318182,-25.5 L 58.499998,81.227273 C 51.454543,92.5 47.272725,105.72727 47.272725,120 c 0,40.18182 32.545455,72.72727 72.727275,72.72727 V 220 L 156.36363,183.63636 120,147.27273 Z"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1;stroke-width:4.5454545" />
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

+83
View File
@@ -0,0 +1,83 @@
local awful = require('awful')
local wibox = require('wibox')
local gears = require('gears')
local naughty = require('naughty')
local watch = awful.widget.watch
local dpi = require('beautiful').xresources.apply_dpi
local apps = require('configuration.apps')
local clickable_container = require('widget.clickable-container')
local config_dir = gears.filesystem.get_configuration_dir()
local widget_icon_dir = config_dir .. 'widget/bluetooth/icons/'
local return_button = function()
local widget =
wibox.widget {
{
id = 'icon',
image = widget_icon_dir .. 'bluetooth-off' .. '.svg',
widget = wibox.widget.imagebox,
resize = true
},
layout = wibox.layout.align.horizontal
}
local widget_button = wibox.widget {
{
widget,
margins = dpi(7),
widget = wibox.container.margin
},
widget = clickable_container
}
widget_button:buttons(
gears.table.join(
awful.button(
{},
1,
nil,
function()
awful.spawn(apps.default.bluetooth_manager, false)
end
)
)
)
local bluetooth_tooltip = awful.tooltip
{
objects = {widget_button},
mode = 'outside',
align = 'right',
margin_leftright = dpi(8),
margin_topbottom = dpi(8),
preferred_positions = {'right', 'left', 'top', 'bottom'}
}
watch(
'rfkill list bluetooth',
5,
function(_, stdout)
local widget_icon_name = nil
if stdout:match('Soft blocked: yes') then
widget_icon_name = 'bluetooth-off'
bluetooth_tooltip.markup = 'Bluetooth is off'
else
widget_icon_name = 'bluetooth'
bluetooth_tooltip.markup = 'Bluetooth is on'
end
widget.icon:set_image(widget_icon_dir .. widget_icon_name .. '.svg')
collectgarbage('collect')
end,
widget
)
return widget_button
end
return return_button
@@ -0,0 +1,35 @@
local wibox = require('wibox')
function build(widget)
local container =
wibox.widget {
widget,
widget = wibox.container.background,
}
local old_cursor, old_wibox
container:connect_signal(
'mouse::enter',
function()
-- Hm, no idea how to get the wibox from this signal's arguments...
local w = mouse.current_wibox
if w then
old_cursor, old_wibox = w.cursor, w
w.cursor = 'hand1'
end
end
)
container:connect_signal(
'mouse::leave',
function()
if old_wibox then
old_wibox.cursor = old_cursor
old_wibox = nil
end
end
)
return container
end
return build
+194
View File
@@ -0,0 +1,194 @@
local wibox = require('wibox')
local gears = require('gears')
local awful = require('awful')
local beautiful = require('beautiful')
local spawn = awful.spawn
local dpi = beautiful.xresources.apply_dpi
local icons = require('theme.icons')
local clickable_container = require('widget.clickable-container')
local action_name = wibox.widget {
text = 'Blur Strength',
font = 'Inter Bold 10',
align = 'left',
widget = wibox.widget.textbox
}
local icon = wibox.widget {
layout = wibox.layout.align.vertical,
expand = 'none',
nil,
{
image = icons.effects,
resize = true,
widget = wibox.widget.imagebox
},
nil
}
local action_level = wibox.widget {
{
icon,
widget = clickable_container,
},
bg = beautiful.transparent,
shape = gears.shape.circle,
widget = wibox.container.background
}
local slider = wibox.widget {
nil,
{
id = 'blur_strength_slider',
bar_shape = gears.shape.rounded_rect,
bar_height = dpi(2),
bar_color = '#ffffff20',
bar_active_color = '#f2f2f2EE',
handle_color = '#ffffff',
handle_shape = gears.shape.circle,
handle_width = dpi(15),
handle_border_color = '#00000012',
handle_border_width = dpi(1),
maximum = 100,
widget = wibox.widget.slider,
},
nil,
expand = 'none',
forced_height = dpi(24),
layout = wibox.layout.align.vertical
}
local blur_slider = slider.blur_strength_slider
local update_slider_value = function()
awful.spawn.easy_async_with_shell(
[[bash -c "
grep -F 'strength =' $HOME/.config/awesome/configuration/picom.conf |
awk 'NR==1 {print $3}' | tr -d ';'
"]],
function(stdout, stderr)
local strength = stdout:match('%d+')
blur_strength = tonumber(strength) / 20 * 100
blur_slider:set_value(tonumber(blur_strength))
start_up = false
end
)
end
-- Update on startup
update_slider_value()
local action_jump = function()
local sli_value = blur_slider:get_value()
local new_value = 0
if sli_value >= 0 and sli_value < 25 then
new_value = 25
elseif sli_value >= 25 and sli_value < 50 then
new_value = 50
elseif sli_value >= 50 and sli_value < 100 then
new_value = 100
else
new_value = 0
end
blur_slider:set_value(new_value)
end
action_level:buttons(
awful.util.table.join(
awful.button(
{},
1,
nil,
function()
action_jump()
end
)
)
)
local adjust_blur = function(power)
awful.spawn.with_shell(
[[bash -c "
sed -i 's/.*strength = .*/ strength = ]] .. power .. [[;/g' \
$HOME/.config/awesome/configuration/picom.conf
"]]
)
end
blur_slider:connect_signal(
'property::value',
function()
if not start_up then
strength = blur_slider:get_value() / 50 * 10
adjust_blur(strength)
end
end
)
-- Adjust slider value to change blur strength
awesome.connect_signal(
'widget::blur:increase',
function()
-- On startup, the slider.value returns nil so...
if blur_slider:get_value() == nil then
return
end
local blur_value = blur_slider:get_value() + 10
-- No more than 100!
if blur_value > 100 then
blur_slider:set_value(100)
return
end
blur_slider:set_value(blur_value)
end
)
-- Decrease blur
awesome.connect_signal(
'widget::blur:decrease',
function()
-- On startup, the slider.value returns nil so...
if blur_slider:get_value() == nil then
return
end
local blur_value = blur_slider:get_value() - 10
-- No negatives!
if blur_value < 0 then
blur_slider:set_value(0)
return
end
blur_slider:set_value(blur_value)
end
)
local volume_setting = wibox.widget {
{
{
action_level,
top = dpi(12),
bottom = dpi(12),
widget = wibox.container.margin
},
slider,
spacing = dpi(24),
layout = wibox.layout.fixed.horizontal
},
left = dpi(24),
right = dpi(24),
forced_height = dpi(48),
widget = wibox.container.margin
}
return volume_setting
@@ -0,0 +1,35 @@
local wibox = require('wibox')
function build(widget)
local container =
wibox.widget {
widget,
widget = wibox.container.background,
}
local old_cursor, old_wibox
container:connect_signal(
'mouse::enter',
function()
-- Hm, no idea how to get the wibox from this signal's arguments...
local w = mouse.current_wibox
if w then
old_cursor, old_wibox = w.cursor, w
w.cursor = 'hand1'
end
end
)
container:connect_signal(
'mouse::leave',
function()
if old_wibox then
old_wibox.cursor = old_cursor
old_wibox = nil
end
end
)
return container
end
return build
+139
View File
@@ -0,0 +1,139 @@
local awful = require('awful')
local wibox = require('wibox')
local gears = require('gears')
local clickable_container = require('widget.blur-toggle.clickable-container')
local dpi = require('beautiful').xresources.apply_dpi
local filesystem = gears.filesystem
local config_dir = filesystem.get_configuration_dir()
local icons = require('theme.icons')
local apps = require('configuration.apps')
local frame_status = nil
local action_name = wibox.widget {
text = 'Blur Effects',
font = 'Inter Regular 11',
align = 'left',
widget = wibox.widget.textbox
}
local button_widget = wibox.widget {
{
id = 'icon',
image = icons.toggled_off,
widget = wibox.widget.imagebox,
resize = true
},
layout = wibox.layout.align.horizontal
}
local widget_button = wibox.widget {
{
button_widget,
top = dpi(7),
bottom = dpi(7),
widget = wibox.container.margin
},
widget = clickable_container
}
local update_imagebox = function()
if action_status then
button_widget.icon:set_image(icons.toggled_on)
else
button_widget.icon:set_image(icons.toggled_off)
end
end
local check_blur_status = function()
awful.spawn.easy_async_with_shell(
[[bash -c "
grep -F 'method = \"none\";' ]] .. config_dir .. [[/configuration/picom.conf | tr -d '[\"\;\=\ ]'
"]],
function(stdout, stderr)
if stdout:match('methodnone') then
action_status = false
else
action_status = true
end
update_imagebox()
end
)
end
check_blur_status()
local toggle_blur = function(togglemode)
local toggle_blur_script = [[bash -c "
# Check picom if it's not running then start it
if [ -z $(pgrep picom) ]; then
picom -b --experimental-backends --dbus --config ]] .. config_dir .. [[configuration/picom.conf
fi
case ]] .. togglemode .. [[ in
'enable')
sed -i -e 's/method = \"none\"/method = \"dual_kawase\"/g' \"]] .. config_dir .. [[configuration/picom.conf\"
;;
'disable')
sed -i -e 's/method = \"dual_kawase\"/method = \"none\"/g' \"]] .. config_dir .. [[configuration/picom.conf\"
;;
esac
"]]
-- Run the script
awful.spawn.with_shell(toggle_blur_script)
end
local toggle_blur_fx = function()
local state = nil
if action_status then
action_status = false
state = 'disable'
else
action_status = true
state = 'enable'
end
toggle_blur(state)
update_imagebox()
end
widget_button:buttons(
gears.table.join(
awful.button(
{},
1,
nil,
function()
toggle_blur_fx()
end
)
)
)
local action_widget = wibox.widget {
{
action_name,
nil,
{
widget_button,
layout = wibox.layout.fixed.horizontal,
},
layout = wibox.layout.align.horizontal,
},
left = dpi(24),
right = dpi(24),
forced_height = dpi(48),
widget = wibox.container.margin
}
awesome.connect_signal(
'widget::blur:toggle',
function()
toggle_blur_fx()
end
)
return action_widget
@@ -0,0 +1,180 @@
local wibox = require('wibox')
local gears = require('gears')
local awful = require('awful')
local beautiful = require('beautiful')
local spawn = awful.spawn
local dpi = beautiful.xresources.apply_dpi
local icons = require('theme.icons')
local clickable_container = require('widget.clickable-container')
local icon = wibox.widget {
layout = wibox.layout.align.vertical,
expand = 'none',
nil,
{
image = icons.brightness,
resize = true,
widget = wibox.widget.imagebox
},
nil
}
local action_level = wibox.widget {
{
icon,
widget = clickable_container
},
bg = beautiful.transparent,
shape = gears.shape.circle,
widget = wibox.container.background
}
local slider = wibox.widget {
nil,
{
id = 'brightness_slider',
bar_shape = gears.shape.rounded_rect,
bar_height = dpi(2),
bar_color = '#ffffff20',
bar_active_color = '#f2f2f2EE',
handle_color = '#ffffff',
handle_shape = gears.shape.circle,
handle_width = dpi(15),
handle_border_color = '#00000012',
handle_border_width = dpi(1),
maximum = 100,
widget = wibox.widget.slider,
},
nil,
expand = 'none',
forced_height = dpi(24),
layout = wibox.layout.align.vertical
}
local brightness_slider = slider.brightness_slider
brightness_slider:connect_signal(
'property::value',
function()
local brightness_level = brightness_slider:get_value()
spawn('light -S ' ..
math.max(brightness_level, 5),
false
)
-- Update brightness osd
awesome.emit_signal(
'module::brightness_osd',
brightness_level
)
end
)
brightness_slider:buttons(
gears.table.join(
awful.button(
{},
4,
nil,
function()
if brightness_slider:get_value() > 100 then
brightness_slider:set_value(100)
return
end
brightness_slider:set_value(brightness_slider:get_value() + 5)
end
),
awful.button(
{},
5,
nil,
function()
if brightness_slider:get_value() < 0 then
brightness_slider:set_value(0)
return
end
brightness_slider:set_value(brightness_slider:get_value() - 5)
end
)
)
)
local update_slider = function()
awful.spawn.easy_async_with_shell(
'light -G',
function(stdout)
local brightness = string.match(stdout, '(%d+)')
brightness_slider:set_value(tonumber(brightness))
end
)
end
-- Update on startup
update_slider()
local action_jump = function()
local sli_value = brightness_slider:get_value()
local new_value = 0
if sli_value >= 0 and sli_value < 50 then
new_value = 50
elseif sli_value >= 50 and sli_value < 100 then
new_value = 100
else
new_value = 0
end
brightness_slider:set_value(new_value)
end
action_level:buttons(
awful.util.table.join(
awful.button(
{},
1,
nil,
function()
action_jump()
end
)
)
)
-- The emit will come from the global keybind
awesome.connect_signal(
'widget::brightness',
function()
update_slider()
end
)
-- The emit will come from the OSD
awesome.connect_signal(
'widget::brightness:update',
function(value)
brightness_slider:set_value(tonumber(value))
end
)
local brightness_setting = wibox.widget {
{
{
action_level,
top = dpi(12),
bottom = dpi(12),
widget = wibox.container.margin
},
slider,
spacing = dpi(24),
layout = wibox.layout.fixed.horizontal
},
left = dpi(24),
right = dpi(24),
forced_height = dpi(48),
widget = wibox.container.margin
}
return brightness_setting
@@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="24"
height="24"
viewBox="0 0 24 24"
version="1.1"
id="svg6"
sodipodi:docname="kb-off.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="742"
id="namedview8"
showgrid="false"
inkscape:zoom="9.8333333"
inkscape:cx="-6.9661017"
inkscape:cy="12"
inkscape:window-x="45"
inkscape:window-y="26"
inkscape:window-maximized="1"
inkscape:current-layer="svg6" />
<path
d="M20 5H4c-1.1 0-1.99.9-1.99 2L2 17c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm-9 3h2v2h-2V8zm0 3h2v2h-2v-2zM8 8h2v2H8V8zm0 3h2v2H8v-2zm-1 2H5v-2h2v2zm0-3H5V8h2v2zm9 7H8v-2h8v2zm0-4h-2v-2h2v2zm0-3h-2V8h2v2zm3 3h-2v-2h2v2zm0-3h-2V8h2v2z"
id="path2"
style="fill:#ffffff;fill-opacity:0.33333334" />
<path
d="M0 0h24v24H0zm0 0h24v24H0z"
fill="none"
id="path4" />
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

@@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="24"
height="24"
viewBox="0 0 24 24"
version="1.1"
id="svg6"
sodipodi:docname="kb.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="742"
id="namedview8"
showgrid="false"
inkscape:zoom="9.8333333"
inkscape:cx="-6.9661017"
inkscape:cy="12"
inkscape:window-x="45"
inkscape:window-y="26"
inkscape:window-maximized="1"
inkscape:current-layer="svg6" />
<path
d="M20 5H4c-1.1 0-1.99.9-1.99 2L2 17c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm-9 3h2v2h-2V8zm0 3h2v2h-2v-2zM8 8h2v2H8V8zm0 3h2v2H8v-2zm-1 2H5v-2h2v2zm0-3H5V8h2v2zm9 7H8v-2h8v2zm0-4h-2v-2h2v2zm0-3h-2V8h2v2zm3 3h-2v-2h2v2zm0-3h-2V8h2v2z"
id="path2"
style="fill:#ffffff;fill-opacity:1" />
<path
d="M0 0h24v24H0zm0 0h24v24H0z"
fill="none"
id="path4" />
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

+476
View File
@@ -0,0 +1,476 @@
----------------------------------------------------------------------------
--- Basic Calculator Widget
--
--
-- For more details check my repos README.md
--
--
-- @author manilarome &lt;gerome.matilla07@gmail.com&gt;
-- @copyright 2019 manilarome
-- @widget calculator
----------------------------------------------------------------------------
-- A basic calculator widget
-- Supports keyboard input!
-- Just hover your cursor above the calculator widget and start typing
-- Stop keygrabbing by leaving the calculator
local awful = require('awful')
local wibox = require('wibox')
local gears = require('gears')
local beautiful = require('beautiful')
local dpi = beautiful.xresources.apply_dpi
local clickable_container = require('widget.clickable-container')
local config_dir = gears.filesystem.get_configuration_dir()
local widget_icon_dir = config_dir .. 'widget/calculator/icons/'
local calculator_screen = wibox.widget {
{
id = 'calcu_screen',
text = '0',
font = 'Inter Regular 20',
align = 'right',
valign = 'center',
widget = wibox.widget.textbox,
},
margins = dpi(5),
widget = wibox.container.margin
}
-- Evaluate
local calculate = function ()
local calcu_screen = calculator_screen.calcu_screen
local string_expression = calcu_screen:get_text()
if string_expression:sub(-1):match('[%+%-%/%*%^%.]') then
return
end
local func = assert(load('return ' .. string_expression))
local ans = tostring(func())
-- Convert -nan to undefined
if ans == '-nan' then
calcu_screen:set_text('undefined')
return
end
-- Set the answer in textbox
calcu_screen:set_text(ans)
end
local txt_on_screen = function()
screen_text = calculator_screen.calcu_screen:get_text()
return screen_text == 'inf' or screen_text == 'undefined' or screen_text == 'SYNTAX ERROR' or #screen_text == 1
end
-- Delete the last digit in screen
local delete_value = function()
calcu_screen = calculator_screen.calcu_screen
-- Set the screen text to 0 if conditions met
if txt_on_screen() then
calcu_screen:set_text('0')
else
-- Delete the last digit
calcu_screen:set_text(calcu_screen:get_text():sub(1, -2))
end
end
-- Clear screen
local clear_screen = function()
calculator_screen.calcu_screen:set_text('0')
end
-- The one that filters and checks the user input to avoid errors and bugs
local format_screen = function(value)
local calcu_screen = calculator_screen.calcu_screen
-- If the screen has only 0
if calcu_screen:get_text() == '0' then
-- Check if the button pressed sends a value of either +, -, /, *, ^, .
if value:sub(-1):match('[%+%/%*%^%.]') then
calcu_screen:set_text(calcu_screen:get_text() .. tostring(value))
else
calcu_screen:set_text(value)
end
elseif calcu_screen:get_text() == 'inf' or
calcu_screen:get_text() == 'undefined' or
calcu_screen:get_text() == 'SYNTAX ERROR' then
-- Clear screen if an operator is selected
if value:sub(-1):match('[%+%/%*%^%.]') then
clear_screen()
else
-- Replace screen txt with the number value pressed
clear_screen()
calcu_screen:set_text(tostring(value))
end
else
-- Don't let the user to input two or more consecutive arithmetic operators and decimals
if calcu_screen:get_text():sub(-1):match('[%+%-%/%*%^%.]') and value:sub(-1):match('[%+%-%/%*%^%.%%]') then
-- Get the operator from button pressed
local string_eval = calcu_screen:get_text():sub(-1):gsub('[%+%-%/%*%^%.]', value)
-- This will prevent the user to input consecutive operators and decimals
-- It will replace the previous operator with the value of input
calcu_screen:set_text(calcu_screen:get_text():sub(1, -2))
-- Concatenate the value operator to the screen string to replace the deleted operator
calcu_screen:set_text(calcu_screen:get_text() .. tostring(string_eval))
else
-- Concatenate the value to screen string
calcu_screen:set_text(calcu_screen:get_text() .. tostring(value))
end
end
end
-- Shape generator
local build_shape = function (position, radius)
-- Position represents the position of rounded corners
if position == 'top' then
return function(cr, width, height)
gears.shape.partially_rounded_rect(cr, width, height, true, true, false, false, radius)
end
elseif position == 'top_left' then
return function(cr, width, height)
gears.shape.partially_rounded_rect(cr, width, height, true, false, false, false, radius)
end
elseif position == 'top_right' then
return function(cr, width, height)
gears.shape.partially_rounded_rect(cr, width, height, false, true, false, false, radius)
end
elseif position == 'bottom_right' then
return function(cr, width, height)
gears.shape.partially_rounded_rect(cr, width, height, false, false, true, false, radius)
end
elseif position == 'bottom_left' then
return function(cr, width, height)
gears.shape.partially_rounded_rect(cr, width, height, false, false, false, true, radius)
end
else
return function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, radius)
end
end
end
-- Themes widgets
local decorate_widget = function(widget_arg, pos, rad)
return wibox.widget {
widget_arg,
bg = beautiful.groups_bg,
shape = build_shape(pos, rad),
widget = wibox.container.background
}
end
-- Build a button
local build_button_widget = function(text, rcp, rad)
local value = text
local build_textbox = wibox.widget {
{
id = 'btn_name',
text = value,
font = 'Inter 12',
align = 'center',
valign = 'center',
widget = wibox.widget.textbox,
},
margins = dpi(5),
widget = wibox.container.margin
}
local build_button = wibox.widget {
{
build_textbox,
margins = dpi(7),
widget = wibox.container.margin
},
widget = clickable_container
}
build_button:buttons(
gears.table.join(
awful.button(
{},
1,
nil,
function ()
if value == 'C' then
clear_screen()
elseif value == '=' then
-- Calculate and error handling
if not pcall(calculate) then
calculator_screen.calcu_screen:set_text('SYNTAX ERROR')
end
elseif value == 'DEL' then
delete_value()
else
format_screen(value)
end
end
)
)
)
return decorate_widget(build_button, rcp, rad)
end
local keygrab_running = false
local kb_imagebox = wibox.widget {
id = 'kb_icon',
image = widget_icon_dir .. 'kb-off' .. '.svg',
resize = true,
forced_height = dpi(15),
widget = wibox.widget.imagebox
}
local kb_button_widget = wibox.widget {
{
{
{
layout = wibox.layout.align.horizontal,
expand = 'none',
nil,
kb_imagebox,
nil
},
margins = dpi(10),
widget = wibox.container.margin
},
widget = clickable_container
},
bg = beautiful.groups_bg,
shape = build_shape('bottom_left', beautiful.groups_radius),
widget = wibox.container.background
}
local toggle_btn_keygrab = function()
if keygrab_running then
kb_imagebox:set_image(widget_icon_dir .. 'kb-off' .. '.svg')
awesome.emit_signal('widget::calc_stop_keygrab')
keygrab_running = false
else
kb_imagebox:set_image(widget_icon_dir .. 'kb' .. '.svg')
awesome.emit_signal('widget::calc_start_keygrab')
keygrab_running = true
end
end
local kb_button = kb_button_widget
kb_button:buttons(
gears.table.join(
awful.button(
{},
1,
nil,
function()
toggle_btn_keygrab()
end
)
)
)
local calcu_keygrabber = awful.keygrabber {
auto_start = true,
stop_event = 'release',
start_callback = function()
keygrab_running = true
kb_imagebox:set_image(widget_icon_dir .. 'kb' .. '.svg')
end,
stop_callback = function()
keygrab_running = false
kb_imagebox:set_image(widget_icon_dir .. 'kb-off' .. '.svg')
end,
keypressed_callback = function(self, mod, key, command)
if #key == 1 and (key:match('%d+') or key:match('[%+%-%/%*%^%.]')) then
format_screen(key)
elseif key == 'BackSpace' then
delete_value()
elseif key == 'Escape' then
clear_screen()
elseif key == 'x' then
awesome.emit_signal('widget::calc_stop_keygrab')
elseif key == '=' or key == 'Return' then
-- Calculate
if not pcall(calculate) then
calculator_screen.calcu_screen:set_text('SYNTAX ERROR')
end
end
end,
}
local calculator_body = wibox.widget {
layout = wibox.layout.fixed.vertical,
spacing = dpi(1),
{
spacing = dpi(1),
layout = wibox.layout.flex.horizontal,
decorate_widget(calculator_screen, 'top', beautiful.groups_radius),
},
{
spacing = dpi(1),
layout = wibox.layout.flex.horizontal,
build_button_widget('C', 'flat' , 0),
build_button_widget('^', 'flat', 0),
build_button_widget('/', 'flat', 0),
build_button_widget('DEL', 'flat', 0),
},
{
spacing = dpi(1),
layout = wibox.layout.flex.horizontal,
build_button_widget('7', 'flat', 0),
build_button_widget('8', 'flat', 0),
build_button_widget('9', 'flat', 0),
build_button_widget('*', 'flat', 0),
},
{
spacing = dpi(1),
layout = wibox.layout.flex.horizontal,
build_button_widget('4', 'flat', 0),
build_button_widget('5', 'flat', 0),
build_button_widget('6', 'flat', 0),
build_button_widget('-', 'flat', 0),
},
{
spacing = dpi(1),
layout = wibox.layout.flex.horizontal,
build_button_widget('1', 'flat', 0),
build_button_widget('2', 'flat', 0),
build_button_widget('3', 'flat', 0),
build_button_widget('+', 'flat', 0),
},
{
spacing = dpi(1),
layout = wibox.layout.flex.horizontal,
kb_button,
build_button_widget('0', 'flat', 0),
build_button_widget('.', 'flat', 0),
build_button_widget('=', 'bottom_right', beautiful.groups_radius)
},
}
calculator_body:connect_signal(
'mouse::enter',
function()
-- Start keygrabbing
calcu_keygrabber:start()
end
)
calculator_body:connect_signal(
'mouse::leave',
function()
-- Stop keygrabbing
calcu_keygrabber:stop()
end
)
awesome.connect_signal(
'widget::calc_start_keygrab',
function()
-- Stop keygrabbing
calcu_keygrabber:start()
end
)
awesome.connect_signal(
'widget::calc_stop_keygrab',
function()
-- Stop keygrabbing
calcu_keygrabber:stop()
end
)
local calcu_tooltip = awful.tooltip {
objects = {kb_button},
mode = 'outside',
align = 'right',
delay_show = 1,
preferred_positions = {'right', 'left', 'top', 'bottom'},
margin_leftright = dpi(8),
margin_topbottom = dpi(8),
markup = [[
<b>Tips:</b>
Enable keyboard support by hovering your mouse above the calculator.
Or toggle it on/off by pressing the keyboard button.
Only numbers, arithmetic operators, and decimal point is accepted.
<b>Keyboard bindings:</b>
<b>=</b> and <b>Return</b> to get the answer.
<b>BackSpace</b> to delete the last digit.
<b>Escape</b> clears the screen.
<b>x</b> stops keygrabbing.
<b>Note:</b>
While in keygrabbing mode, your keyboard's focus will be on the calculator.
So you're AwesomeWM keybinding will stop working.
<b>Stopping the keygrabbing mode:</b>
* Move away your cursor from the calculator.
* Toggle it off using the keyboard button.
* Press <b>x</b>.
]]
}
return calculator_body
@@ -0,0 +1,59 @@
local wibox = require('wibox')
local beautiful = require('beautiful')
local create_click_events = function(widget)
local container = wibox.widget {
widget,
widget = wibox.container.background
}
-- Old and new widget
local old_cursor, old_wibox
-- Mouse hovers on the widget
container:connect_signal(
'mouse::enter',
function()
container.bg = beautiful.groups_bg
-- Hm, no idea how to get the wibox from this signal's arguments...
local w = mouse.current_wibox
if w then
old_cursor, old_wibox = w.cursor, w
w.cursor = 'hand1'
end
end
)
-- Mouse leaves the widget
container:connect_signal(
'mouse::leave',
function()
container.bg = beautiful.leave_event
if old_wibox then
old_wibox.cursor = old_cursor
old_wibox = nil
end
end
)
-- Mouse pressed the widget
container:connect_signal(
'button::press',
function()
container.bg = beautiful.press_event
end
)
-- Mouse releases the widget
container:connect_signal(
'button::release',
function()
container.bg = beautiful.release_event
end
)
return container
end
return create_click_events
+158
View File
@@ -0,0 +1,158 @@
local wibox = require('wibox')
local awful = require('awful')
local gears = require('gears')
local beautiful = require('beautiful')
local dpi = beautiful.xresources.apply_dpi
local clickable_container = require('widget.clickable-container')
local config = require('configuration.config')
local military_mode = config.widget.clock.military_mode or false
local create_clock = function(s)
local clock_format = nil
if not military_mode then
clock_format = '<span font="Inter Bold 11">%I:%M %p</span>'
else
clock_format = '<span font="Inter Bold 11">%H:%M</span>'
end
s.clock_widget = wibox.widget.textclock(
clock_format,
1
)
s.clock_widget = wibox.widget {
{
s.clock_widget,
margins = dpi(7),
widget = wibox.container.margin
},
widget = clickable_container
}
s.clock_widget:connect_signal(
'mouse::enter',
function()
local w = mouse.current_wibox
if w then
old_cursor, old_wibox = w.cursor, w
w.cursor = 'hand1'
end
end
)
s.clock_widget:connect_signal(
'mouse::leave',
function()
if old_wibox then
old_wibox.cursor = old_cursor
old_wibox = nil
end
end
)
s.clock_tooltip = awful.tooltip
{
objects = {s.clock_widget},
mode = 'outside',
delay_show = 1,
preferred_positions = {'right', 'left', 'top', 'bottom'},
preferred_alignments = {'middle', 'front', 'back'},
margin_leftright = dpi(8),
margin_topbottom = dpi(8),
timer_function = function()
local ordinal = nil
local day = os.date('%d')
local month = os.date('%B')
local first_digit = string.sub(day, 0, 1)
local last_digit = string.sub(day, -1)
if first_digit == '0' then
day = last_digit
end
if last_digit == '1' and day ~= '11' then
ordinal = 'st'
elseif last_digit == '2' and day ~= '12' then
ordinal = 'nd'
elseif last_digit == '3' and day ~= '13' then
ordinal = 'rd'
else
ordinal = 'th'
end
local date_str = 'Today is the ' ..
'<b>' .. day .. ordinal ..
' of ' .. month .. '</b>.\n' ..
'And it\'s fucking ' .. os.date('%A')
return date_str
end,
}
s.clock_widget:connect_signal(
'button::press',
function(self, lx, ly, button)
-- Hide the tooltip when you press the clock widget
if s.clock_tooltip.visible and button == 1 then
s.clock_tooltip.visible = false
end
end
)
s.month_calendar = awful.widget.calendar_popup.month({
start_sunday = true,
spacing = dpi(5),
font = 'Inter Regular 10',
long_weekdays = true,
margin = dpi(5),
screen = s,
style_month = {
border_width = dpi(0),
bg_color = beautiful.background,
padding = dpi(20),
shape = function(cr, width, height)
gears.shape.partially_rounded_rect(
cr, width, height, true, true, true, true, beautiful.groups_radius
)
end
},
style_header = {
border_width = 0,
bg_color = beautiful.transparent
},
style_weekday = {
border_width = 0,
bg_color = beautiful.transparent
},
style_normal = {
border_width = 0,
bg_color = beautiful.transparent
},
style_focus = {
border_width = dpi(0),
border_color = beautiful.fg_normal,
bg_color = beautiful.accent,
shape = function(cr, width, height)
gears.shape.partially_rounded_rect(
cr, width, height, true, true, true, true, dpi(4)
)
end,
},
})
s.month_calendar:attach(
s.clock_widget,
'tc',
{
on_pressed = true,
on_hover = false
}
)
return s.clock_widget
end
return create_clock
+74
View File
@@ -0,0 +1,74 @@
local wibox = require('wibox')
local gears = require('gears')
local beautiful = require('beautiful')
local watch = require('awful.widget.watch')
local dpi = beautiful.xresources.apply_dpi
local icons = require('theme.icons')
local total_prev = 0
local idle_prev = 0
local slider = wibox.widget {
nil,
{
id = 'cpu_usage',
max_value = 100,
value = 29,
forced_height = dpi(2),
color = beautiful.fg_normal,
background_color = beautiful.groups_bg,
shape = gears.shape.rounded_rect,
widget = wibox.widget.progressbar
},
nil,
expand = 'none',
layout = wibox.layout.align.vertical
}
watch(
[[bash -c "
cat /proc/stat | grep '^cpu '
"]],
10,
function(_, stdout)
local user, nice, system, idle, iowait, irq, softirq, steal, guest, guest_nice =
stdout:match('(%d+)%s(%d+)%s(%d+)%s(%d+)%s(%d+)%s(%d+)%s(%d+)%s(%d+)%s(%d+)%s(%d+)%s')
local total = user + nice + system + idle + iowait + irq + softirq + steal
local diff_idle = idle - idle_prev
local diff_total = total - total_prev
local diff_usage = (1000 * (diff_total - diff_idle) / diff_total + 5) / 10
slider.cpu_usage:set_value(diff_usage)
total_prev = total
idle_prev = idle
collectgarbage('collect')
end
)
local cpu_meter = wibox.widget {
{
{
{
image = icons.chart,
resize = true,
widget = wibox.widget.imagebox
},
top = dpi(12),
bottom = dpi(12),
widget = wibox.container.margin
},
slider,
spacing = dpi(24),
layout = wibox.layout.fixed.horizontal
},
left = dpi(24),
right = dpi(24),
forced_height = dpi(48),
widget = wibox.container.margin
}
return cpu_meter
@@ -0,0 +1,109 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
viewBox="0 0 240 240"
version="1.1"
id="svg4"
sodipodi:docname="email.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8">
<rect
id="rect887"
height="76.821962"
width="72.691548"
y="140.43247"
x="160.68127" />
<rect
id="rect881"
height="42.253372"
width="57.559134"
y="165.94589"
x="180.14568" />
</defs>
<sodipodi:namedview
inkscape:document-rotation="0"
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0.65098039"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="false"
inkscape:zoom="2.3188977"
inkscape:cx="102.48514"
inkscape:cy="104.63006"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="g847" />
<g
id="g877">
<text
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect881);fill:#000000;fill-opacity:1;stroke:none;"
id="text879"
xml:space="preserve" />
<g
id="g856">
<g
id="g847">
<g
id="g853">
<g
id="g841">
<path
d="M 200,40 H 40 C 28.95,40 20.1,48.95 20.1,60 L 20,180 c 0,11.05 8.95,20 20,20 h 160 c 11.05,0 20,-8.95 20,-20 V 60 c 0,-11.05 -8.95,-20 -20,-20 z m 0,40 -80,50 L 40,80 V 60 l 80,50 80,-50 z"
id="path2"
style="opacity:0.8;fill:#ffffff;fill-opacity:1;stroke-width:5" />
</g>
<g
id="g843">
<ellipse
id="ellipse16"
ry="40.319271"
rx="40.343189"
cy="176.31927"
cx="196.3432"
style="fill:#e04f5f;stroke-width:0.427111" />
<g
aria-label="1"
transform="translate(1.3783569,-0.62932051)"
id="text885"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:64px;line-height:1.25;font-family:'sf pro d';-inkscape-font-specification:'sf pro d';letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect887);fill:#000000;fill-opacity:1;stroke:none">
<path
d="m 196.13672,199.49547 h 9.34375 v -45.09375 h -9.375 l -11.65625,8.09375 v 8.375 l 11.5,-7.8125 h 0.1875 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:64px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#ffffff"
id="path933" />
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

@@ -0,0 +1,100 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
viewBox="0 0 240 240"
version="1.1"
id="svg4"
sodipodi:docname="email-2.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8">
<rect
id="rect887"
height="76.821962"
width="72.691548"
y="140.43247"
x="160.68127" />
<rect
id="rect881"
height="42.253372"
width="57.559134"
y="165.94589"
x="180.14568" />
</defs>
<sodipodi:namedview
inkscape:document-rotation="0"
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0.65098039"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="false"
inkscape:zoom="2.2645626"
inkscape:cx="118.93231"
inkscape:cy="121.34259"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="g877" />
<g
id="g877">
<g
id="g854">
<path
d="M 200,40 H 40 C 28.95,40 20.1,48.95 20.1,60 L 20,180 c 0,11.05 8.95,20 20,20 h 160 c 11.05,0 20,-8.95 20,-20 V 60 c 0,-11.05 -8.95,-20 -20,-20 z m 0,40 -80,50 L 40,80 V 60 l 80,50 80,-50 z"
id="path2"
style="opacity:0.8;fill:#ffffff;fill-opacity:1;stroke-width:5" />
<text
xml:space="preserve"
id="text879"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect881);fill:#000000;fill-opacity:1;stroke:none;" />
<g
id="g846">
<ellipse
id="ellipse16"
ry="40.319271"
rx="40.343189"
cy="176.31927"
cx="196.3432"
style="fill:#e04f5f;stroke-width:0.427111" />
<g
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:64px;line-height:1.25;font-family:'sf pro d';-inkscape-font-specification:'sf pro d';letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect887);fill:#000000;fill-opacity:1;stroke:none"
id="text885"
transform="translate(0,-0.98869551)"
aria-label="2">
<path
id="path840"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#ffffff"
d="m 180.38672,168.12047 h 8.75 c 0,-4.34375 3.40625,-7.375 7.90625,-7.375 4.0625,0 6.84375,2.75 6.84375,6.375 0,3.125 -1.28125,5.28125 -7,10.78125 l -15.96875,15.125 v 6.46875 h 32.78125 v -7.5 h -20.4375 v -0.1875 l 9.46875,-9.0625 c 7.625,-7.28125 10.34375,-10.6875 10.34375,-16.21875 0,-7.5 -6.375,-13.125 -16.03125,-13.125 -9.78125,0 -16.65625,6.03125 -16.65625,14.71875 z" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

@@ -0,0 +1,100 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
viewBox="0 0 240 240"
version="1.1"
id="svg4"
sodipodi:docname="email-3.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8">
<rect
id="rect887"
height="76.821962"
width="72.691548"
y="140.43247"
x="160.68127" />
<rect
id="rect881"
height="42.253372"
width="57.559134"
y="165.94589"
x="180.14568" />
</defs>
<sodipodi:namedview
inkscape:document-rotation="0"
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0.65098039"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="false"
inkscape:zoom="2.2645626"
inkscape:cx="118.93231"
inkscape:cy="121.34259"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="g877" />
<g
id="g877">
<text
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect881);fill:#000000;fill-opacity:1;stroke:none;"
id="text879"
xml:space="preserve" />
<g
id="g853">
<path
d="M 200,40 H 40 C 28.95,40 20.1,48.95 20.1,60 L 20,180 c 0,11.05 8.95,20 20,20 h 160 c 11.05,0 20,-8.95 20,-20 V 60 c 0,-11.05 -8.95,-20 -20,-20 z m 0,40 -80,50 L 40,80 V 60 l 80,50 80,-50 z"
id="path2"
style="opacity:0.8;fill:#ffffff;fill-opacity:1;stroke-width:5" />
<g
id="g846">
<ellipse
id="ellipse16"
ry="40.319271"
rx="40.343189"
cy="176.31927"
cx="196.3432"
style="fill:#e04f5f;stroke-width:0.427111" />
<g
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:64px;line-height:1.25;font-family:'sf pro d';-inkscape-font-specification:'sf pro d';letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect887);fill:#000000;fill-opacity:1;stroke:none"
id="text885"
transform="translate(0,-0.98869551)"
aria-label="3">
<path
id="path840"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#ffffff"
d="m 190.96484,179.65172 h 5.15625 c 5.46875,0 8.6875,2.4375 8.65625,6.8125 0,3.8125 -3.25,6.4375 -7.96875,6.4375 -4.96875,0 -8.21875,-2.5 -8.53125,-6.1875 h -9 c 0.40625,8.28125 7.34375,13.78125 17.53125,13.78125 10.46875,0 17.5625,-5.4375 17.5625,-13.625 0,-6.1875 -4.375,-10.15625 -11.0625,-10.78125 v -0.1875 c 5.3125,-1.09375 9.40625,-4.8125 9.40625,-10.5625 0,-7.21875 -6.4375,-11.9375 -15.96875,-11.9375 -9.4375,0 -16,5.28125 -16.46875,13.53125 h 8.65625 c 0.28125,-3.90625 3.375,-6.28125 7.8125,-6.28125 4.5,0 7.03125,2.34375 7.03125,6.03125 0,3.6875 -3.0625,6.25 -7.78125,6.25 h -5.03125 z" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

@@ -0,0 +1,100 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
viewBox="0 0 240 240"
version="1.1"
id="svg4"
sodipodi:docname="email-4.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8">
<rect
id="rect887"
height="76.821962"
width="72.691548"
y="140.43247"
x="160.68127" />
<rect
id="rect881"
height="42.253372"
width="57.559134"
y="165.94589"
x="180.14568" />
</defs>
<sodipodi:namedview
inkscape:document-rotation="0"
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0.65098039"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="false"
inkscape:zoom="2.2645626"
inkscape:cx="118.93231"
inkscape:cy="121.34259"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="g877" />
<g
id="g877">
<text
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect881);fill:#000000;fill-opacity:1;stroke:none;"
id="text879"
xml:space="preserve" />
<g
id="g853">
<path
d="M 200,40 H 40 C 28.95,40 20.1,48.95 20.1,60 L 20,180 c 0,11.05 8.95,20 20,20 h 160 c 11.05,0 20,-8.95 20,-20 V 60 c 0,-11.05 -8.95,-20 -20,-20 z m 0,40 -80,50 L 40,80 V 60 l 80,50 80,-50 z"
id="path2"
style="opacity:0.8;fill:#ffffff;fill-opacity:1;stroke-width:5" />
<g
id="g846">
<ellipse
id="ellipse16"
ry="40.319271"
rx="40.343189"
cy="176.31927"
cx="196.3432"
style="fill:#e04f5f;stroke-width:0.427111" />
<g
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:64px;line-height:1.25;font-family:'sf pro d';-inkscape-font-specification:'sf pro d';letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect887);fill:#000000;fill-opacity:1;stroke:none"
id="text885"
transform="translate(0,-0.98869551)"
aria-label="4">
<path
id="path840"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#ffffff"
d="m 200.99609,199.49547 h 8.96875 v -8.28125 h 5.9375 v -7.53125 h -5.9375 v -29.28125 h -13.3125 c -9.25,13.59375 -14.15625,21.46875 -18.09375,28.9375 v 7.875 h 22.4375 z m -14.21875,-15.8125 c 3.59375,-6.71875 7.6875,-13.125 14.21875,-22.53125 h 0.1875 v 22.78125 h -14.40625 z" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

@@ -0,0 +1,100 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
sodipodi:docname="email-5.svg"
id="svg4"
version="1.1"
viewBox="0 0 240 240"
height="240"
width="240">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8">
<rect
x="160.68127"
y="140.43247"
width="72.691548"
height="76.821962"
id="rect887" />
<rect
x="180.14568"
y="165.94589"
width="57.559134"
height="42.253372"
id="rect881" />
</defs>
<sodipodi:namedview
inkscape:current-layer="g844"
inkscape:window-maximized="0"
inkscape:window-y="28"
inkscape:window-x="45"
inkscape:cy="121.34259"
inkscape:cx="118.93231"
inkscape:zoom="2.2645626"
inkscape:pagecheckerboard="false"
showgrid="false"
id="namedview6"
inkscape:window-height="740"
inkscape:window-width="1321"
inkscape:pageshadow="2"
inkscape:pageopacity="0.65098039"
guidetolerance="10"
gridtolerance="10"
objecttolerance="10"
borderopacity="1"
bordercolor="#666666"
pagecolor="#000000"
inkscape:document-rotation="0" />
<g
id="g877">
<g
id="g853">
<path
style="opacity:0.8;fill:#ffffff;fill-opacity:1;stroke-width:5"
id="path2"
d="M 200,40 H 40 C 28.95,40 20.1,48.95 20.1,60 L 20,180 c 0,11.05 8.95,20 20,20 h 160 c 11.05,0 20,-8.95 20,-20 V 60 c 0,-11.05 -8.95,-20 -20,-20 z m 0,40 -80,50 L 40,80 V 60 l 80,50 80,-50 z" />
<text
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect881);fill:#000000;fill-opacity:1;stroke:none;"
id="text879"
xml:space="preserve" />
<g
id="g844">
<ellipse
style="fill:#e04f5f;stroke-width:0.427111"
cx="196.3432"
cy="176.31927"
rx="40.343189"
ry="40.319271"
id="ellipse16" />
<g
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:64px;line-height:1.25;font-family:'sf pro d';-inkscape-font-specification:'sf pro d';letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect887);fill:#000000;fill-opacity:1;stroke:none"
id="text885"
transform="translate(0,-0.98869551)"
aria-label="5">
<path
id="path842"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#ffffff"
d="m 197.52734,200.49547 c 10.34375,0 17.4375,-6.46875 17.4375,-16 0,-8.59375 -6.15625,-14.78125 -14.75,-14.78125 -4.5625,0 -8.28125,1.84375 -10.15625,4.875 h -0.1875 l 1.09375,-12.6875 h 21.28125 v -7.5 h -28.78125 l -2.0625,26.46875 h 8.21875 c 1.53125,-2.71875 4.34375,-4.40625 7.96875,-4.40625 4.9375,0 8.375,3.40625 8.375,8.25 0,4.90625 -3.4375,8.3125 -8.40625,8.3125 -4.34375,0 -7.6875,-2.5625 -8.21875,-6.46875 h -8.71875 c 0.25,8.1875 7.25,13.9375 16.90625,13.9375 z" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

@@ -0,0 +1,100 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
viewBox="0 0 240 240"
version="1.1"
id="svg4"
sodipodi:docname="email-6.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8">
<rect
id="rect887"
height="76.821962"
width="72.691548"
y="140.43247"
x="160.68127" />
<rect
id="rect881"
height="42.253372"
width="57.559134"
y="165.94589"
x="180.14568" />
</defs>
<sodipodi:namedview
inkscape:document-rotation="0"
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0.65098039"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="false"
inkscape:zoom="2.2645626"
inkscape:cx="118.93231"
inkscape:cy="121.34259"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="g877" />
<g
id="g877">
<text
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect881);fill:#000000;fill-opacity:1;stroke:none;"
id="text879"
xml:space="preserve" />
<g
id="g853">
<path
d="M 200,40 H 40 C 28.95,40 20.1,48.95 20.1,60 L 20,180 c 0,11.05 8.95,20 20,20 h 160 c 11.05,0 20,-8.95 20,-20 V 60 c 0,-11.05 -8.95,-20 -20,-20 z m 0,40 -80,50 L 40,80 V 60 l 80,50 80,-50 z"
id="path2"
style="opacity:0.8;fill:#ffffff;fill-opacity:1;stroke-width:5" />
<g
id="g846">
<ellipse
id="ellipse16"
ry="40.319271"
rx="40.343189"
cy="176.31927"
cx="196.3432"
style="fill:#e04f5f;stroke-width:0.427111" />
<g
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:64px;line-height:1.25;font-family:'sf pro d';-inkscape-font-specification:'sf pro d';letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect887);fill:#000000;fill-opacity:1;stroke:none"
id="text885"
transform="translate(0,-0.98869551)"
aria-label="6">
<path
id="path840"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#ffffff"
d="m 197.82422,200.49547 c 10.0625,0 17.375,-6.65625 17.375,-16 0,-8.46875 -5.96875,-14.6875 -14.6875,-14.6875 -6.09375,0 -10.53125,3.0625 -12.28125,7.25 h -0.1875 c -0.0312,-9.875 3.21875,-16.21875 9.78125,-16.21875 3.71875,0 6.40625,1.875 7.46875,5.09375 h 9.3125 c -1.25,-7.4375 -8,-12.5625 -16.75,-12.5625 -11.71875,0 -18.84375,9 -18.84375,23.9375 0,15.5625 8.03125,23.1875 18.8125,23.1875 z m -0.125,-7.5 c -4.625,0 -8.25,-3.625 -8.25,-8.28125 0,-4.59375 3.5625,-7.9375 8.34375,-7.9375 4.71875,0 8.21875,3.375 8.21875,8.125 -0.0312,4.53125 -3.6875,8.09375 -8.3125,8.09375 z" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

@@ -0,0 +1,100 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
viewBox="0 0 240 240"
version="1.1"
id="svg4"
sodipodi:docname="email-7.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8">
<rect
id="rect887"
height="76.821962"
width="72.691548"
y="140.43247"
x="160.68127" />
<rect
id="rect881"
height="42.253372"
width="57.559134"
y="165.94589"
x="180.14568" />
</defs>
<sodipodi:namedview
inkscape:document-rotation="0"
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0.65098039"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="false"
inkscape:zoom="2.2645626"
inkscape:cx="118.93231"
inkscape:cy="121.34259"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="g877" />
<g
id="g877">
<g
id="g854">
<path
d="M 200,40 H 40 C 28.95,40 20.1,48.95 20.1,60 L 20,180 c 0,11.05 8.95,20 20,20 h 160 c 11.05,0 20,-8.95 20,-20 V 60 c 0,-11.05 -8.95,-20 -20,-20 z m 0,40 -80,50 L 40,80 V 60 l 80,50 80,-50 z"
id="path2"
style="opacity:0.8;fill:#ffffff;fill-opacity:1;stroke-width:5" />
<text
xml:space="preserve"
id="text879"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect881);fill:#000000;fill-opacity:1;stroke:none;" />
<g
id="g846">
<ellipse
id="ellipse16"
ry="40.319271"
rx="40.343189"
cy="176.31927"
cx="196.3432"
style="fill:#e04f5f;stroke-width:0.427111" />
<g
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:64px;line-height:1.25;font-family:'sf pro d';-inkscape-font-specification:'sf pro d';letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect887);fill:#000000;fill-opacity:1;stroke:none"
id="text885"
transform="translate(0,-0.98869551)"
aria-label="7">
<path
id="path840"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#ffffff"
d="m 184.24609,199.49547 h 9.90625 l 18.8125,-37.5 v -7.59375 h -32.25 v 7.5 h 22.9375 v 0.1875 z" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

@@ -0,0 +1,100 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
viewBox="0 0 240 240"
version="1.1"
id="svg4"
sodipodi:docname="email-8.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8">
<rect
id="rect887"
height="76.821962"
width="72.691548"
y="140.43247"
x="160.68127" />
<rect
id="rect881"
height="42.253372"
width="57.559134"
y="165.94589"
x="180.14568" />
</defs>
<sodipodi:namedview
inkscape:document-rotation="0"
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0.65098039"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="false"
inkscape:zoom="2.2645626"
inkscape:cx="118.93231"
inkscape:cy="121.34259"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="g877" />
<g
id="g877">
<g
id="g854">
<path
d="M 200,40 H 40 C 28.95,40 20.1,48.95 20.1,60 L 20,180 c 0,11.05 8.95,20 20,20 h 160 c 11.05,0 20,-8.95 20,-20 V 60 c 0,-11.05 -8.95,-20 -20,-20 z m 0,40 -80,50 L 40,80 V 60 l 80,50 80,-50 z"
id="path2"
style="opacity:0.8;fill:#ffffff;fill-opacity:1;stroke-width:5" />
<text
xml:space="preserve"
id="text879"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect881);fill:#000000;fill-opacity:1;stroke:none;" />
<g
id="g846">
<ellipse
id="ellipse16"
ry="40.319271"
rx="40.343189"
cy="176.31927"
cx="196.3432"
style="fill:#e04f5f;stroke-width:0.427111" />
<g
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:64px;line-height:1.25;font-family:'sf pro d';-inkscape-font-specification:'sf pro d';letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect887);fill:#000000;fill-opacity:1;stroke:none"
id="text885"
transform="translate(0,-0.98869551)"
aria-label="8">
<path
id="path840"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#ffffff"
d="m 197.02734,200.49547 c 10.75,0 18.28125,-5.375 18.28125,-13.1875 0,-5.9375 -4.34375,-10.3125 -10.5,-11.53125 v -0.1875 c 5.28125,-1.3125 8.84375,-5.1875 8.84375,-10.03125 0,-7.0625 -6.84375,-12.15625 -16.625,-12.15625 -9.78125,0 -16.65625,5.125 -16.65625,12.125 0,4.90625 3.59375,8.78125 8.90625,10.0625 v 0.1875 c -6.15625,1.1875 -10.53125,5.5625 -10.53125,11.5 0,7.8125 7.5,13.21875 18.28125,13.21875 z m 0,-27.75 c -4.28125,0 -7.3125,-2.5625 -7.3125,-6.25 0,-3.71875 3.03125,-6.28125 7.3125,-6.28125 4.25,0 7.3125,2.5625 7.3125,6.28125 0,3.6875 -3.0625,6.25 -7.3125,6.25 z m 0,20.875 c -4.96875,0 -8.4375,-2.9375 -8.4375,-7.03125 0,-4.03125 3.46875,-6.96875 8.4375,-6.96875 4.96875,0 8.40625,2.90625 8.40625,6.96875 0,4.09375 -3.4375,7.03125 -8.40625,7.03125 z" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

@@ -0,0 +1,104 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
viewBox="0 0 240 240"
version="1.1"
id="svg4"
sodipodi:docname="email-9.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8">
<rect
id="rect887"
height="76.821962"
width="72.691548"
y="140.43247"
x="160.68127" />
<rect
id="rect881"
height="42.253372"
width="57.559134"
y="165.94589"
x="180.14568" />
</defs>
<sodipodi:namedview
inkscape:document-rotation="0"
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0.65098039"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="false"
inkscape:zoom="2.2645626"
inkscape:cx="118.93231"
inkscape:cy="121.34259"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="g877" />
<g
id="g877">
<g
id="g858">
<path
d="M 200,40 H 40 C 28.95,40 20.1,48.95 20.1,60 L 20,180 c 0,11.05 8.95,20 20,20 h 160 c 11.05,0 20,-8.95 20,-20 V 60 c 0,-11.05 -8.95,-20 -20,-20 z m 0,40 -80,50 L 40,80 V 60 l 80,50 80,-50 z"
id="path2"
style="opacity:0.8;fill:#ffffff;fill-opacity:1;stroke-width:5" />
<text
xml:space="preserve"
id="text879"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect881);fill:#000000;fill-opacity:1;stroke:none;" />
<g
id="g849">
<ellipse
id="ellipse16"
ry="40.319271"
rx="40.343189"
cy="176.31927"
cx="196.3432"
style="fill:#e04f5f;stroke-width:0.427111" />
<g
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:61.3333px;line-height:1.25;font-family:'sf pro d';-inkscape-font-specification:'sf pro d';letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect887);fill:#000000;fill-opacity:1;stroke:none"
id="text885"
transform="translate(0,-0.98869551)"
aria-label="9+">
<path
id="path840"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:56px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#ffffff"
d="m 178.21484,197.90945 c 10.25391,0 16.46094,-7.875 16.46094,-20.94531 0,-14.41016 -7.76562,-20.28907 -16.46094,-20.28907 -8.80468,0 -15.20312,5.82422 -15.20312,14 0,7.6836 5.76953,12.87891 13.09765,12.87891 5.16797,0 9.07813,-2.57031 10.5,-6.39844 h 0.16407 c 0.0547,8.47656 -2.59766,14.21875 -8.53125,14.21875 -3.3086,0 -5.74219,-1.5039 -6.61719,-4.32031 h -8.14844 c 1.03906,6.39844 7,10.85547 14.73828,10.85547 z m 0.0273,-20.48047 c -4.12891,0 -7.19141,-2.95313 -7.19141,-7.08203 0,-3.99219 3.19922,-7.08203 7.27344,-7.08203 4.04687,0 7.24609,3.14453 7.24609,7.21875 0,4.04687 -3.17187,6.94531 -7.32812,6.94531 z" />
<path
id="path842"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:56px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#ffffff"
d="m 218.65625,184.70242 h 10.63672 v -6.97266 h -10.63672 v -11.18359 h -7.13672 v 11.18359 h -10.60937 v 6.97266 h 10.60937 v 11.15625 h 7.13672 z" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

@@ -0,0 +1,100 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
viewBox="0 0 240 240"
version="1.1"
id="svg4"
sodipodi:docname="email-99.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8">
<rect
id="rect887"
height="76.821962"
width="72.691548"
y="140.43247"
x="160.68127" />
<rect
id="rect881"
height="42.253372"
width="57.559134"
y="165.94589"
x="180.14568" />
</defs>
<sodipodi:namedview
inkscape:document-rotation="0"
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0.65098039"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="false"
inkscape:zoom="2.2645626"
inkscape:cx="118.93231"
inkscape:cy="121.34259"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="g877" />
<g
id="g877">
<text
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect881);fill:#000000;fill-opacity:1;stroke:none;"
id="text879"
xml:space="preserve" />
<g
id="g891">
<path
d="M 200,40 H 40 C 28.95,40 20.1,48.95 20.1,60 L 20,180 c 0,11.05 8.95,20 20,20 h 160 c 11.05,0 20,-8.95 20,-20 V 60 c 0,-11.05 -8.95,-20 -20,-20 z m 0,40 -80,50 L 40,80 V 60 l 80,50 80,-50 z"
id="path2"
style="opacity:0.8;fill:#ffffff;fill-opacity:1;stroke-width:5" />
<g
id="g884">
<ellipse
id="ellipse16"
ry="40.319271"
rx="40.343189"
cy="176.31927"
cx="196.3432"
style="fill:#e04f5f;stroke-width:0.427111" />
<g
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:61.3333px;line-height:1.25;font-family:'sf pro d';-inkscape-font-specification:'sf pro d';letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect887);fill:#000000;fill-opacity:1;stroke:none"
id="text885"
transform="translate(0,-0.98869551)"
aria-label="9">
<path
id="path878"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#ffffff"
d="m 196.26367,197.99278 c 11.23047,0 18.02864,-8.62499 18.02864,-22.94009 0,-15.78255 -8.50521,-22.22134 -18.02864,-22.22134 -9.64322,0 -16.65103,6.3789 -16.65103,15.33332 0,8.41536 6.31901,14.10546 14.34504,14.10546 5.66016,0 9.94271,-2.8151 11.5,-7.00781 h 0.17969 c 0.0599,9.28385 -2.84506,15.57291 -9.34375,15.57291 -3.6237,0 -6.28906,-1.64713 -7.24739,-4.73177 h -8.92448 c 1.13802,7.00781 7.66667,11.88932 16.14192,11.88932 z m 0.03,-22.43098 c -4.52213,0 -7.8763,-3.23437 -7.8763,-7.7565 0,-4.3724 3.50391,-7.75651 7.96614,-7.75651 4.43229,0 7.9362,3.44401 7.9362,7.90625 0,4.43229 -3.47396,7.60676 -8.02604,7.60676 z" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

@@ -0,0 +1,117 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
height="240"
width="240"
sodipodi:docname="technology.svg"
xml:space="preserve"
viewBox="0 0 239.99999 239.99999"
y="0px"
x="0px"
id="Layer_1"
version="1.1"><metadata
id="metadata90"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs88" /><sodipodi:namedview
inkscape:current-layer="Layer_1"
inkscape:window-maximized="0"
inkscape:window-y="28"
inkscape:window-x="45"
inkscape:cy="249.34781"
inkscape:cx="44.809353"
inkscape:zoom="0.61363547"
inkscape:pagecheckerboard="true"
showgrid="false"
id="namedview86"
inkscape:window-height="740"
inkscape:window-width="1321"
inkscape:pageshadow="2"
inkscape:pageopacity="0"
guidetolerance="10"
gridtolerance="10"
objecttolerance="10"
borderopacity="1"
bordercolor="#666666"
pagecolor="#ffffff" />
<g
style="fill:#fffffa;fill-opacity:1;opacity:0.8"
transform="matrix(0.42613576,0,0,0.42613576,20,19.999787)"
id="g53">
<g
style="fill:#fffffa;fill-opacity:1"
id="g51">
<path
style="fill:#fffffa;fill-opacity:1"
id="path49"
d="m 465.069,173.152 0.244,-0.305 C 448.222,159.243 427.088,142.408 405,124.8 V 85.334 C 405,61.77 385.897,42.667 362.333,42.667 H 302.188 C 280.769,25.495 265.709,13.345 263.343,11.248 254.869,3.753 244.768,0.004 234.671,0 224.565,-0.004 214.463,3.746 206,11.248 203.634,13.346 188.574,25.495 167.155,42.667 H 106.667 C 83.103,42.667 64,61.77 64,85.334 v 40.003 c -21.846,17.415 -43.059,34.044 -59.979,47.51 l 0.243,0.305 C 1.777,175.152 0,177.923 0,181.195 v 245.452 c 0,23.576 19.112,42.688 42.688,42.688 h 383.979 c 23.564,0 42.667,-19.102 42.667,-42.667 V 181.195 c 0,-3.272 -1.778,-6.043 -4.265,-8.043 z M 220.146,27.225 c 5.667,-5.003 18.75,-9.12 29.052,0.01 1.65,1.46 8.645,7.148 18.924,15.432 h -66.908 c 10.285,-8.287 17.282,-13.98 18.932,-15.442 z m -81.479,79.442 h 191.667 c 5.896,0 10.667,4.771 10.667,10.667 0,5.896 -4.771,10.667 -10.667,10.667 H 138.667 c -5.896,0 -10.667,-4.771 -10.667,-10.667 0,-5.896 4.771,-10.667 10.667,-10.667 z m 0,64 h 191.667 c 5.896,0 10.667,4.771 10.667,10.667 0,5.896 -4.771,10.667 -10.667,10.667 H 138.667 c -5.896,0 -10.667,-4.771 -10.667,-10.667 0,-5.896 4.771,-10.667 10.667,-10.667 z M 288,245.334 c 0,5.896 -4.771,10.667 -10.667,10.667 h -86 c -5.896,0 -10.667,-4.771 -10.667,-10.667 0,-5.896 4.771,-10.667 10.667,-10.667 h 86 c 5.896,0 10.667,4.771 10.667,10.667 z m -38.802,89.82 c -2.573,2.283 -7.938,6.117 -14.865,6.117 -5.063,0 -9.948,-2.052 -14.531,-6.117 C 178.438,298.507 63.305,208.606 27.927,181.092 c 8.322,-6.626 20.974,-16.703 35.74,-28.471 v 24.214 c 0,3.281 1.51,6.385 4.094,8.406 43.469,33.979 122.021,95.844 159.771,128.417 2,1.729 4.49,2.594 6.969,2.594 2.479,0 4.958,-0.865 6.958,-2.583 C 279.021,281.294 357.48,219.617 400.896,185.721 403.49,183.7 405,180.596 405,177.315 V 152.09 c 15.044,11.99 27.953,22.272 36.397,28.996 -35.476,27.544 -151.083,117.663 -192.199,154.068 z" />
</g>
</g>
<g
style="opacity:0.8"
id="g55">
</g>
<g
style="opacity:0.8"
id="g57">
</g>
<g
style="opacity:0.8"
id="g59">
</g>
<g
style="opacity:0.8"
id="g61">
</g>
<g
style="opacity:0.8"
id="g63">
</g>
<g
style="opacity:0.8"
id="g65">
</g>
<g
style="opacity:0.8"
id="g67">
</g>
<g
style="opacity:0.8"
id="g69">
</g>
<g
style="opacity:0.8"
id="g71">
</g>
<g
style="opacity:0.8"
id="g73">
</g>
<g
style="opacity:0.8"
id="g75">
</g>
<g
style="opacity:0.8"
id="g77">
</g>
<g
style="opacity:0.8"
id="g79">
</g>
<g
style="opacity:0.8"
id="g81">
</g>
<g
style="opacity:0.8"
id="g83">
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
sodipodi:docname="ic_email_48px.svg"
id="svg4"
version="1.1"
viewBox="0 0 240 240"
height="240"
width="240">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
inkscape:current-layer="svg4"
inkscape:window-maximized="1"
inkscape:window-y="28"
inkscape:window-x="45"
inkscape:cy="85.87193"
inkscape:cx="-95.622868"
inkscape:zoom="0.75889096"
inkscape:pagecheckerboard="true"
showgrid="false"
id="namedview6"
inkscape:window-height="740"
inkscape:window-width="1321"
inkscape:pageshadow="2"
inkscape:pageopacity="0"
guidetolerance="10"
gridtolerance="10"
objecttolerance="10"
borderopacity="1"
bordercolor="#666666"
pagecolor="#ffffff" />
<path
style="opacity:0.8;fill:#ffffff;fill-opacity:1;stroke-width:5"
id="path2"
d="M 200,40 H 40 C 28.95,40 20.1,48.95 20.1,60 L 20,180 c 0,11.05 8.95,20 20,20 h 160 c 11.05,0 20,-8.95 20,-20 V 60 c 0,-11.05 -8.95,-20 -20,-20 z m 0,40 -80,50 L 40,80 V 60 l 80,50 80,-50 z" />
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

+410
View File
@@ -0,0 +1,410 @@
local awful = require('awful')
local gears = require('gears')
local wibox = require('wibox')
local naughty = require('naughty')
local beautiful = require('beautiful')
local dpi = beautiful.xresources.apply_dpi
local config_dir = gears.filesystem.get_configuration_dir()
local widget_icon_dir = config_dir .. 'widget/email/icons/'
local config = require('configuration.config')
local secrets = {
email_address = config.widget.email.address,
app_password = config.widget.email.app_password,
imap_server = config.widget.email.imap_server,
port = config.widget.email.port
}
local unread_email_count = 0
local startup_show = true
local scroll_container = function(widget)
return wibox.widget {
widget,
id = 'scroll_container',
max_size = 345,
speed = 75,
expand = true,
direction = 'h',
step_function = wibox.container.scroll
.step_functions.waiting_nonlinear_back_and_forth,
fps = 30,
layout = wibox.container.scroll.horizontal,
}
end
local email_icon_widget = wibox.widget {
{
id = 'icon',
image = widget_icon_dir .. 'email.svg',
resize = true,
forced_height = dpi(45),
forced_width = dpi(45),
widget = wibox.widget.imagebox,
},
layout = wibox.layout.fixed.horizontal
}
local email_from_text = wibox.widget {
font = 'Inter Regular 10',
markup = 'From:',
align = 'left',
valign = 'center',
widget = wibox.widget.textbox
}
local email_recent_from = wibox.widget {
font = 'Inter Regular 10',
markup = 'loading@stdout.sh',
align = 'left',
valign = 'center',
widget = wibox.widget.textbox
}
local email_subject_text = wibox.widget {
font = 'Inter Regular 10',
markup = 'Subject:',
align = 'left',
valign = 'center',
widget = wibox.widget.textbox
}
local email_recent_subject = wibox.widget {
font = 'Inter Regular 10',
markup = 'Loading data',
align = 'left',
valign = 'center',
widget = wibox.widget.textbox
}
local email_date_text = wibox.widget {
font = 'Inter Regular 10',
markup = 'Local Date:',
align = 'left',
valign = 'center',
widget = wibox.widget.textbox
}
local email_recent_date = wibox.widget {
font = 'Inter Regular 10',
markup = 'Loading date...',
align = 'left',
valign = 'center',
widget = wibox.widget.textbox
}
local email_report = wibox.widget{
{
{
layout = wibox.layout.fixed.horizontal,
spacing = dpi(10),
{
layout = wibox.layout.align.vertical,
expand = 'none',
nil,
email_icon_widget,
nil
},
{
layout = wibox.layout.align.vertical,
expand = 'none',
nil,
{
layout = wibox.layout.fixed.vertical,
{
email_from_text,
scroll_container(email_recent_from),
spacing = dpi(5),
layout = wibox.layout.fixed.horizontal
},
{
email_subject_text,
scroll_container(email_recent_subject),
spacing = dpi(5),
layout = wibox.layout.fixed.horizontal
},
{
email_date_text,
scroll_container(email_recent_date),
spacing = dpi(5),
layout = wibox.layout.fixed.horizontal
}
},
nil
}
},
margins = dpi(10),
widget = wibox.container.margin
},
forced_height = dpi(92),
bg = beautiful.groups_bg,
shape = function(cr, width, height)
gears.shape.partially_rounded_rect(cr, width, height, true, true, true, true, beautiful.groups_radius)
end,
widget = wibox.container.background
}
local email_details_tooltip = awful.tooltip
{
text = 'Loading...',
objects = {email_icon_widget},
mode = 'outside',
align = 'right',
preferred_positions = {'left', 'right', 'top', 'bottom'},
margin_leftright = dpi(8),
margin_topbottom = dpi(8)
}
local fetch_email_command = [[
python3 - <<END
import imaplib
import email
import datetime
import re
import sys
from email.policy import default
def process_mailbox(M):
rv, data = M.search(None, "(UNSEEN)")
if rv != 'OK':
print ("No messages found!")
return
for num in reversed(data[0].split()):
rv, data = M.fetch(num, '(BODY.PEEK[])')
if rv != 'OK':
print ("ERROR getting message", num)
return
msg = email.message_from_bytes(data[0][1], policy=default)
print ('From:', msg['From'])
print ('Subject: %s' % (msg['Subject']))
date_tuple = email.utils.parsedate_tz(msg['Date'])
if date_tuple:
local_date = datetime.datetime.fromtimestamp(email.utils.mktime_tz(date_tuple))
print ("Local Date:", local_date.strftime("%a, %H:%M:%S %b %d, %Y") + "\n")
# with code below you can process text of email
# if msg.is_multipart():
# for payload in msg.get_payload():
# if payload.get_content_maintype() == 'text':
# print payload.get_payload()
# else:
# print msg.get_payload()
try:
M=imaplib.IMAP4_SSL("]] .. secrets.imap_server .. [[", ]] .. secrets.port .. [[)
M.login("]] .. secrets.email_address .. [[","]] .. secrets.app_password .. [[")
status, counts = M.status("INBOX","(MESSAGES UNSEEN)")
rv, data = M.select("INBOX")
if rv == 'OK':
unread = re.search(r'UNSEEN\s(\d+)', counts[0].decode('utf-8')).group(1)
print ("Unread Count: " + unread)
process_mailbox(M)
M.close()
M.logout()
except Exception as e:
if e:
print (e)
END
]]
local notify_all_unread_email = function(email_data)
local unread_counter = email_data:match('Unread Count: (.-)From:'):sub(1, -2)
local email_data = email_data:match('(From:.*)'):sub(1, -2)
local title = nil
if tonumber(unread_email_count) > 1 then
title = 'You have ' .. unread_counter .. ' unread emails!'
else
title = 'You have ' .. unread_counter .. ' unread email!'
end
naughty.notification ({
app_name = 'Email',
title = title,
message = email_data,
timeout = 30,
icon = widget_icon_dir .. 'email-unread.svg'
})
end
local notify_new_email = function(count, from, subject)
if not startup_show and (tonumber(count) > tonumber(unread_email_count)) then
unread_email_count = tonumber(count)
local message = "From: " .. from ..
"\nSubject: " .. subject
naughty.notification ({
app_name = 'Email',
title = 'You have a new unread email!',
message = message,
timeout = 10,
icon = widget_icon_dir .. 'email-unread.svg'
})
else
unread_email_count = tonumber(count)
end
end
local set_email_data_tooltip = function(email_data)
local email_data = email_data:match('(From:.*)')
local counter = "<span font='Inter Regular 10'>Unread Count: </span>" .. unread_email_count
email_details_tooltip:set_markup(counter .. '\n\n' .. email_data)
end
local set_widget_markup = function(from, subject, date, tooltip)
email_recent_from:set_markup(from:gsub('%\n', ''))
email_recent_subject:set_markup(subject:gsub('%\n', ''))
email_recent_date:set_markup(date:gsub('%\n', ''))
if tooltip then
email_details_tooltip:set_markup(tooltip)
end
end
local set_no_connection_msg = function()
set_widget_markup(
'message@stderr.sh',
'Check network connection!',
os.date('%d-%m-%Y %H:%M:%S'),
'No internet connection!'
)
end
local set_invalid_credentials_msg = function()
set_widget_markup(
'message@stderr.sh',
'Invalid Credentials!',
os.date('%d-%m-%Y %H:%M:%S'),
'You have an invalid credentials!'
)
end
local set_latest_email_data = function(email_data)
local unread_count = email_data:match('Unread Count: (.-)From:'):sub(1, -2)
local recent_from = email_data:match('From: (.-)Subject:'):sub(1, -2)
local recent_subject = email_data:match('Subject: (.-)Local Date:'):sub(1, -2)
local recent_date = email_data:match('Local Date: (.-)\n')
recent_from = recent_from:match('<(.*)>') or recent_from:match('&lt;(.*)&gt;') or recent_from
local count = tonumber(unread_count)
if count > 0 and count <= 9 then
email_icon_widget.icon:set_image(widget_icon_dir .. 'email-'.. tostring(count) .. '.svg')
elseif count > 9 then
email_icon_widget.icon:set_image(widget_icon_dir .. 'email-9+.svg')
end
set_widget_markup(
recent_from,
recent_subject,
recent_date
)
notify_new_email(unread_count, recent_from, recent_subject)
end
local set_empty_inbox_msg = function()
set_widget_markup(
'empty@stdout.sh',
'Empty inbox',
os.date('%d-%m-%Y %H:%M:%S'),
'Empty inbox.'
)
end
local fetch_email_data = function()
awful.spawn.easy_async_with_shell(
fetch_email_command,
function(stdout)
stdout = gears.string.xml_escape(stdout:sub(1, -2))
if stdout:match('Temporary failure in name resolution') then
set_no_connection_msg()
return
elseif stdout:match('Invalid credentials') then
set_invalid_credentials_msg()
return
elseif stdout:match('Unread Count: 0') then
email_icon_widget.icon:set_image(widget_icon_dir .. 'email.svg')
set_empty_inbox_msg()
return
elseif not stdout:match('Unread Count: (.-)From:') then
return
elseif not stdout or stdout == '' then
return
end
set_latest_email_data(stdout)
set_email_data_tooltip(stdout)
if startup_show then
notify_all_unread_email(stdout)
startup_show = false
end
end
)
end
local set_missing_secrets_msg = function()
set_widget_markup(
'message@stderr.sh',
'Credentials are missing!',
os.date('%d-%m-%Y %H:%M:%S'),
'Missing credentials!'
)
end
local check_secrets = function()
if secrets.email_address == '' or secrets.app_password == '' or secrets.imap_server == '' or secrets.port == '' then
set_missing_secrets_msg()
return
else
fetch_email_data()
end
end
check_secrets()
local update_widget_timer = gears.timer {
timeout = 30,
autostart = true,
call_now = true,
callback = function()
check_secrets()
end
}
email_report:connect_signal(
'mouse::enter',
function()
check_secrets()
end
)
awesome.connect_signal(
'system::network_connected',
function()
gears.timer.start_new(
5,
function()
check_secrets()
end
)
end
)
return email_report
@@ -0,0 +1,68 @@
local awful = require('awful')
local wibox = require('wibox')
local gears = require('gears')
local beautiful = require('beautiful')
local dpi = beautiful.xresources.apply_dpi
local clickable_container = require('widget.clickable-container')
local icons = require('theme.icons')
local create_widget = function()
local exit_widget = {
{
{
{
image = icons.logout,
resize = true,
widget = wibox.widget.imagebox
},
top = dpi(12),
bottom = dpi(12),
widget = wibox.container.margin
},
{
text = 'End work session',
font = 'Inter Regular 12',
align = 'left',
valign = 'center',
widget = wibox.widget.textbox
},
spacing = dpi(24),
layout = wibox.layout.fixed.horizontal
},
left = dpi(24),
right = dpi(24),
forced_height = dpi(48),
widget = wibox.container.margin
}
local exit_button = wibox.widget {
{
exit_widget,
widget = clickable_container
},
bg = beautiful.groups_bg,
shape = function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, beautiful.groups_radius)
end,
widget = wibox.container.background
}
exit_button:buttons(
awful.util.table.join(
awful.button(
{},
1,
nil,
function()
screen.primary.left_panel:toggle()
awesome.emit_signal('module::exit_screen:show')
end
)
)
)
return exit_button
end
return create_widget
@@ -0,0 +1,61 @@
local wibox = require('wibox')
local gears = require('gears')
local beautiful = require('beautiful')
local watch = require('awful.widget.watch')
local icons = require('theme.icons')
local dpi = beautiful.xresources.apply_dpi
local slider = wibox.widget {
nil,
{
id = 'hdd_usage',
max_value = 100,
value = 29,
forced_height = dpi(2),
color = beautiful.fg_normal,
background_color = beautiful.groups_bg,
shape = gears.shape.rounded_rect,
widget = wibox.widget.progressbar
},
nil,
expand = 'none',
layout = wibox.layout.align.vertical
}
watch(
[[bash -c "df -h /home|grep '^/' | awk '{print $5}'"]],
10,
function(_, stdout)
local space_consumed = stdout:match('(%d+)')
slider.hdd_usage:set_value(tonumber(space_consumed))
collectgarbage('collect')
end
)
local harddrive_meter = wibox.widget {
{
{
{
image = icons.harddisk,
resize = true,
widget = wibox.widget.imagebox
},
top = dpi(12),
bottom = dpi(12),
widget = wibox.container.margin
},
slider,
spacing = dpi(24),
layout = wibox.layout.fixed.horizontal
},
left = dpi(24),
right = dpi(24),
forced_height = dpi(48),
widget = wibox.container.margin
}
return harddrive_meter
@@ -0,0 +1,128 @@
local awful = require('awful')
local wibox = require('wibox')
local gears = require('gears')
local beautiful = require('beautiful')
local dpi = beautiful.xresources.apply_dpi
local clickable_container = require('widget.clickable-container')
-- Variable used for switching panel modes
right_panel_mode = 'today_mode'
local active_button = beautiful.groups_title_bg
local inactive_button = beautiful.transparent
local notif_text = wibox.widget
{
text = 'Notifications',
font = 'Inter Bold 11',
align = 'center',
valign = 'center',
widget = wibox.widget.textbox
}
local notif_button = clickable_container(
wibox.container.margin(
notif_text, dpi(0), dpi(0), dpi(7), dpi(7)
)
)
local wrap_notif = wibox.widget {
notif_button,
forced_width = dpi(140),
bg = inactive_button,
border_width = dpi(1),
border_color = beautiful.groups_title_bg,
shape = function(cr, width, height)
gears.shape.partially_rounded_rect(
cr, width, height, false, true, true, false, beautiful.groups_radius
)
end,
widget = wibox.container.background
}
local today_text = wibox.widget {
text = 'Today',
font = 'Inter Bold 11',
align = 'center',
valign = 'center',
widget = wibox.widget.textbox
}
local today_button = clickable_container(
wibox.container.margin(
today_text, dpi(0), dpi(0), dpi(7), dpi(7)
)
)
local wrap_today = wibox.widget {
today_button,
forced_width = dpi(140),
bg = active_button,
border_width = dpi(1),
border_color = beautiful.groups_title_bg,
shape = function(cr, width, height)
gears.shape.partially_rounded_rect(
cr, width, height, true, false, false, true, beautiful.groups_radius
)
end,
widget = wibox.container.background
}
local switcher = wibox.widget {
expand = 'none',
layout = wibox.layout.fixed.horizontal,
wrap_today,
wrap_notif
}
function switch_rdb_pane(right_panel_mode)
local focused = awful.screen.focused()
if right_panel_mode == 'notif_mode' then
-- Update button color
wrap_notif.bg = active_button
wrap_today.bg = inactive_button
-- Change panel content of right-panel.lua
focused.right_panel:switch_pane(right_panel_mode)
elseif right_panel_mode == 'today_mode' then
-- Update button color
wrap_notif.bg = inactive_button
wrap_today.bg = active_button
-- Change panel content of right-panel.lua
focused.right_panel:switch_pane(right_panel_mode)
end
end
notif_button:buttons(
gears.table.join(
awful.button(
{},
1,
nil,
function()
switch_rdb_pane('notif_mode')
end
)
)
)
today_button:buttons(
gears.table.join(
awful.button(
{},
1,
nil,
function()
switch_rdb_pane('today_mode')
end
)
)
)
return switcher
@@ -0,0 +1,111 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="Capa_1"
enable-background="new 0 0 374.706 374.706"
height="240"
viewBox="0 0 175.64344 175.64344"
width="240"
class=""
version="1.1"
sodipodi:docname="notification.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata16">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs14" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview12"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.4609375"
inkscape:cx="256"
inkscape:cy="256"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="Capa_1" />
<g
id="g9"
transform="matrix(0.38752239,0,0,0.38752239,14.249432,12.505775)">
<path
id="path-1_59_"
d="m 80.294,53.529 h 294.412 v 53.529 H 80.294 Z"
transform="translate(4,3)"
data-original="#000000"
class="active-path"
data-old_color="#000000"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 80.294,160.588 h 267.647 v 53.529 H 80.294 Z"
data-original="#000000"
class="active-path"
data-old_color="#000000"
id="path3"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
id="path-1_58_"
d="m 80.294,267.647 h 294.412 v 53.529 H 80.294 Z"
transform="translate(4,11)"
data-original="#000000"
class="active-path"
data-old_color="#000000"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
id="path-2_11_"
d="m 0,53.529 h 53.529 v 53.529 H 0 Z"
transform="translate(1,3)"
data-original="#000000"
class="active-path"
data-old_color="#000000"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
id="path-2_10_"
d="m 0,160.588 h 53.529 v 53.529 H 0 Z"
transform="translate(1,7)"
data-original="#000000"
class="active-path"
data-old_color="#000000"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
id="path-2_9_"
d="m 0,267.647 h 53.529 v 53.529 H 0 Z"
transform="translate(1,11)"
data-original="#000000"
class="active-path"
data-old_color="#000000"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

@@ -0,0 +1,47 @@
local awful = require('awful')
local wibox = require('wibox')
local gears = require('gears')
local dpi = require('beautiful').xresources.apply_dpi
local config_dir = gears.filesystem.get_configuration_dir()
local widget_icon_dir = config_dir .. 'widget/info-center-toggle/icons/'
local clickable_container = require('widget.clickable-container')
local return_button = function()
local widget =
wibox.widget {
{
id = 'icon',
image = widget_icon_dir .. 'info-center.svg',
widget = wibox.widget.imagebox,
resize = true
},
layout = wibox.layout.align.horizontal
}
local widget_button = wibox.widget {
{
widget,
margins = dpi(7),
widget = wibox.container.margin
},
widget = clickable_container
}
widget_button:buttons(
gears.table.join(
awful.button(
{},
1,
nil,
function()
awful.screen.focused().right_panel:toggle()
end
)
)
)
return widget_button
end
return return_button
+51
View File
@@ -0,0 +1,51 @@
local wibox = require('wibox')
local awful = require('awful')
local beautiful = require('beautiful')
local dpi = beautiful.xresources.apply_dpi
local clickable_container = require('widget.clickable-container')
local layout_box = function(s)
local layoutbox = wibox.widget {
{
awful.widget.layoutbox(s),
margins = dpi(7),
widget = wibox.container.margin
},
widget = clickable_container
}
layoutbox:buttons(
awful.util.table.join(
awful.button(
{},
1,
function()
awful.layout.inc(1)
end
),
awful.button(
{},
3,
function()
awful.layout.inc(-1)
end
),
awful.button(
{},
4,
function()
awful.layout.inc(1)
end
),
awful.button(
{},
5,
function()
awful.layout.inc(-1)
end
)
)
)
return layoutbox
end
return layout_box
+19
View File
@@ -0,0 +1,19 @@
local gears = require('gears')
local awful = require('awful')
local wibox = require('wibox')
local config_dir = gears.filesystem.get_configuration_dir()
local widget_icon_dir = config_dir .. 'widget/mpd/icons/'
local album_cover_img = wibox.widget {
{
id = 'cover',
image = widget_icon_dir .. 'vinyl.svg',
resize = true,
clip_shape = gears.shape.rounded_rect,
widget = wibox.widget.imagebox,
},
layout = wibox.layout.fixed.vertical
}
return album_cover_img
@@ -0,0 +1,9 @@
-- Return UI Table
return {
album_cover = require('widget.mpd.content.album-cover'),
progress_bar = require('widget.mpd.content.progress-bar'),
track_time = require('widget.mpd.content.track-time'),
song_info = require('widget.mpd.content.song-info'),
media_buttons = require('widget.mpd.content.media-buttons'),
volume_slider = require('widget.mpd.content.volume-slider'),
}
+121
View File
@@ -0,0 +1,121 @@
local wibox = require('wibox')
local awful = require('awful')
local gears = require('gears')
local beautiful = require('beautiful')
local dpi = beautiful.xresources.apply_dpi
local clickable_container = require('widget.clickable-container')
local config_dir = gears.filesystem.get_configuration_dir()
local widget_icon_dir = config_dir .. 'widget/mpd/icons/'
local media_buttons = {}
media_buttons.play_button_image = wibox.widget {
{
id = 'play',
image = widget_icon_dir .. 'play.svg',
resize = true,
widget = wibox.widget.imagebox
},
layout = wibox.layout.align.horizontal
}
media_buttons.next_button_image = wibox.widget {
{
id = 'next',
image = widget_icon_dir .. 'next.svg',
resize = true,
widget = wibox.widget.imagebox
},
layout = wibox.layout.align.horizontal
}
media_buttons.prev_button_image = wibox.widget {
{
id = 'prev',
image = widget_icon_dir .. 'prev.svg',
resize = true,
widget = wibox.widget.imagebox
},
layout = wibox.layout.align.horizontal
}
media_buttons.repeat_button_image = wibox.widget {
{
id = 'rep',
image = widget_icon_dir .. 'repeat-on.svg',
resize = true,
widget = wibox.widget.imagebox
},
layout = wibox.layout.align.horizontal
}
media_buttons.random_button_image = wibox.widget {
{
id = 'rand',
image = widget_icon_dir .. 'random-on.svg',
resize = true,
widget = wibox.widget.imagebox
},
layout = wibox.layout.align.horizontal
}
media_buttons.play_button = wibox.widget {
{
media_buttons.play_button_image,
margins = dpi(7),
widget = wibox.container.margin
},
widget = clickable_container
}
media_buttons.next_button = wibox.widget {
{
media_buttons.next_button_image,
margins = dpi(10),
widget = wibox.container.margin
},
widget = clickable_container
}
media_buttons.prev_button = wibox.widget {
{
media_buttons.prev_button_image,
margins = dpi(10),
widget = wibox.container.margin
},
widget = clickable_container
}
media_buttons.repeat_button = wibox.widget {
{
media_buttons.repeat_button_image,
margins = dpi(10),
widget = wibox.container.margin
},
widget = clickable_container
}
media_buttons.random_button = wibox.widget {
{
media_buttons.random_button_image,
margins = dpi(10),
widget = wibox.container.margin
},
widget = clickable_container
}
media_buttons.navigate_buttons = wibox.widget {
expand = 'none',
layout = wibox.layout.align.horizontal,
media_buttons.repeat_button,
{
layout = wibox.layout.fixed.horizontal,
media_buttons.prev_button,
media_buttons.play_button,
media_buttons.next_button,
forced_height = dpi(35),
},
media_buttons.random_button,
forced_height = dpi(35),
}
return media_buttons
+21
View File
@@ -0,0 +1,21 @@
local awful = require('awful')
local wibox = require('wibox')
local gears = require('gears')
local beautiful = require('beautiful')
local dpi = beautiful.xresources.apply_dpi
local progressbar = wibox.widget {
{
id = 'music_bar',
max_value = 100,
forced_height = dpi(3),
forced_width = dpi(100),
color = '#ffffff',
background_color = '#ffffff20',
shape = gears.shape.rounded_bar,
widget = wibox.widget.progressbar
},
layout = wibox.layout.stack
}
return progressbar
+64
View File
@@ -0,0 +1,64 @@
local wibox = require('wibox')
local dpi = require('beautiful').xresources.apply_dpi
local song_info = {}
song_info.music_title = wibox.widget {
layout = wibox.layout.align.horizontal,
expand = 'none',
nil,
{
{
id = 'title',
text = 'The song title is here',
font = 'Inter Bold 12',
align = 'center',
valign = 'center',
ellipsize = 'end',
widget = wibox.widget.textbox
},
id = 'scroll_container',
max_size = 345,
speed = 75,
expand = true,
direction = 'h',
step_function = wibox.container.scroll
.step_functions.waiting_nonlinear_back_and_forth,
fps = 60,
layout = wibox.container.scroll.horizontal
},
nil
}
song_info.music_artist = wibox.widget {
layout = wibox.layout.align.horizontal,
expand = 'none',
nil,
{
{
id = 'artist',
text = 'The artist name is here',
font = 'Inter 10',
align = 'center',
valign = 'center',
widget = wibox.widget.textbox
},
id = 'scroll_container',
max_size = 345,
speed = 75,
expand = true,
direction = 'h',
step_function = wibox.container.scroll
.step_functions.waiting_nonlinear_back_and_forth,
layout = wibox.container.scroll.horizontal,
fps = 60
},
nil
}
song_info.music_info = wibox.widget {
layout = wibox.layout.fixed.vertical,
song_info.music_title,
song_info.music_artist
}
return song_info
+37
View File
@@ -0,0 +1,37 @@
local beautiful = require('beautiful')
local gears = require('gears')
local awful = require('awful')
local wibox = require('wibox')
local dpi = beautiful.xresources.apply_dpi
local time_info = {}
time_info.time_status = wibox.widget {
id = 'statustime',
text = '00:00',
font = 'Inter 8',
align = 'center',
valign = 'center',
forced_height = dpi(10),
widget = wibox.widget.textbox
}
time_info.time_duration = wibox.widget {
id = 'durationtime',
text = '00:00',
font = 'Inter 8',
align = 'center',
valign = 'center',
forced_height = dpi(10),
widget = wibox.widget.textbox
}
time_info.time_track = wibox.widget {
expand = 'none',
layout = wibox.layout.align.horizontal,
time_info.time_status,
nil,
time_info.time_duration
}
return time_info
+23
View File
@@ -0,0 +1,23 @@
local wibox = require('wibox')
local awful = require('awful')
local gears = require('gears')
local beautiful = require('beautiful')
local dpi = beautiful.xresources.apply_dpi
local slider = {}
slider.vol_slider = wibox.widget {
bar_shape = gears.shape.rounded_rect,
bar_height = dpi(5),
bar_color = '#ffffff20',
bar_active_color = '#f2f2f2EE',
handle_color = '#ffffff',
handle_shape = gears.shape.circle,
handle_width = dpi(15),
handle_border_color = '#00000012',
handle_border_width = dpi(1),
maximum = 100,
widget = wibox.widget.slider,
}
return slider
+62
View File
@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="240"
viewBox="0 0 240 240"
width="240"
version="1.1"
id="svg6"
sodipodi:docname="music.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#252525"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview8"
showgrid="false"
inkscape:zoom="0.61458333"
inkscape:cx="-149.03738"
inkscape:cy="-9.7452794"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg6"
inkscape:pagecheckerboard="true" />
<path
d="m 0,216 h 24 v 24 H 0 Z"
id="path2"
inkscape:connector-curvature="0"
style="fill:none" />
<path
d="m 120,20 v 117.22222 c -6.55555,-3.77778 -14.11111,-6.11111 -22.222221,-6.11111 -24.555555,0 -44.444444,19.88889 -44.444444,44.44445 0,24.55555 19.888889,44.44444 44.444444,44.44444 24.555561,0 44.444441,-19.88889 44.444441,-44.44444 V 64.444444 h 44.44444 V 20 Z"
id="path4"
style="fill:#ffffff;fill-opacity:0.93333333;stroke-width:11.11111069"
inkscape:connector-curvature="0" />
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

+57
View File
@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
viewBox="0 0 240 240"
version="1.1"
id="svg4"
sodipodi:docname="ic_skip_next_48px.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="4.9166667"
inkscape:cx="24"
inkscape:cy="24"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="M 20,220 161.66667,120 20,20 Z M 186.66667,20 V 220 H 220 V 20 Z"
id="path2"
inkscape:connector-curvature="0"
style="stroke-width:8.33333302;fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

@@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
viewBox="0 0 240.00001 240"
version="1.1"
id="svg4"
sodipodi:docname="ic_pause_48px.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
units="px"
width="240mm"
inkscape:zoom="0.30729167"
inkscape:cx="-372.98936"
inkscape:cy="-268.78861"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="m 34.285715,220 h 57.14286 V 20 H 34.285715 Z M 148.57142,20 v 200 h 57.14287 V 20 Z"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1;stroke-width:7.1428566" />
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

+57
View File
@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
viewBox="0 0 240 240"
version="1.1"
id="svg4"
sodipodi:docname="ic_play_arrow_48px.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="4.9166667"
inkscape:cx="24"
inkscape:cy="24"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="M 41.42857,20 V 220 L 198.57143,120 Z"
id="path2"
inkscape:connector-curvature="0"
style="stroke-width:7.14285707;fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

+57
View File
@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
viewBox="0 0 240 240"
version="1.1"
id="svg4"
sodipodi:docname="ic_skip_previous_48px.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.43457604"
inkscape:cx="-405.81548"
inkscape:cy="18.788525"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="M 20,20 H 53.333333 V 220 H 20 Z M 78.333333,120 220,220 V 20 Z"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1;stroke-width:8.33333302" />
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

+64
View File
@@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg917"
width="240"
height="240"
viewBox="0 0 240 240"
sodipodi:docname="random-off.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata923">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs921" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview919"
showgrid="false"
inkscape:zoom="1.066875"
inkscape:cx="89.045102"
inkscape:cy="266.66666"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg917"
inkscape:pagecheckerboard="true" />
<image
width="200"
height="200"
preserveAspectRatio="none"
style="image-rendering:optimizeQuality"
xlink:href="data:image/png;base64,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 VftMAYIOYi7mwIw8bQ1mi/nXxXzmmN9fLine truncated
id="image925"
x="20"
y="20" />
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

+64
View File
@@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg927"
width="240"
height="240"
viewBox="0 0 240 240"
sodipodi:docname="random-on.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata933">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs931" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview929"
showgrid="false"
inkscape:zoom="0.44250002"
inkscape:cx="195.09291"
inkscape:cy="266.66666"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg927"
inkscape:pagecheckerboard="true" />
<image
width="200"
height="200"
preserveAspectRatio="none"
style="image-rendering:optimizeQuality"
xlink:href="data:image/png;base64,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 1L8p5mK+ADH32QI6y9/Q6Uu4nlpVX7HELine truncated
id="image935"
x="20"
y="20" />
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
viewBox="0 0 240 240"
version="1.1"
id="svg4"
sodipodi:docname="ic_repeat_48px-off.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="1.2291667"
inkscape:cx="-133.946"
inkscape:cy="65.022819"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="m 70,70 h 100 v 30 L 210,60 170,20 V 50 H 50 v 60 H 70 Z M 170,170 H 70 v -30 l -40,40 40,40 v -30 h 120 v -60 h -20 z"
id="path2"
inkscape:connector-curvature="0"
style="stroke-width:5;fill:#ffffff;fill-opacity:0.40000001" />
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
viewBox="0 0 240 240"
version="1.1"
id="svg4"
sodipodi:docname="ic_repeat_48px.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="1.2291667"
inkscape:cx="-133.946"
inkscape:cy="65.022819"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="m 70,70 h 100 v 30 L 210,60 170,20 V 50 H 50 v 60 H 70 Z M 170,170 H 70 v -30 l -40,40 40,40 v -30 h 120 v -60 h -20 z"
id="path2"
inkscape:connector-curvature="0"
style="stroke-width:5;fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

File diff suppressed because it is too large. Load diff

After

Width:  |  Height:  |  Size: 421 KiB

+73
View File
@@ -0,0 +1,73 @@
local gears = require('gears')
local awful = require('awful')
local wibox = require('wibox')
local dpi = require('beautiful').xresources.apply_dpi
local config_dir = gears.filesystem.get_configuration_dir()
local widget_icon_dir = config_dir .. 'widget/mpd/icons/'
local clickable_container = require('widget.clickable-container')
local music_box = require('widget.mpd.music-box')
local toggle_music_box = music_box.toggle_music_box
local return_button = function()
local widget = wibox.widget {
{
id = 'icon',
image = widget_icon_dir .. 'music.svg',
widget = wibox.widget.imagebox,
resize = true
},
layout = wibox.layout.align.horizontal
}
local widget_button = wibox.widget {
{
widget,
margins = dpi(7),
widget = wibox.container.margin
},
widget = clickable_container
}
local music_tooltip = awful.tooltip
{
objects = {widget_button},
text = 'None',
mode = 'outside',
margin_leftright = dpi(8),
margin_topbottom = dpi(8),
align = 'right',
preferred_positions = {'right', 'left', 'top', 'bottom'}
}
widget_button:buttons(
gears.table.join(
awful.button(
{},
1,
nil,
function()
music_tooltip.visible = false
awesome.emit_signal('widget::music', 'mouse')
end
)
)
)
widget_button:connect_signal(
"mouse::enter",
function()
awful.spawn.easy_async_with_shell(
'mpc status',
function(stdout)
music_tooltip.text = string.gsub(stdout, '\n$', '')
end
)
end
)
return widget_button
end
return return_button
+460
View File
@@ -0,0 +1,460 @@
local gears = require('gears')
local awful = require('awful')
local config_dir = gears.filesystem.get_configuration_dir()
local widget_icon_dir = config_dir .. 'widget/mpd/icons/'
local ui_content = require('widget.mpd.content')
local album_cover = ui_content.album_cover
local prog_bar = ui_content.progress_bar
local track_time = ui_content.track_time
local song_info = ui_content.song_info
local vol_slider = ui_content.volume_slider
local media_buttons = ui_content.media_buttons
local apps = require('configuration.apps')
local update_cover = function()
local extract_script = [=[
MUSIC_DIR="$(xdg-user-dir MUSIC)"
TMP_DIR="/tmp/awesomewm/${USER}/"
TMP_COVER_PATH=${TMP_DIR}"cover.jpg"
TMP_SONG="${TMP_DIR}current-song"
CHECK_EXIFTOOL=$(command -v exiftool)
if [ ! -d "${TMP_DIR}" ]; then
mkdir -p "${TMP_DIR}";
fi
if [ ! -z "$CHECK_EXIFTOOL" ]; then
SONG="$MUSIC_DIR/$(mpc -p 6600 --format "%file%" current)"
PICTURE_TAG="-Picture"
if [[ "$SONG" == *".m4a" ]]; then
PICTURE_TAG="-CoverArt"
fi
# Extract album cover using perl-image-exiftool
exiftool -b "$PICTURE_TAG" "$SONG" > "$TMP_COVER_PATH"
else
#Extract image using ffmpeg
cp "$MUSIC_DIR/$(mpc --format %file% current)" "$TMP_SONG"
ffmpeg \
-hide_banner \
-loglevel 0 \
-y \
-i "$TMP_SONG" \
-vf scale=300:-1 \
"$TMP_COVER_PATH" > /dev/null 2>&1
rm "$TMP_SONG"
fi
img_data=$(identify $TMP_COVER_PATH 2>&1)
# Delete the cover.jpg if it's not a valid image
if [[ $img_data == *"insufficient"* ]]; then
rm $TMP_COVER_PATH
fi
if [ -f $TMP_COVER_PATH ]; then
echo $TMP_COVER_PATH;
fi
]=]
awful.spawn.easy_async_with_shell(
extract_script,
function(stdout)
local album_icon = widget_icon_dir .. 'vinyl.svg'
if not (stdout == nil or stdout == '') then
album_icon = stdout:gsub('%\n', '')
end
album_cover.cover:set_image(gears.surface.load_uncached(album_icon))
album_cover:emit_signal('widget::redraw_needed')
album_cover:emit_signal('widget::layout_changed')
collectgarbage('collect')
end
)
end
local update_progress_bar = function()
awful.spawn.easy_async_with_shell(
[[
mpc status | awk 'NR==2 { split($4, a); print a[1]}' | tr -d '[\%\(\)]'
]],
function(stdout)
local progress_bar = prog_bar.music_bar
if stdout ~= nil then
progress_bar:set_value(tonumber(stdout))
else
progress_bar:set_value(0)
end
end
)
end
local update_time_progress = function()
awful.spawn.easy_async_with_shell(
[[
mpc status | awk 'NR==2 { split($3, a, "/"); print a[1]}' | tr -d '[\%\(\)]'
]],
function(stdout)
local time_status = track_time.time_status
if stdout ~= nil then
time_status:set_text(tostring(stdout))
else
time_status:set_text('00:00')
end
end
)
end
local update_time_duration = function()
awful.spawn.easy_async_with_shell(
[[
mpc --format %time% current
]],
function(stdout)
local time_duration = track_time.time_duration
if stdout ~= nil then
time_duration:set_text(tostring(stdout))
else
time_duration:set_text('99:59')
end
end
)
end
local update_file = function()
awful.spawn.easy_async_with_shell(
[[
mpc -f %file% current
]],
function(stdout)
file_name = stdout:gsub('%\n','')
end
)
return file_name
end
local update_title = function()
awful.spawn.easy_async_with_shell(
[[
mpc -f %title% current
]],
function(stdout)
-- Remove new lines
local title = stdout:gsub('%\n', '')
local title_widget = song_info.music_title
local title_text = song_info.music_title:get_children_by_id('title')[1]
-- Make sure it's not null
if not (title == nil or title == '') then
title_text:set_text(title)
else
awful.spawn.easy_async_with_shell(
[[
mpc -f %file% current
]],
function(stdout)
if not (stdout == nil or stdout == '') then
file_name = stdout:gsub('%\n','')
file_name = file_name:sub(1, title:len() - 5) .. ''
title_text:set_text(file_name)
else
-- Set title
title_text:set_text('Play some music!')
end
title_widget:emit_signal('widget::redraw_needed')
title_widget:emit_signal('widget::layout_changed')
end
)
end
title_widget:emit_signal('widget::redraw_needed')
title_widget:emit_signal('widget::layout_changed')
collectgarbage('collect')
end
)
end
local update_artist = function()
awful.spawn.easy_async_with_shell(
[[
mpc -f %artist% current
]],
function(stdout)
-- Remove new lines
local artist = stdout:gsub('%\n', '')
local artist_widget = song_info.music_artist
local artist_text = artist_widget:get_children_by_id('artist')[1]
if not (artist == nil or artist == '') then
artist_text:set_text(artist)
else
awful.spawn.easy_async_with_shell(
[[
mpc -f %file% current
]],
function(stdout)
if not (stdout == nil or stdout == '') then
artist_text:set_text('unknown artist')
else
artist_text:set_text('or play some porn?')
end
artist_widget:emit_signal('widget::redraw_needed')
artist_widget:emit_signal('widget::layout_changed')
end
)
end
artist_widget:emit_signal('widget::redraw_needed')
artist_widget:emit_signal('widget::layout_changed')
end
)
end
local update_volume_slider = function()
awful.spawn.easy_async_with_shell(
[[
mpc volume
]],
function(stdout)
local volume_slider = vol_slider.vol_slider
if stdout:match('n/a') then
return
end
volume_slider:set_value(tonumber(stdout:match('%d+')))
end
)
end
local check_if_playing = function()
awful.spawn.easy_async_with_shell(
[[
mpc status | awk 'NR==2' | grep -o playing
]],
function(stdout)
local play_button_img = media_buttons.play_button_image.play
if not (stdout == nil or stdout == '') then
play_button_img:set_image(widget_icon_dir .. 'pause.svg')
update_volume_slider()
else
play_button_img:set_image(widget_icon_dir .. 'play.svg')
end
end
)
end
local check_repeat_status = function()
awful.spawn.easy_async_with_shell(
[[
mpc status | sed -n '/random/p' | cut -c23-24 | sed 's/^[ \t]*//'
]],
function(stdout)
local repeat_button_img = media_buttons.repeat_button_image.rep
if stdout:match('on') then
repeat_button_img:set_image(widget_icon_dir .. 'repeat-on.svg')
else
repeat_button_img:set_image(widget_icon_dir .. 'repeat-off.svg')
end
end
)
end
local check_random_status = function()
awful.spawn.easy_async_with_shell(
[[
mpc status | sed -n '/random/p' | cut -c37-38 | sed 's/^[ \t]*//'
]],
function(stdout)
local random_button_image = media_buttons.random_button_image.rand
if stdout:match("on") then
random_button_image:set_image(widget_icon_dir .. 'random-on.svg')
else
random_button_image:set_image(widget_icon_dir .. 'random-off.svg')
end
end
)
end
vol_slider.vol_slider:connect_signal(
'property::value',
function()
awful.spawn.easy_async_with_shell(
'mpc volume ' .. vol_slider.vol_slider:get_value(),
function() end
)
end
)
local update_all_content = function()
update_progress_bar()
update_time_progress()
update_time_duration()
update_title()
update_artist()
update_cover()
check_if_playing()
check_repeat_status()
check_random_status()
update_volume_slider()
end
-- Update progress bar and time every N seconds
gears.timer.start_new(
10,
function()
update_progress_bar()
update_time_progress()
return true
end
)
local mpd_startup = [[
# Let's make sure that MPD is running.
if [ -z $(pgrep mpd) ]; then mpd; fi
]]
local mpd_change_event_listener = [[
sh -c '
mpc idleloop player
'
]]
local kill_mpd_change_event_listener = [[
ps x |
grep "mpc idleloop player" |
grep -v grep |
awk '{print $1}' |
xargs kill
]]
awful.spawn.easy_async_with_shell(
mpd_startup,
function ()
awful.spawn.easy_async_with_shell(
kill_mpd_change_event_listener,
function ()
update_all_content()
awful.spawn.with_line_callback(
mpd_change_event_listener,
{
stdout = function(line)
update_all_content()
end
}
)
end
)
end
)
media_buttons.play_button:buttons(
gears.table.join(
awful.button(
{},
1,
nil,
function()
awful.spawn.with_shell('mpc toggle')
end
)
)
)
media_buttons.next_button:buttons(
gears.table.join(
awful.button(
{},
1,
nil,
function()
awful.spawn.with_shell('mpc next')
end
)
)
)
media_buttons.prev_button:buttons(
gears.table.join(
awful.button(
{},
1,
nil,
function()
awful.spawn.with_shell('mpc prev')
end
)
)
)
media_buttons.repeat_button:buttons(
gears.table.join(
awful.button(
{},
1,
nil,
function()
awful.spawn.easy_async_with_shell(
'mpc repeat',
function ()
check_repeat_status()
end
)
end
)
)
)
media_buttons.random_button:buttons(
gears.table.join(
awful.button(
{},
1,
nil,
function()
awful.spawn.easy_async_with_shell(
'mpc random',
function ()
check_random_status()
end
)
end
)
)
)
+158
View File
@@ -0,0 +1,158 @@
local awful = require('awful')
local wibox = require('wibox')
local gears = require('gears')
local beautiful = require('beautiful')
local dpi = beautiful.xresources.apply_dpi
local music_func = {}
screen.connect_signal('request::desktop_decoration', function(s)
-- Set music box geometry
local music_box_margin = dpi(5)
local music_box_height = dpi(375)
local music_box_width = dpi(260)
local music_box_x = nil
s.musicpop = awful.popup {
widget = {
-- Removing this block will cause an error...
},
ontop = true,
visible = false,
type = 'dock',
screen = s,
width = music_box_width,
height = music_box_height,
maximum_width = music_box_width,
maximum_height = music_box_height,
offset = dpi(5),
shape = gears.shape.rectangle,
bg = beautiful.transparent,
preferred_anchors = {'middle', 'back', 'front'},
preferred_positions = {'left', 'right', 'top', 'bottom'},
}
local ui_content = require('widget.mpd.content')
s.album = ui_content.album_cover
s.progress_bar = ui_content.progress_bar
s.time_track = ui_content.track_time.time_track
s.song_info = ui_content.song_info.music_info
s.media_buttons = ui_content.media_buttons.navigate_buttons
s.volume_slider = ui_content.volume_slider.vol_slider
s.musicpop : setup {
{
{
layout = wibox.layout.fixed.vertical,
expand = 'none',
spacing = dpi(8),
{
s.album,
bottom = dpi(5),
widget = wibox.container.margin,
},
{
layout = wibox.layout.fixed.vertical,
{
spacing = dpi(4),
layout = wibox.layout.fixed.vertical,
s.progress_bar,
s.time_track,
},
s.song_info,
s.media_buttons,
s.volume_slider,
},
},
top = dpi(15),
left = dpi(15),
right = dpi(15),
widget = wibox.container.margin
},
bg = beautiful.background,
shape = function(cr, width, height)
gears.shape.partially_rounded_rect(
cr, width, height, true, true, true, true, beautiful.groups_radius
)
end,
widget = wibox.container.background()
}
s.backdrop_music = wibox {
ontop = true,
visible = false,
screen = s,
type = 'utility',
input_passthrough = false,
bg = beautiful.transparent,
x = s.geometry.x,
y = s.geometry.y,
width = s.geometry.width,
height = s.geometry.height
}
local toggle_music_box = function(type)
local focused = awful.screen.focused()
local music_box = focused.musicpop
local music_backdrop = focused.backdrop_music
if music_box.visible then
music_backdrop.visible = not music_backdrop.visible
music_box.visible = not music_box.visible
else
if type == 'keyboard' then
music_backdrop.visible = true
music_box.visible = true
awful.placement.top_right(
music_box,
{
margins = {
top = dpi(5),
right = dpi(music_box_x or 5)
},
honor_workarea = true
})
else
local widget_button = mouse.current_widget_geometry
music_backdrop.visible = true
music_box:move_next_to(widget_button)
music_box_x = (focused.geometry.width - music_box.x) - music_box_width
end
end
end
awesome.connect_signal(
'widget::music',
function(type)
toggle_music_box(type)
end
)
s.backdrop_music:buttons(
awful.util.table.join(
awful.button(
{},
1,
nil,
function()
toggle_music_box()
end
)
)
)
end)
music_func.toggle_music_box = toggle_music_box
local mpd_updater = require('widget.mpd.mpd-music-updater')
return music_func
@@ -0,0 +1,324 @@
local gears = require('gears')
local awful = require('awful')
local naughty = require('naughty')
local config_dir = gears.filesystem.get_configuration_dir()
local widget_icon_dir = config_dir .. 'widget/music/icons/'
local ui_content = require('widget.music.content')
local album_cover = ui_content.album_cover
local prog_bar = ui_content.progress_bar
local track_time = ui_content.track_time
local song_info = ui_content.song_info
local vol_slider = ui_content.volume_slider
local media_buttons = ui_content.media_buttons
-- We can't set/get the data for these
-- So let's hide them
prog_bar.visible = false
track_time.time_status.visible = false
track_time.time_duration.visible = false
media_buttons.repeat_button.visible = false
media_buttons.random_button.visible = false
local update_cover = function()
local get_art_url = [[
dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get \
string:'org.mpris.MediaPlayer2.Player' string:'Metadata' |
egrep -A 1 "artUrl"| egrep -v "artUrl" | awk -F '"' '{print $2}' |
sed -e 's/open.spotify.com/i.scdn.co/g'
]]
awful.spawn.easy_async_with_shell(
get_art_url,
function(link)
local download_art = [[
tmp_dir="/tmp/awesomewm/${USER}/"
tmp_cover_path=${tmp_dir}"cover.jpg"
if [ ! -d $tmp_dir ]; then
mkdir -p $tmp_dir;
fi
if [ -f $tmp_cover_path]; then
rm $tmp_cover_path
fi
wget -O $tmp_cover_path ]] ..link .. [[
echo $tmp_cover_path
]]
awful.spawn.easy_async_with_shell(
download_art,
function(stdout)
local album_icon = stdout:gsub('%\n', '')
album_cover.cover:set_image(gears.surface.load_uncached(album_icon))
album_cover:emit_signal("widget::redraw_needed")
album_cover:emit_signal("widget::layout_changed")
collectgarbage('collect')
end
)
end
)
end
local update_title = function()
awful.spawn.easy_async_with_shell(
[[
dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get string:'org.mpris.MediaPlayer2.Player' string:'Metadata' |
egrep -A 1 "title" | egrep -v "title" | awk -F '"' '{print $2}'
]],
function(stdout)
local title = stdout:gsub('%\n', '')
local title_widget = song_info.music_title
local title_text = song_info.music_title:get_children_by_id('title')[1]
title_text:set_text(title)
title_widget:emit_signal("widget::redraw_needed")
title_widget:emit_signal("widget::layout_changed")
collectgarbage('collect')
end
)
end
local update_artist = function()
awful.spawn.easy_async_with_shell(
[[
dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get string:'org.mpris.MediaPlayer2.Player' string:'Metadata'|
egrep -A 2 "artist" | egrep -v "artist" | egrep -v "array" | awk -F '"' '{print $2}'
]],
function(stdout)
-- Remove new lines
local artist = stdout:gsub('%\n', '')
if (stdout == nil or stdout == '') then
artist = 'Advertisement'
end
local artist_widget = song_info.music_artist
local artist_text = artist_widget:get_children_by_id('artist')[1]
artist_text:set_text(artist)
artist_widget:emit_signal("widget::redraw_needed")
artist_widget:emit_signal("widget::layout_changed")
collectgarbage('collect')
end
)
end
local update_volume_slider = function()
-- Stop. Don't indent.
-- It's python. Nuff said
local get_volume = [[
python - <<END
import subprocess
import os
x=0
y=0
env = os.environ
env['LANG'] = 'en_US'
app = '"Spotify"'
pactl = subprocess.check_output(['pactl', 'list', 'sink-inputs'], env=env).decode().strip().split()
if app in pactl:
for e in pactl:
x += 1
if e == app:
break
for i in pactl[0 : x -1 ]:
y += 1
if i == 'Sink' and pactl[y] == 'Input' and '#' in pactl[y + 1]:
sink_id = pactl[y+1]
if i == 'Volume:' and '%' in pactl[y + 3]:
volume = pactl[y + 3]
sink_id = sink_id[1: ]
volume = volume[ : -1 ]
print(volume)
END
]]
awful.spawn.easy_async_with_shell(
get_volume,
function(stdout)
-- naughty.notification({message=stdout})
local volume_slider = vol_slider.vol_slider
volume_slider:set_value(tonumber(stdout:match('%d+')))
end
)
end
local check_if_playing = function()
awful.spawn.easy_async_with_shell(
[[
dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get string:'org.mpris.MediaPlayer2.Player' string:'PlaybackStatus' |
grep -A 1 "string" | awk -F '"' '{print $2}'
]],
function(stdout)
local play_button_img = media_buttons.play_button_image.play
if stdout:match("Playing") then
play_button_img:set_image(widget_icon_dir .. 'pause.svg')
update_volume_slider()
else
play_button_img:set_image(widget_icon_dir .. 'play.svg')
end
end
)
end
local set_spotify_volume = function(value)
local set_volume = [[
python - <<END
import subprocess
import os
import sys
x=0
y=0
env = os.environ
env['LANG'] = 'en_US'
app = '"Spotify"'
pactl = subprocess.check_output(['pactl', 'list', 'sink-inputs'], env=env).decode().strip().split()
if app in pactl:
for e in pactl:
x += 1
if e == app:
break
for i in pactl[0 : x -1 ]:
y += 1
if i == 'Sink' and pactl[y] == 'Input' and '#' in pactl[y + 1]:
sink_id = pactl[y+1]
sink_id = sink_id[1: ]
arg = int(]] .. value .. [[)
if arg < 0:
arg = 0
if arg > 100:
arg = 100
subprocess.run(['pactl', 'set-sink-input-volume', sink_id, str(arg) + '%'])
END
]]
awful.spawn.easy_async_with_shell(
set_volume,
function(stdout) end
)
end
vol_slider.vol_slider:connect_signal(
'property::value',
function()
local volume_slider = vol_slider.vol_slider
set_spotify_volume(tostring(volume_slider:get_value()))
end
)
local update_all_content = function()
-- Add a delay
gears.timer.start_new(2, function()
update_title()
update_artist()
update_cover()
check_if_playing()
update_volume_slider()
end)
end
update_all_content()
media_buttons.play_button:buttons(
gears.table.join(
awful.button(
{},
1,
nil,
function()
awful.spawn.easy_async_with_shell(
[[
dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause
]],
function()
check_if_playing()
end
)
end
)
)
)
media_buttons.next_button:buttons(
gears.table.join(
awful.button(
{},
1,
nil,
function()
awful.spawn.easy_async_with_shell(
[[
dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Next
]],
function()
update_all_content()
end
)
end
)
)
)
media_buttons.prev_button:buttons(
gears.table.join(
awful.button(
{},
1,
nil,
function()
awful.spawn.easy_async_with_shell(
[[
dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Previous
]],
function()
update_all_content()
end
)
end
)
)
)
@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
viewBox="0 0 240 240"
version="1.1"
id="svg4"
sodipodi:docname="ic_airplanemode_inactive_48px.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.43457604"
inkscape:cx="-392.6819"
inkscape:cy="-33.781494"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="M 135,90 V 35 c 0,-8.3 -6.7,-15 -15,-15 -8.3,0 -15,6.7 -15,15 V 71.8 L 183.25,150.05 215,160 V 140 Z M 35,52.75 84.85,102.6 25,140 v 20 l 80,-25 v 55 l -20,15 v 15 l 35,-10 35,10 V 205 L 135,190 V 152.75 L 192.25,210 205,197.25 47.75,40 Z"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1;stroke-width:5" />
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
viewBox="0 0 240 240"
version="1.1"
id="svg6"
sodipodi:docname="ic_airplanemode_active_48px.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview8"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.43457604"
inkscape:cx="-51.304834"
inkscape:cy="18.788525"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg6" />
<path
d="M 120,120"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1;stroke-width:5" />
<path
d="M 215,160 V 140 L 135,90 V 35 c 0,-8.3 -6.7,-15 -15,-15 -8.3,0 -15,6.7 -15,15 v 55 l -80,50 v 20 l 80,-25 v 55 l -20,15 v 15 l 35,-10 35,10 v -15 l -20,-15 v -55 z"
id="path4"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1;stroke-width:5" />
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

+57
View File
@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
viewBox="0 0 240 240"
version="1.1"
id="svg4"
sodipodi:docname="ic_sync_48px.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.61458333"
inkscape:cx="-276.66458"
inkscape:cy="-76.310045"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="M 120,47.272727 V 20 L 83.636361,56.363636 120,92.72727 V 65.454545 c 30.13636,0 54.54545,24.409095 54.54545,54.545455 0,9.22727 -2.31818,17.86364 -6.31818,25.5 l 13.27272,13.27273 C 188.54545,147.5 192.72727,134.27273 192.72727,120 192.72727,79.818182 160.18181,47.272727 120,47.272727 Z m 0,127.272723 c -30.136366,0 -54.545457,-24.40909 -54.545457,-54.54545 0,-9.22727 2.318182,-17.86364 6.318182,-25.5 L 58.499998,81.227273 C 51.454543,92.5 47.272725,105.72727 47.272725,120 c 0,40.18182 32.545455,72.72727 72.727275,72.72727 V 220 L 156.36363,183.63636 120,147.27273 Z"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1;stroke-width:4.5454545" />
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

+5
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" baseProfile="full" width="240" height="240" viewBox="0 0 24.00 24.00" enable-background="new 0 0 24.00 24.00" xml:space="preserve">
<path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 2.275,2.9978L 1.00125,4.2675L 2.47125,5.7425C 2.03625,6.01125 1.60625,6.29375 1.20125,6.60125L 2.9975,8.99875C 3.525,8.60375 4.0775,8.2475 4.65875,7.925L 6.885,10.1563C 6.1475,10.4975 5.44375,10.9125 4.8,11.3963L 6.60125,13.7987C 7.3775,13.2175 8.25625,12.7737 9.19875,12.4663L 11.7525,15.02C 10.4975,15.0738 9.34125,15.4937 8.39875,16.2013L 12.0025,21.0012L 14.4575,17.725L 17.735,21.0012L 18.9988,19.7213M 12.0025,2.9978C 9.85375,2.9978 7.8025,3.38354 5.89875,4.0725L 8.29125,6.465C 9.4775,6.1625 10.7175,6.00125 12.0025,6.00125C 15.3763,6.00125 18.4912,7.11375 21.0013,8.99875L 22.8025,6.60125C 19.79,4.34125 16.055,2.9978 12.0025,2.9978 Z M 12.0025,8.99875C 11.6212,8.99875 11.25,9.01875 10.8788,9.0525L 14.0675,12.2463C 15.2925,12.5337 16.4262,13.0662 17.4025,13.7987L 19.1988,11.3963C 17.1975,9.8925 14.7025,8.99875 12.0025,8.99875 Z "/>
</svg>
@@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg8"
sodipodi:docname="wifi-strength-1-alert.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
<metadata
id="metadata14">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs12" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview10"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="2.4583334"
inkscape:cx="72.138642"
inkscape:cy="106.67249"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg8" />
<g
id="g832"
transform="matrix(0.23231214,0,0,0.23231214,-3.8774568,-3.8774563)">
<path
style="fill:none"
inkscape:connector-curvature="0"
id="path2"
d="m 19.79,176.45967 h 26 v 24 h -26 z" />
<path
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:0.4;stroke-width:7.9459672"
id="path4"
d="M 209.48294,87.216134 220.21,73.866904 c -3.89352,-2.86055 -42.35201,-34.326578 -100.03973,-34.326578 -57.687723,0 -96.146206,31.466028 -99.96027,34.326578 l 99.88081,124.433846 0.0795,0.15892 0.0795,-0.0795 55.54231,-69.20938 V 87.216094 Z" />
<path
style="fill:#ffffff;fill-opacity:1;stroke-width:7.9459672"
inkscape:connector-curvature="0"
id="path6"
d="m 75.196095,142.4406 44.974175,55.93961 v 0.0795 -0.0795 l 44.97418,-56.01907 c -1.74812,-1.27135 -18.99087,-15.41518 -44.97418,-15.41518 -25.983313,0 -43.226063,14.14383 -44.974175,15.49464 z m 116.487885,56.01907 h 15.89193 v -15.89193 h -15.89193 z m 0,-95.35161 v 63.56774 h 15.89193 v -63.56774 z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg6"
sodipodi:docname="ic_signal_wifi_1_bar_lock_48px.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview8"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="4.9166667"
inkscape:cx="24"
inkscape:cy="24"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg6" />
<path
d="M41 19c.7 0 1.4.1 2.1.2l4.2-5.2c-.9-.7-9.8-8-23.3-8S1.6 13.3.7 14L24 43l7-8.7V29c0-5.5 4.5-10 10-10z"
id="path2"
opacity=".3"
style="fill:#ffffff;fill-opacity:0.40000001;opacity:1" />
<path
d="M46 32v-3c0-2.8-2.2-5-5-5s-5 2.2-5 5v3c-1.1 0-2 .9-2 2v8c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2v-8c0-1.1-.9-2-2-2zm-2 0h-6v-3c0-1.7 1.3-3 3-3s3 1.3 3 3v3zm-30.7-2.3l9 11.2L24 43l7-8.8V29c0-.5 0-1 .1-1.4-1.8-.8-4.2-1.6-7.1-1.6-6.1 0-10.1 3.3-10.7 3.7z"
id="path4"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

+61
View File
@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg6"
sodipodi:docname="ic_signal_wifi_1_bar_48px.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview8"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="4.9166667"
inkscape:cx="24"
inkscape:cy="24"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg6" />
<path
fill-opacity=".3"
d="M24.02 42.98L47.28 14c-.9-.68-9.85-8-23.28-8S1.62 13.32.72 14l23.26 28.98.02.02.02-.02z"
id="path2"
style="fill:#ffffff;fill-opacity:0.40000001" />
<path
d="M13.34 29.72l10.65 13.27.01.01.01-.01 10.65-13.27C34.13 29.31 30.06 26 24 26s-10.13 3.31-10.66 3.72z"
id="path4"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

@@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg8"
sodipodi:docname="wifi-strength-2-alert.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
<metadata
id="metadata14">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs12" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview10"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="4.9166667"
inkscape:cx="69.967175"
inkscape:cy="30.177599"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg8" />
<g
id="g832"
transform="matrix(1.7907692,0,0,1.7907692,0.7200004,-384.29538)">
<path
style="fill:none"
inkscape:connector-curvature="0"
id="path2"
d="m 0,216 h 26 v 24 H 0 Z" />
<path
style="fill:#ffffff;fill-opacity:0.4"
inkscape:connector-curvature="0"
id="path4"
d="m 24.24,224 1.35,-1.68 C 25.1,221.96 20.26,218 13,218 5.74,218 0.9,221.96 0.42,222.32 L 12.99,237.98 13,238 13.01,237.99 20,229.28 V 224 Z" />
<path
style="fill:#ffffff;fill-opacity:1"
inkscape:connector-curvature="0"
id="path6"
d="m 5.45,228.59 7.54,9.4 0.01,0.01 0.01,-0.01 6.99,-8.71 v -1.09 C 18.93,227.46 16.41,226 13,226 c -4.36,0 -7.26,2.38 -7.55,2.59 z M 22,226 v 8 h 2 v -8 z m 0,12 h 2 v -2 h -2 z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg6"
sodipodi:docname="ic_signal_wifi_2_bar_lock_48px.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview8"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="4.9166667"
inkscape:cx="-14.542373"
inkscape:cy="24"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg6" />
<path
opacity=".3"
d="M41 19c.7 0 1.4.1 2.1.2l4.2-5.2c-.9-.7-9.9-8-23.3-8S1.6 13.3.7 14L24 43l7-8.7V29c0-5.5 4.5-10 10-10z"
id="path2"
style="fill:#ffffff;fill-opacity:0.40000001;opacity:1" />
<path
d="M46 32v-3c0-2.8-2.2-5-5-5s-5 2.2-5 5v3c-1.1 0-2 .9-2 2v8c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2v-8c0-1.1-.9-2-2-2zm-2 0h-6v-3c0-1.7 1.3-3 3-3s3 1.3 3 3v3zM9.6 25L24 43l7-8.7V29c0-2.6 1-5 2.7-6.8C31.2 21 27.9 20 24 20c-8.2 0-13.7 4.5-14.4 5z"
id="path4"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

+61
View File
@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg6"
sodipodi:docname="ic_signal_wifi_2_bar_48px.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview8"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="4.9166667"
inkscape:cx="-14.542373"
inkscape:cy="24"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg6" />
<path
fill-opacity=".3"
d="M24.02 42.98L47.28 14c-.9-.68-9.85-8-23.28-8S1.62 13.32.72 14l23.26 28.98.02.02.02-.02z"
id="path2"
style="fill:#ffffff;fill-opacity:0.40000001" />
<path
d="M9.58 25.03l14.41 17.95.01.02.01-.02 14.41-17.95C37.7 24.47 32.2 20 24 20s-13.7 4.47-14.42 5.03z"
id="path4"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

@@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg8"
sodipodi:docname="wifi-strength-3-alert.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
<metadata
id="metadata14">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs12" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview10"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="4.9166666"
inkscape:cx="36.415019"
inkscape:cy="-31.408761"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg8" />
<g
id="g824"
transform="matrix(1.7907692,0,0,1.7907692,0.7200004,-384.29538)">
<path
style="fill:#ffffff;fill-opacity:0.4"
inkscape:connector-curvature="0"
id="path2"
d="m 24.24,224 1.35,-1.68 C 25.1,221.96 20.26,218 13,218 5.74,218 0.9,221.96 0.42,222.32 L 12.99,237.98 13,238 13.01,237.99 20,229.28 V 224 Z" />
<path
style="fill:#ffffff;fill-opacity:1"
inkscape:connector-curvature="0"
id="path4"
d="m 20,229.28 v -4.57 C 18.35,223.87 15.94,223 13,223 c -5.44,0 -9.07,2.97 -9.44,3.24 l 9.43,11.75 0.01,0.01 0.01,-0.01 z m 2,6.72 h 2 v 2 h -2 z m 0,-10 h 2 v 8 h -2 z" />
<path
style="fill:none"
inkscape:connector-curvature="0"
id="path6"
d="m 0,216 h 26 v 24 H 0 Z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg6"
sodipodi:docname="ic_signal_wifi_3_bar_lock_48px.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview8"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="4.9166667"
inkscape:cx="-14.542373"
inkscape:cy="24"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg6" />
<path
opacity=".3"
enable-background="new"
d="M41 19c.7 0 1.4.1 2.1.2l4.2-5.2c-.9-.7-9.8-8-23.3-8S1.6 13.3.7 14L24 43l7-8.7V29c0-5.5 4.5-10 10-10z"
id="path2"
style="fill:#ffffff;fill-opacity:0.3764706;opacity:1" />
<path
d="M46 32v-3c0-2.8-2.2-5-5-5s-5 2.2-5 5v3c-1.1 0-2 .9-2 2v8c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2v-8c0-1.1-.9-2-2-2zm-2 0h-6v-3c0-1.7 1.3-3 3-3s3 1.3 3 3v3zM7.1 21.9L24 43l7-8.7V29c0-4.3 2.7-8 6.5-9.4C34.6 18 29.9 16 24 16c-9.6 0-16.1 5.2-16.9 5.9z"
id="path4"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

Loaded 100 of 448 files, more files were not shown because too many files have changed in this diff. Show more