moved to personal fennel config for awesome and added qutebrowser

This commit is contained in:
Chris Cochrun 2020-10-13 17:35:26 -05:00
parent 403cb92b7d
commit 688748f8a6
502 changed files with 8576 additions and 9597 deletions

View file

@ -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

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_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

View file

@ -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

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_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

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_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

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_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

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_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

View file

@ -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

View file

@ -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

View file

@ -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

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_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

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_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

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_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

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_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

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_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

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_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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,265 @@
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-standard' .. '.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 = 'VictorMono Nerd Font 10',
align = 'center',
valign = 'center',
visible = true,
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'}
}
-- Get battery info script
local get_battery_info = function()
awful.spawn.easy_async_with_shell('upower -i (upower -e | rg BAT)', function(stdout)
if (stdout == nil or stdout == '') then
battery_tooltip:set_text('No battery detected!')
battery_widget:set_visible(true)
return
end
-- Remove new line from the last line
battery_tooltip:set_text(stdout:sub(1, -2))
end)
end
-- Update tooltip on startup
get_battery_info()
-- Update tooltip on hover
battery_widget:connect_signal('mouse::enter', function()
get_battery_info()
end)
local check_percentage_cmd = [[
upower -i (upower -e | rg BAT | rg 1) | rg percentage | awk '{print $2}' | tr -d '\n%'
]]
local check_status_cmd = [[bash -c "
upower -i (upower -e | rg BAT | rg 1) | rg state | awk '{print $2}' | tr -d '\n'
"]]
local last_battery_check = os.time()
local notify_critcal_battery = true
local function show_battery_warning()
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)
local status = status:gsub('%\n', '')
awful.spawn.easy_async_with_shell(check_percentage_cmd, function(stdout)
local battery_percentage = tonumber(stdout)
battery_widget.spacing = dpi(5)
battery_percentage_text.visible = true
battery_percentage_text:set_text(battery_percentage .. "%")
local icon_name = 'battery'
if status:match('discharging') then
if battery_percentage >= 0 and battery_percentage < 10 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
elseif battery_percentage > 10 and battery_percentage < 20 then
icon_name = icon_name .. '-' .. '10'
elseif battery_percentage >= 20 and battery_percentage < 30 then
icon_name = icon_name .. '-' .. '20'
elseif battery_percentage >= 30 and battery_percentage < 50 then
icon_name = icon_name .. '-' .. '30'
elseif battery_percentage >= 50 and battery_percentage < 60 then
icon_name = icon_name .. '-' .. '50'
elseif battery_percentage >= 60 and battery_percentage < 80 then
icon_name = icon_name .. '-' .. '60'
elseif battery_percentage >= 80 and battery_percentage < 90 then
icon_name = icon_name .. '-' .. '80'
elseif battery_percentage >= 90 and battery_percentage < 100 then
icon_name = icon_name .. '-' .. '90'
elseif battery_percentage == 100 then
icon_name = icon_name .. '-' .. battery_percentage
end
elseif status:match('charging') then
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'
else
icon_name = icon_name .. '-' .. 'fully-charged'
end
elseif status:match('fully') then
icon_name = icon_name .. '-' .. '100'
end
-- Debugger ;)
-- naughty.notification({message=widget_icon_dir .. icon_name .. '.svg'})
battery_imagebox.icon:set_image(gears.surface.load_uncached(widget_icon_dir .. icon_name .. '.svg'))
collectgarbage('collect')
end)
end
-- Watch status if charging, discharging, fully-charged
watch(check_status_cmd, 5, function(widget, stdout)
-- If no output or battery detected
if (stdout == nil or stdout == '') then
battery_widget.spacing = dpi(0)
battery_percentage_text.visible = true
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(stdout)
end)
return battery_button
end
return return_button

View file

@ -0,0 +1,127 @@
local awful = require('awful')
local wibox = require('wibox')
local gears = require('gears')
local dpi = require('beautiful').xresources.apply_dpi
local clickable_container = require('widget.window-effects.clickable-container')
local icons = require('theme.icons')
local blue_light_state = nil
local action_name = wibox.widget {
text = 'Blue Light Filter',
font = 'SF Pro Text 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

View file

@ -0,0 +1,174 @@
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.clickable-container')
local config_dir = gears.filesystem.get_configuration_dir()
local widget_icon_dir = config_dir .. 'widget/bluetooth/icons/'
local icons = require('theme.icons')
local device_state = false
local action_name = wibox.widget {
text = 'Bluetooth Connection',
font = 'SF Pro Text 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) end
)
else
device_state = true
awful.spawn.easy_async_with_shell(
power_on_cmd,
function(stdout) end
)
end
update_imagebox()
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

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

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="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

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 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>

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="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

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 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>

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

View file

@ -0,0 +1,90 @@
-------------------------------------------------
-- Bluetooth Widget for Awesome Window Manager
-- Shows the bluetooth status using the bluetoothctl command
-- Better with Blueman Manager
-------------------------------------------------
local awful = require('awful')
local gears = require('gears')
local naughty = require('naughty')
local wibox = require('wibox')
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

View file

@ -0,0 +1,140 @@
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 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',
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('brightnessctl 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(
"brightnessctl g",
function(stdout)
local brightness = string.match(stdout, '(%d+)')
brightness_slider:set_value(tonumber(stdout) / 75)
end
)
end
-- Update on startup
update_slider()
-- 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 {
{
{
{
image = icons.brightness,
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 brightness_setting

View file

@ -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

View file

@ -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

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 = 'SF Pro Text 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 = 'SF Pro Text 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

View file

@ -0,0 +1,54 @@
local wibox = require('wibox')
local beautiful = require('beautiful')
function build(widget)
local container =
wibox.widget {
widget,
-- bg = beautiful.theme_bg,
widget = wibox.container.background
}
local old_cursor, old_wibox
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
)
container:connect_signal(
'mouse::leave',
function()
container.bg = beautiful.transparent
if old_wibox then
old_wibox.cursor = old_cursor
old_wibox = nil
end
end
)
container:connect_signal(
'button::press',
function()
container.bg = beautiful.groups_title_bg
end
)
container:connect_signal(
'button::release',
function()
container.bg = beautiful.groups_bg
end
)
return container
end
return build

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 icons = require('theme.icons')
local dpi = beautiful.xresources.apply_dpi
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 '"]],
5,
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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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 KiB

View file

@ -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

View file

@ -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

412
awes2/widget/email/init.lua Normal file
View file

@ -0,0 +1,412 @@
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 secrets = require('configuration.secrets')
local email_account = secrets.email.address
local app_password = secrets.email.app_password
local imap_server = secrets.email.imap_server
local port = secrets.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 = 'SF Pro Text Bold 10',
markup = 'From:',
align = 'left',
valign = 'center',
widget = wibox.widget.textbox
}
local email_recent_from = wibox.widget {
font = 'SF Pro Text Regular 10',
markup = 'loading@stdout.sh',
align = 'left',
valign = 'center',
widget = wibox.widget.textbox
}
local email_subject_text = wibox.widget {
font = 'SF Pro Text Regular 10',
markup = 'Subject:',
align = 'left',
valign = 'center',
widget = wibox.widget.textbox
}
local email_recent_subject = wibox.widget {
font = 'SF Pro Text Regular 10',
markup = 'Loading data',
align = 'left',
valign = 'center',
widget = wibox.widget.textbox
}
local email_date_text = wibox.widget {
font = 'SF Pro Text Regular 10',
markup = 'Local Date:',
align = 'left',
valign = 'center',
widget = wibox.widget.textbox
}
local email_recent_date = wibox.widget {
font = 'SF Pro Text 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
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])
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("]] .. imap_server .. [[", ]] .. port .. [[)
M.login("]] .. email_account .. [[","]] .. 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='SF Pro Text Bold 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 email_account == '' or app_password == '' or imap_server == '' or 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::wifi_connected',
function()
gears.timer.start_new(
5,
function()
check_secrets()
end
)
end
)
return email_report

View file

@ -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

View file

@ -0,0 +1,22 @@
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/music/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

View file

@ -0,0 +1,9 @@
-- Return UI Table
return {
album_cover = require('widget.music.content.album-cover'),
progress_bar = require('widget.music.content.progress-bar'),
track_time = require('widget.music.content.track-time'),
song_info = require('widget.music.content.song-info'),
media_buttons = require('widget.music.content.media-buttons'),
volume_slider = require('widget.music.content.volume-slider'),
}

View file

@ -0,0 +1,124 @@
local beautiful = require('beautiful')
local gears = require('gears')
local awful = require('awful')
local wibox = require('wibox')
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/music/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

View file

@ -0,0 +1,22 @@
local beautiful = require('beautiful')
local gears = require('gears')
local awful = require('awful')
local wibox = require('wibox')
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

View file

@ -0,0 +1,63 @@
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 = 'SF Pro Text 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 = 'SF Pro Text 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

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 = 'SF Pro Text 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 = 'SF Pro Text 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

View file

@ -0,0 +1,24 @@
local beautiful = require('beautiful')
local gears = require('gears')
local awful = require('awful')
local wibox = require('wibox')
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

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 KiB

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

View file

@ -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

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

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

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 13 KiB

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_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

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_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

5698
awes2/widget/music/icons/vinyl.svg Executable file

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 421 KiB

92
awes2/widget/music/init.lua Executable file
View file

@ -0,0 +1,92 @@
-- # #
-- ## ## # # #### # ####
-- # # # # # # # # # #
-- # # # # # #### # #
-- # # # # # # #
-- # # # # # # # # #
-- # # #### #### # ####
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/music/icons/'
local clickable_container = require('widget.clickable-container')
local music_box = require('widget.music.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

View file

@ -0,0 +1,506 @@
-- Update Music info using mpd/mpc
-- Depends mpd, mpc
local gears = require('gears')
local awful = require('awful')
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
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
# Extract album cover using perl-image-exiftool
exiftool -b -Picture \
"$MUSIC_DIR/$(mpc -p 6600 --format "%file%" current)" > "$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(tostring("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(tostring("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")
collectgarbage('collect')
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
local startup_update_quota = 0
gears.timer.start_new(3, function()
update_all_content()
startup_update_quota = startup_update_quota + 1
if startup_update_quota <= 5 then
return true
else
return false
end
end)
gears.timer.start_new(
5,
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 ()
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
)
)
)

171
awes2/widget/music/music-box.lua Executable file
View file

@ -0,0 +1,171 @@
-- # # ######
-- ## ## # # #### # #### # # #### # #
-- # # # # # # # # # # # # # # # #
-- # # # # # #### # # ###### # # ##
-- # # # # # # # # # # # ##
-- # # # # # # # # # # # # # # #
-- # # #### #### # #### ###### #### # #
-- Creates the music box widget here
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.music.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.music.mpd-music-updater')
return music_func

View file

@ -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
)
)
)

View file

@ -0,0 +1 @@
false

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

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_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

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"
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

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

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>

View file

@ -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

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_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 KiB

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

View file

@ -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

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_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 KiB

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

View file

@ -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

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"
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 KiB

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_3_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="M7.07 21.91l16.92 21.07.01.02.02-.02 16.92-21.07C40.08 21.25 33.62 16 24 16c-9.63 0-16.08 5.25-16.93 5.91z"
id="path4"
style="fill-opacity:1;fill:#ffffff" />
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

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="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg6"
sodipodi:docname="wifi-strength-4-alert.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="16.852347"
inkscape:cy="388.12021"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg6" />
<path
d="m 40.639143,42.498211 h 3.699641 V 38.79857 H 40.639143 Z M 23.990751,5.5017888 C 10.561049,5.5017888 1.607914,12.827078 0.72,13.493014 l 23.252253,28.9682 0.01851,0.037 0.01851,-0.01851 12.93025,-16.111943 v -9.767054 h 7.843241 L 47.28,13.493014 C 46.373589,12.827078 37.420452,5.5017888 23.990751,5.5017888 Z M 40.639143,35.098926 h 3.699641 v -14.79857 h -3.699641 z"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1;stroke-width:1.84982121" />
</svg>

After

Width:  |  Height:  |  Size: 2 KiB

View file

@ -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_signal_wifi_4_bar_lock_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="M41 19c.72 0 1.41.08 2.09.22L47.28 14c-.9-.68-9.85-8-23.28-8S1.62 13.32.72 14l23.26 28.98.02.02.02-.02 6.98-8.7V29c0-5.52 4.48-10 10-10zm5 13v-3c0-2.76-2.24-5-5-5s-5 2.24-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.66 1.34-3 3-3s3 1.34 3 3v3z"
id="path2"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View file

@ -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_signal_wifi_4_bar_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="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:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View file

@ -0,0 +1,48 @@
<?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"
version="1.1"
width="48"
height="48"
viewBox="0 0 4.8 4.8"
enable-background="new 0 0 24.00 24.00"
xml:space="preserve"
id="svg4"
sodipodi:docname="wifi-strength-alert-outline.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.98333333"
inkscape:cx="-99.661017"
inkscape:cy="120"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="M 2.3996249,0.50003992 C 1.5568511,0.50197892 0.7398204,0.78315394 0.0749994,1.300765 H 0.072 C 0.8482913,2.2662659 1.624333,3.2317468 2.4013844,4.1972277 2.8672594,3.6173833 3.3328744,3.0365592 3.7985095,2.4566948 V 1.8171264 L 2.3996249,3.5599187 0.65384344,1.3874917 C 1.1802022,1.0703269 1.7835402,0.90137221 2.3996249,0.90037248 3.0137001,0.90337148 3.6160584,1.0720764 4.1411575,1.3904909 L 4.0533615,1.4997116 H 4.5660439 C 4.6195299,1.4334794 4.6732551,1.3669972 4.7270007,1.300765 H 4.728 C 4.0621787,0.78215421 3.2431385,0.50097967 2.3996249,0.50003992 Z M 4.198902,1.9001042 V 3.499175 H 4.5980349 V 1.9001042 M 4.198902,3.8995676 V 4.2999601 H 4.5980349 V 3.8995676"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1;stroke-width:0.03998927;stroke-linejoin:round" />
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View file

@ -0,0 +1,65 @@
<?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="26"
height="24"
viewBox="0 0 26 24"
version="1.1"
id="svg8"
sodipodi:docname="wifi-strength-alert.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<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="9.8333333"
inkscape:cx="13"
inkscape:cy="12"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg8" />
<path
fill-opacity=".3"
d="M24.24 8l1.35-1.68C25.1 5.96 20.26 2 13 2S.9 5.96.42 6.32l12.57 15.66.01.02.01-.01L20 13.28V8h4.24z"
id="path2"
style="fill:#ffffff;fill-opacity:0.40000001" />
<path
d="M22 22h2v-2h-2v2zm0-12v8h2v-8h-2z"
id="path4"
style="fill:#ffffff;fill-opacity:1" />
<path
d="M0 0h26v24H0z"
fill="none"
id="path6" />
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

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="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg4"
sodipodi:docname="ic_signal_wifi_0_bar_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:zoom="4.9166667"
inkscape:cx="-14.745763"
inkscape:cy="24"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4"
inkscape:pagecheckerboard="true" />
<path
d="M24.02 42.98L47.28 14c-.9-.68-9.85-8-23.28-8C10.57 6 1.62 13.32.72 14l23.26 28.98.02.02.02-.02z"
id="path2"
style="fill:#ffffff;fill-opacity:0.40000001"
fill-opacity=".3" />
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View file

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" 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="1.33333" stroke-linejoin="miter" d="M 12,3C 7.78946,3.0086 3.70106,4.4156 0.376954,7C 4.60705,12.3026 8.15995,16.7043 12.0098,21.4902C 13.2095,19.9999 14.2927,18.6499 15.5,17.1445L 15.5,14.5C 15.5019,14.2962 15.5162,14.0927 15.543,13.8906L 12.0039,18.2988L 3.26953,7.4355C 5.90565,5.8486 8.92306,5.0068 12,5C 15.0729,5.0137 18.0847,5.8602 20.7148,7.4492L 18.834,9.791C 19.3688,9.6001 19.9322,9.5017 20.5,9.5C 20.8521,9.5021 21.203,9.5414 21.5469,9.6172C 22.2135,8.7884 23.0231,7.7739 23.6484,7C 20.3175,4.4103 16.2192,3.003 12,3 Z M 20.5,12C 19.1,12 18,13.1 18,14.5L 18,16C 17.5,16 17,16.5 17,17L 17,21C 17,21.5 17.5,22 18,22L 23,22C 23.5,22 24,21.5 24,21L 24,17C 24,16.5 23.5,16 23,16L 23,14.5C 23,13.1 21.9,12 20.5,12 Z M 20.5,13C 21.3,13 22,13.7 22,14.5L 22,16L 19,16L 19,14.5C 19,13.7 19.7,13 20.5,13 Z "/>
</svg>

View file

@ -0,0 +1,48 @@
<?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"
version="1.1"
width="48"
height="48"
viewBox="0 0 4.8 4.8"
enable-background="new 0 0 24.00 24.00"
xml:space="preserve"
id="svg4"
sodipodi:docname="wifi-strength-off-outline.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="5.5625733"
inkscape:cx="-15.604564"
inkscape:cy="55.265344"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="M 0.65121718,0.3943759 0.39737174,0.6503682 0.8075259,1.0606264 C 0.54767825,1.1809217 0.30058535,1.3294775 0.072,1.5072944 0.8377873,2.466415 1.6243331,3.4415216 2.3998847,4.4056241 L 3.1796578,3.4337787 3.8439276,4.0980284 4.097763,3.8439329 C 2.9715996,2.7157487 0.65121718,0.3943759 0.65121718,0.3943759 Z M 2.398124,0.7060531 c -0.2813658,9.404e-4 -0.5589602,0.035203 -0.8285615,0.096726 l 0.3398778,0.3408781 c 0.1613006,-0.023259 0.3243619,-0.037014 0.4886837,-0.037014 0.614471,0.003 1.2172177,0.1718147 1.7426552,0.4904345 L 3.3494817,2.5836991 3.6338286,2.868066 C 4.0139715,2.3933675 4.4016373,1.9116964 4.728,1.5072944 4.0617495,0.9883492 3.2421814,0.7069935 2.398124,0.7060531 Z M 1.1103898,1.3644907 2.8953109,3.1484114 2.398124,3.7679043 0.65121718,1.594077 C 0.7987727,1.5052936 0.9520803,1.4290149 1.1103898,1.3644907 Z"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1;stroke-width:0.04001505;stroke-linejoin:round" />
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View file

@ -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_signal_wifi_off_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="M47.28 14c-.9-.68-9.85-8-23.28-8-3.01 0-5.78.38-8.3.96L36.36 27.6 47.28 14zM6.55 2.89L4 5.44l4.11 4.11c-4.28 1.97-6.92 4.1-7.39 4.46l23.26 28.98.02.01.02-.02 7.8-9.72 6.63 6.63L41 37.34 6.55 2.89z"
id="path2"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View file

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" 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.0025,2.9978C 7.7875,3.0075 3.70125,4.41375 0.376253,7.0025L 0.361252,7.0025C 4.24375,11.8313 8.125,16.66 12.0113,21.4887C 15.8888,16.66 19.7662,11.8313 23.6425,7.0025L 23.6475,7.0025C 20.3175,4.40875 16.2212,3.0025 12.0025,2.9978 Z M 12.0025,5C 15.0737,5.015 18.0863,5.85875 20.7125,7.45125L 12.0025,18.3013L 3.27125,7.43625C 5.90375,5.85 8.92125,5.005 12.0025,5 Z "/>
</svg>

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 12,21L 15.6002,16.1997C 14.5974,15.4464 13.3508,15 12,15C 10.6492,15 9.40262,15.4464 8.39979,16.1997L 12,21 Z M 12,3C 7.94753,3 4.20785,4.33919 1.19937,6.59916L 2.99947,8.9993C 5.50654,7.116 8.62294,6.00001 12,6.00001C 15.377,6.00001 18.4934,7.116 21.0005,8.99931L 22.8006,6.59916C 19.7921,4.33919 16.0525,3 12,3 Z M 12,9C 9.29836,9 6.80524,9.8928 4.79958,11.3994L 6.59968,13.7996C 8.10393,12.6696 9.97376,12 12,12C 14.0262,12 15.8961,12.6696 17.4003,13.7996L 19.2004,11.3994C 17.1948,9.8928 14.7016,9 12,9 Z "/>
</svg>

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="wired-alert.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="1.7383042"
inkscape:cx="84.551561"
inkscape:cy="104.10598"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="M 201.81818,29.090909 H 38.181818 C 28.136364,29.090909 20,37.227273 20,47.272727 V 156.36364 c 0,10.04545 8.136364,18.18181 18.181818,18.18181 h 63.636362 l -18.181816,27.27273 v 9.09091 h 72.727276 v -9.09091 l -18.18182,-27.27273 h 63.63636 C 211.86364,174.54545 220,166.40909 220,156.36364 V 47.272727 c 0,-10.045454 -8.13636,-18.181818 -18.18182,-18.181818 z m 0,109.090911 H 38.181818 V 47.272727 H 201.81818 Z"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:0.40000001;stroke-width:4.5454545" />
</svg>

After

Width:  |  Height:  |  Size: 2 KiB

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="wired-off.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 />
</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.7383042"
inkscape:cx="-39.707473"
inkscape:cy="104.10598"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="M 201.81818,29.090909 H 38.181818 C 28.136364,29.090909 20,37.227273 20,47.272727 V 156.36364 c 0,10.04545 8.136364,18.18181 18.181818,18.18181 h 63.636362 l -18.181816,27.27273 v 9.09091 h 72.727276 v -9.09091 l -18.18182,-27.27273 h 63.63636 C 211.86364,174.54545 220,166.40909 220,156.36364 V 47.272727 c 0,-10.045454 -8.13636,-18.181818 -18.18182,-18.181818 z m 0,109.090911 H 38.181818 V 47.272727 H 201.81818 Z"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ff0000;fill-opacity:0.40000001;stroke-width:4.5454545" />
</svg>

After

Width:  |  Height:  |  Size: 2 KiB

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_desktop_mac_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="2.4583333"
inkscape:cx="103.07022"
inkscape:cy="132.72641"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="M 201.81818,29.090909 H 38.181818 C 28.136364,29.090909 20,37.227273 20,47.272727 V 156.36364 c 0,10.04545 8.136364,18.18181 18.181818,18.18181 h 63.636362 l -18.181816,27.27273 v 9.09091 h 72.727276 v -9.09091 l -18.18182,-27.27273 h 63.63636 C 211.86364,174.54545 220,166.40909 220,156.36364 V 47.272727 c 0,-10.045454 -8.13636,-18.181818 -18.18182,-18.181818 z m 0,109.090911 H 38.181818 V 47.272727 H 201.81818 Z"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1;stroke-width:4.5454545" />
</svg>

After

Width:  |  Height:  |  Size: 2 KiB

376
awes2/widget/network/init.lua Executable file
View file

@ -0,0 +1,376 @@
----------------------------------------------------------------------------
--- Simple Network Widget
--
-- Depends: iproute2, iw
--
-- For more details check `man maim`
--
-- @author manilarome &lt;gerome.matilla07@gmail.com&gt;
-- @copyright 2020 manilarome
-- @widget network
----------------------------------------------------------------------------
local awful = require('awful')
local wibox = require('wibox')
local gears = require('gears')
local naughty = require('naughty')
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/network/icons/'
local wlan_interface = 'wlp3s0'
local lan_interface = 'enp0s25'
local return_button = function()
local wifi_strength = nil
local connected_to_network = false
local conn_status = 'disconnected'
local essid = nil
local update_notify_no_access = true
local notify_no_access_quota = 0
local startup = true
local notify_new_wifi_conn = false
local net_speed = 'N/A'
local widget = wibox.widget {
{
id = 'icon',
image = widget_icon_dir .. 'wifi-strength-off' .. '.svg',
widget = wibox.widget.imagebox,
resize = true
},
layout = wibox.layout.align.horizontal
}
local widget_button = wibox.widget {
{
widget,
margins = dpi(2),
widget = wibox.container.margin
},
widget = clickable_container
}
widget_button:buttons(
gears.table.join(
awful.button(
{},
1,
nil,
function()
awful.spawn(apps.default.network_manager, false)
end
)
)
)
local notify_not_connected = function()
local message = 'The network has been disconnected'
local title = 'Connection Disconnected'
if conn_status == 'wireless' then
icon = widget_icon_dir .. 'wifi-strength-off.svg'
elseif conn_status == 'wired' then
icon = widget_icon_dir .. 'wired-off.svg'
else
icon = widget_icon_dir .. 'wifi-strength-off.svg'
end
naughty.notification({
message = message,
title = title,
app_name = 'System Notification',
icon = icon
})
conn_status = 'disconnected'
end
local update_disconnected = function()
if conn_status == 'wireless' or conn_status == 'wired' then
local widget_icon_name = nil
connected_to_network = false
notify_new_wifi_conn = true
essid = nil
update_notify_no_access = true
if conn_status == 'wireless' then
widget_icon_name = 'wifi-strength-off'
elseif conn_status == 'wired' then
widget_icon_name = 'wired-off'
end
notify_not_connected()
widget.icon:set_image(widget_icon_dir .. widget_icon_name .. '.svg')
end
end
local notify_no_access = function(strength)
if conn_status == 'wireless' or conn_status == 'wired' then
local message = 'Internet may not be available or it is too slow right now'
if conn_status == 'wireless' then
icon = widget_icon_dir .. 'wifi-strength-' .. tostring(strength) .. '-alert.svg'
elseif conn_status == 'wired' then
icon = widget_icon_dir .. 'wired-off.svg'
end
naughty.notification({
message = message,
title = 'Connection Status',
app_name = 'System Notification',
icon = icon
})
end
end
local update_no_access = function(strength)
if not update_notify_no_access then
return
end
local widget_icon_name = nil
if conn_status == 'wireless' then
widget_icon_name = 'wifi-strength-' .. tostring(strength) .. '-alert'
elseif conn_status == 'wired' then
widget_icon_name = 'wired-alert'
end
notify_no_access(strength)
widget.icon:set_image(widget_icon_dir .. widget_icon_name .. '.svg')
update_notify_no_access = false
end
local notify_wifi_conn = function()
if startup then
startup = false
return
end
if not notify_new_wifi_conn then
return
end
local message = "You are now connected to <b>\"" .. essid .. "\"</b>"
local title = "Connection Established"
local app_name = "System Notification"
local icon = widget_icon_dir .. 'wifi.svg'
naughty.notification({
message = message,
title = title,
app_name = app_name,
icon = icon
})
notify_new_wifi_conn = false
end
local update_essid = function()
if not essid and connected_to_network == true then
awful.spawn.easy_async_with_shell(
[[
iw dev ]] .. wlan_interface .. [[ link
]],
function(stdout)
essid = stdout:match('SSID: (.-)\n')
if essid == nil then
essid = 'N/A'
end
notify_wifi_conn()
end
)
end
end
local check_internet_health = [[
status_curl=0
status_ping=0
ip="$(curl --connect-timeout 5 ifconfig.co)"
if expr "$ip" : '[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$' >/dev/null;
then
status_curl=1
else
status_curl=0
fi
packets="$(ping -q -w4 -c4 1.1.1.1 | grep -o "100% packet loss")"
if [ ! -z "${packets}" ];
then
status_ping=0
else
status_ping=1
fi
if [ $status_ping -eq 0 ] && [ $status_curl -eq 0 ];
then
echo 'noaccess'
fi
]]
local update_net_speed = function()
awful.spawn.easy_async_with_shell(
'iw dev ' .. wlan_interface .. ' link',
function(stdout)
net_speed = stdout:match("tx bitrate: (.+/s)") or 'N/A'
end
)
end
local update_wireless = function()
conn_status = 'wireless'
connected_to_network = true
awful.spawn.easy_async_with_shell(
[[
awk 'NR==3 {printf "%3.0f" ,($3/70)*100}' /proc/net/wireless
]],
function(stdout)
if not tonumber(stdout) then
return
end
local widget_icon_name = 'wifi-strength'
wifi_strength = tonumber(stdout)
local wifi_strength_rounded = math.floor(wifi_strength / 25 + 0.5)
awful.spawn.easy_async_with_shell(
check_internet_health,
function(stdout)
local widget_icon_name = widget_icon_name .. '-' .. wifi_strength_rounded
if stdout:match('noaccess') then
update_no_access(wifi_strength_rounded)
return
else
update_net_speed()
if startup then
awesome.emit_signal('system::wifi_connected')
end
update_notify_no_access = true
end
widget.icon:set_image(widget_icon_dir .. widget_icon_name .. '.svg')
end
)
end
)
update_essid()
end
local update_wired = function()
conn_status = 'wired'
connected_to_network = true
awful.spawn.easy_async_with_shell(
check_internet_health,
function(stdout)
widget_icon_name = 'wired'
if stdout:match('fail') then
update_no_access()
return
else
if startup then
awesome.emit_signal('system::wifi_connected')
startup = false
end
update_notify_no_access = true
end
widget.icon:set_image(widget_icon_dir .. widget_icon_name .. '.svg')
end
)
end
awful.tooltip(
{
objects = {widget_button},
mode = 'outside',
align = 'right',
timer_function = function()
if connected_to_network then
if conn_status == 'wireless' then
return 'Wireless Interface: <b>' .. wlan_interface ..
'</b>\nConnected to: <b>' .. (essid or "*LOADING...*") ..
'</b>\nWiFi-Strength: <b>' .. tostring(wifi_strength) .. '%' ..
'</b>\nBit rate: <b>' .. tostring(net_speed) .. '</b>'
else
return 'Ethernet Interface: <b>' .. lan_interface
end
else
return 'Network is currently disconnected'
end
end,
preferred_positions = {'left', 'right', 'top', 'bottom'},
margin_leftright = dpi(8),
margin_topbottom = dpi(8)
}
)
gears.timer {
timeout = 9,
autostart = true,
call_now = true,
callback = function()
awful.spawn.easy_async_with_shell(
[[
net_status="$(ip route get 8.8.8.8 2>&1 >/dev/null)"
if ]] .. "[[ " .. [[ "$(echo ${net_status} | awk -F ": " '{print $2}')" == *'unreachable'* ]] .. " ]];" .. [[
then
echo 'No internet connection'
exit;
fi
net_status="$(ip route get 8.8.8.8 | grep -Po 'dev \K\w+' | grep -Ff - /proc/net/wireless)"
if [ ! -z "${net_status}" ]
then
echo 'wireless'
else
echo 'wired'
fi
]],
function(stdout)
if stdout:match('No internet connection') then
update_disconnected()
return
end
if stdout:match('wireless') then
update_wireless()
elseif stdout:match('wired') then
update_wired()
end
end
)
end
}
return widget_button
end
return return_button

Some files were not shown because too many files have changed in this diff Show more