begin revert dms migration

This commit is contained in:
Penelope Gwen 2026-06-24 09:17:45 -07:00 committed by Penelope Gwen
parent b39dd39adc
commit ce4d3cc74f
124 changed files with 3104 additions and 80 deletions

View file

@ -37,7 +37,7 @@ depends = ["default"]
depends = ["graphical"]
[wayland.files]
"wayland/config" = "~/.config"
"wayland/config" = { target = "~/.config", type = "symbolic" }
"wayland/bashrc.d" = "~/.bashrc.d"
"wayland/bin" = "~/.local/bin"

View file

@ -5,6 +5,6 @@
email = support@pogmom.me
[core]
editor = hx
editor = nvim
[init]
defaultBranch = main

View file

@ -25,8 +25,8 @@ output 'OOO CR270CU 0x00000001' {
#exec_always 'sleep 1;eww open --screen "CR270CU" home'
set {
$primary_display DP-1
$overview_display DP-1
$primary_display DP-2
$overview_display DP-2
}
workspace {

270
wayland/config/eww/eww.scss Normal file
View file

@ -0,0 +1,270 @@
* {
all: unset; // Unsets everything so you can style everything from scratch
/* font-family: FontAwesome, Overpass; */
font-family: PogmomIcons, Overpass Nerd Font Propo;
}
@import "./style/colors.scss";
$bar-module-width: 25px;
$bar-module-bg-color: rgba($color5,0.0);
$bar-bg-color: rgba($color5,1);
$bar-fg-color: rgba($color15,1);
$bar-module-fg-color: rgba($color0,0.8);
$bar-module-inactive-fg-color: rgba($color0,0.4);
$bar-module-active-fg-color: rgba($color13,0.9);
// $bar-active-bg-color: rgba($color1,0.5);
// $bar-active-fg-color: $color1;
// $bar-module-active-shadow: 1px 1px 4px rgba($color5,0.5),-1px 1px 4px rgba($color5,0.5),1px -1px 4px rgba($color5,0.5),-1px -1px 4px rgba($color5,0.5);
$bar-module-active-shadow: 1px 1px 4px rgba($color8,0.6),-1px 1px 4px rgba($color8,0.6),1px -1px 4px rgba($color8,0.6),-1px -1px 4px rgba($color8,0.6);
$bar-module-hover-shadow: 1px 1px 4px rgba($color8,0.45),-1px 1px 4px rgba($color8,0.45),1px -1px 4px rgba($color8,0.45),-1px -1px 4px rgba($color8,0.45);
$bar-hover-bg-color: rgba($color1,0.5);
$bar-hover-fg-color: rgba($color13,0.6);
//$bar-module-border-radius: 8px;
$bar-module-border-radius: 12px;
$bar-module-bg-border-radius: $bar-module-border-radius - 3;
//$bar-module-inner-radius: $bar-module-border-radius - 2;
$bar-module-inner-radius: $bar-module-border-radius - 6;
@import "./style/bar.scss";
.bar {
menu {
color: $color5;
font-weight: bold;
background-color: rgba($color0,0.75);
border: 2px solid rgba($color5,0.65);
border-radius: $bar-module-border-radius;
menuitem {
padding:10px;
margin:5px 10px;
transition: all .2s ease;
&:backdrop {
background-color:green;
}
&:not(:disabled) {
background-color: rgba($color8,0.6);
border: 2px solid rgba($color0,0.5);
border-radius:6px;
}
&:hover {
background-color:rgba($color12,0.5);
color: $color1;
}
}
}
}
tooltip{
color: $color5;
font-weight: bold;
background-color: rgba($color0,0.85);
border: 2px solid rgba($color5,0.65);
border-radius: 8px;
}
$home-widget-bg-color: rgba($color0,0.85);
$home-widget-border-radius: 8px;
$home-widget-title-radius: $home-widget-border-radius $home-widget-border-radius 0px 0px;
$home-button-border-radius: 6px;
$home-button-circle-border-radius: 30px;
$home-button-bg-color: rgba($color5, 0.15);
$home-button-fg-opacity: 1;
$home-button-fg-color: rgba($color5,$home-button-fg-opacity);
$home-widget-subtitle-color: rgba($color7,0.6);
$home-button-hover-bg-color: rgba($color1, 0.5);
$home-widget-border-color: rgba($color5,1);
$home-widget-border-hover-color: rgba($color5,0.3);
revealer.home {
font-size: 0.95em;
padding-bottom: 25px;
&>box {
// & scrolledwindow, viewport.frame, box.home { //box.home {
// & scrolledwindow>*, viewport.frame, box.home { //box.home {
// border: 3px solid blue;
//
border-radius: 0px 20px 0px 20px;
// }
margin: 3px 10px;
&:first-child {
padding-top: 10px;
}
&:last-child {
padding-bottom: 10px;
}
}
.nowplayingbar {
padding: 0px;
border: 2px solid $home-widget-border-color;
border-radius: $home-widget-border-radius;
background-color: $home-widget-bg-color;
.mediadetails {
margin: 10px 15px;
label {
margin: 0px;
}
&.fullwidth {
margin: 5px 35px;
}
}
.art-button-overlay {
&.small {
font-size: 2em;
margin: 20px 0px 20px 20px;
}
&.big {
font-size: 3em;
margin: 20px;
}
background-color: rgba($color0,0.5);
color: $color5;
border-radius: $home-widget-border-radius;
}
.nowplayingart {
&.small {
margin: 20px 0px 20px 20px;
}
&.big {
margin: 25px;
min-height: 250px;
}
border: 1px solid $home-widget-border-color;
border-radius: $home-widget-border-radius;
background-position: center;
background-size: cover;
background-repeat: no-repeat;
}
.mediabutton {
background-color: $home-button-bg-color;
border-radius: $home-button-circle-border-radius;
color: $home-button-fg-color;
transition: all 0.3s;
&:hover{
background-color: $home-button-hover-bg-color;
}
}
}
.rat {
background-position: center;
background-size: cover;
background-repeat: no-repeat;
border-radius: $home-widget-border-radius;
box-shadow: inset 0 0 0px 2px $home-widget-border-color, 0px 0px 9px 0px $home-widget-bg-color;
}
.minecraft {
.icon {
background-repeat: no-repeat;
background-position: center;
background-size: cover;
margin: 10px;
border-radius: $home-widget-border-radius;
}
.details {
// * { border: 2px solid red; }
color: $home-button-fg-color;
.title {
font-size: 1.1em;
font-weight: bold;
}
.motd {
color: $home-widget-subtitle-color;
font-size: 0.8em;
}
margin: 10px;
}
.button {
color: $home-button-fg-color;
background-color: $home-button-bg-color;
border-radius: $home-button-border-radius;
padding: 5px 0px;
margin: 0px 10px 10px;
transition: all 0.3s;
&:hover {
opacity: 0.5;
}
}
}
.weather {
color: $home-button-fg-color;
padding: 8px;
.weather-subtitle{
font-size: 0.8em;
color: $home-widget-subtitle-color;
}
}
.revealer-on-press {
border: 2px solid $home-widget-border-color;
border-radius: $home-widget-border-radius;
background-color: $home-widget-bg-color;
// box-shadow: 0px 0px 9px 0px $home-widget-bg-color;
}
.revealer-title {
background-color: $home-widget-border-color;
color: $home-widget-bg-color;
padding-bottom: 2px;
font-weight: bold;
transition: all 0.3s;
&:hover {
background-color: $home-widget-border-hover-color;
}
}
.weather,
.notes,
.shortcuts,
.reminders {
border-top: 2px solid $home-widget-border-color;
}
.notes,
.reminders {
color: $home-button-fg-color;
padding: 10px;
button {
background-color: $home-button-bg-color;
border-radius: $home-button-border-radius;
padding: 4px 8px;
margin: 4px;
transition: all 0.3s;
box {
.timestamp {
font-size: 0.8em;
margin-top: 2px;
color: $home-widget-subtitle-color;
}
.details {
font-size: 0.8em;
color: $home-widget-subtitle-color;
margin: 1px 10px;
}
.status {
margin: 0px 10px;
}
}
image {
opacity: $home-button-fg-opacity;
}
}
button:hover {
background-color: $home-button-hover-bg-color;
}
}
.shortcuts {
color: $home-button-fg-color;
padding: 15px;
button {
background-color: $home-button-bg-color;
border-radius: $home-button-circle-border-radius;
margin: 5px;
font-size: 1.2em;
transition: all 0.3s;
label {
font-size: 1.2em;
}
}
button:hover {
background-color: $home-button-hover-bg-color;
}
}
}

View file

@ -0,0 +1,29 @@
(include "modules/bar.yuck")
(defwindow bar
:windowtype "dock"
:exclusive true
:namespace "eww-bar"
:geometry (geometry :x "0%"
; :y "0%"
:y "5px"
:width "100%"
:height "30px"
; :anchor "top")
:anchor "top center")
; :reserve (struts :side "top" :distance "4%")
:reserve (struts :side "top" :distance "30px")
(bar))
(include "modules/home.yuck")
(defwindow home
:windowtype "normal"
:exclusive false
:geometry (geometry
; :y "27px"
; :width "300px"
:height "100%"
:anchor "center left")
:stacking "foreground"
(home))

View file

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 24 24"
version="1.1"
id="svg1"
sodipodi:docname="cloud.svg"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
showgrid="false"
inkscape:zoom="35.75"
inkscape:cx="12"
inkscape:cy="12"
inkscape:window-width="1890"
inkscape:window-height="1118"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" />
<path
d="m 6,20.727273 q -2.4872727,0 -4.2436364,-1.712728 Q 0,17.290909 0,14.814545 0,12.687273 1.2763636,11.018182 2.5636364,9.3490908 4.6363636,8.890909 5.3236364,6.381818 7.3636364,4.8327271 9.4145455,3.2727272 12,3.2727272 q 3.196364,0 5.410909,2.2254544 2.225455,2.2145455 2.225455,5.4109094 1.887272,0.218182 3.12,1.636364 Q 24,13.941818 24,15.818182 q 0,2.050909 -1.429091,3.48 -1.429091,1.429091 -3.48,1.429091 z"
id="path1"
style="stroke-width:1.09091;fill:#d7afaf;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View file

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 24 24"
version="1.1"
id="svg1"
sodipodi:docname="folder-network.svg"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
showgrid="false"
inkscape:zoom="35.75"
inkscape:cx="12"
inkscape:cy="12"
inkscape:window-width="1890"
inkscape:window-height="1118"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" />
<path
d="M 1.2,14.4 V 2.4 A 2.4,2.4 0 0 1 3.6,0 h 7.2 l 2.4,2.4 h 7.2 a 2.4,2.4 0 0 1 2.4,2.4 v 9.6 a 2.4,2.4 0 0 1 -2.4,2.4 h -7.2 v 2.4 h 1.2 a 1.2,1.2 0 0 1 1.2,1.2 H 24 v 2.4 H 15.6 A 1.2,1.2 0 0 1 14.4,24 H 9.6 A 1.2,1.2 0 0 1 8.4,22.8 H 0 v -2.4 h 8.4 a 1.2,1.2 0 0 1 1.2,-1.2 h 1.2 V 16.8 H 3.6 A 2.4,2.4 0 0 1 1.2,14.4 Z"
id="path1"
style="fill:#d7afaf;fill-opacity:1;stroke-width:1.2" />
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 24 24"
version="1.1"
id="svg1"
sodipodi:docname="network-pos.svg"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="14.256278"
inkscape:cx="15.186292"
inkscape:cy="16.203388"
inkscape:window-width="1580"
inkscape:window-height="1118"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" />
<path
d="M 17.454545,8.7272727 H 7.6363636 V 6.5454545 H 17.454545 V 8.7272727 M 6.5454545,6.5454545 H 4.3636364 V 8.7272727 H 6.5454545 V 6.5454545 m 0,-3.2727272 H 4.3636364 V 5.4545455 H 6.5454545 V 3.2727273 m 3.2727273,0 H 7.6363636 V 5.4545455 H 9.8181818 V 3.2727273 M 13.090909,17.454545 v 2.181819 h 1.090909 c 0.6,0 1.090909,0.490909 1.090909,1.090909 h 7.636364 v 2.181818 h -7.636364 c 0,0.6 -0.490909,1.090909 -1.090909,1.090909 H 9.8181818 c -0.6,0 -1.0909091,-0.490909 -1.0909091,-1.090909 H 1.0909091 v -2.181818 h 7.6363636 c 0,-0.6 0.4909091,-1.090909 1.0909091,-1.090909 H 10.909091 V 17.454545 H 3.2727273 c -1.2109091,0 -2.1818182,-0.970909 -2.1818182,-2.181818 V 2.1818182 C 1.0909091,0.97090909 2.0727273,0 3.2727273,0 H 20.727273 c 1.210909,0 2.181818,0.97090909 2.181818,2.1818182 V 15.272727 c 0,1.210909 -0.970909,2.181818 -2.181818,2.181818 h -7.636364 m 7.636364,-2.181818 V 2.1818182 H 3.2727273 V 15.272727 H 20.727273 M 10.909091,5.4545455 h 8.727273 V 3.2727273 H 10.909091 V 5.4545455 M 4.3636364,12 H 10.909091 V 9.8181818 H 4.3636364 V 12 m 8.7272726,2.181818 h 6.545455 V 12 h -6.545455 z"
id="path1"
style="stroke-width:1.09091;fill:#d7afaf;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View file

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 24 24"
version="1.1"
id="svg1"
sodipodi:docname="nintendo-wii.svg"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#505050"
bordercolor="#d7afaf"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#d1d1d1"
showgrid="false"
inkscape:zoom="21.708333"
inkscape:cx="14.28023"
inkscape:cy="16.629559"
inkscape:window-width="2035"
inkscape:window-height="1358"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" />
<path
d="m 19.008,17.878 h -2.244 v -7.38 h 2.244 v 7.38 M 19.2,7.846 c 0,0.732 -0.6,1.332 -1.32,1.332 A 1.332,1.332 0 0 1 16.548,7.846 c 0,-0.744 0.6,-1.344 1.332,-1.344 0.72,0 1.32,0.6 1.32,1.344 m 4.584,10.032 h -2.256 v -7.38 h 2.256 v 7.38 M 24,7.846 c 0,0.732 -0.6,1.332 -1.344,1.332 A 1.332,1.332 0 0 1 21.324,7.846 c 0,-0.744 0.6,-1.344 1.332,-1.344 0.744,0 1.344,0.6 1.344,1.344 M 13.08,7.21 h 2.4 l -2.544,8.94 c 0,0 -0.336,1.848 -1.8,1.848 -1.452,0 -1.788,-1.848 -1.788,-1.848 L 7.74,10.318 6.132,16.15 c 0,0 -0.348,1.848 -1.8,1.848 -1.452,0 -1.788,-1.848 -1.788,-1.848 L 0,7.21 H 2.4 L 4.464,15.154 6.132,8.71 C 6.516,7.09 7.74,7.114 7.74,7.114 c 0,0 1.224,-0.024 1.608,1.596 l 1.656,6.444 z"
id="path1"
style="fill:#d7afaf;fill-opacity:1;stroke-width:1.2" />
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View file

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 24 24"
version="1.1"
id="svg1"
sodipodi:docname="play-network.svg"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
showgrid="false"
inkscape:zoom="35.75"
inkscape:cx="12"
inkscape:cy="12"
inkscape:window-width="1890"
inkscape:window-height="1118"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" />
<path
d="M 15.6,20.4 A 1.2,1.2 0 0 0 14.4,19.2 H 13.2 V 16.8 H 18 a 2.4,2.4 0 0 0 2.4,-2.4 V 2.4 A 2.4,2.4 0 0 0 18,0 H 6 A 2.4,2.4 0 0 0 3.6,2.4 v 12 A 2.4,2.4 0 0 0 6,16.8 h 4.8 v 2.4 H 9.6 A 1.2,1.2 0 0 0 8.4,20.4 H 0 v 2.4 H 8.4 A 1.2,1.2 0 0 0 9.6,24 h 4.8 a 1.2,1.2 0 0 0 1.2,-1.2 H 24 v -2.4 h -8.4 m -6,-7.2 V 3.6 l 6,4.8 z"
id="path1"
style="fill:#d7afaf;fill-opacity:1;stroke-width:1.2" />
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 24 24"
version="1.1"
id="svg1"
sodipodi:docname="router-network-wireless.svg"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
showgrid="false"
inkscape:zoom="35.75"
inkscape:cx="12"
inkscape:cy="12"
inkscape:window-width="1890"
inkscape:window-height="1118"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" />
<path
d="M 22.285714,2.4 21.371429,3.3142857 C 20,2.0571429 18.285714,1.3714286 16.571429,1.3714286 c -1.714286,0 -3.428572,0.6857143 -4.8,1.9428571 L 10.857143,2.4 c 1.6,-1.6 3.657143,-2.4 5.714286,-2.4 2.057142,0 4.114285,0.8 5.714285,2.4 m -5.714285,0.2285714 c 1.371428,0 2.742857,0.5714286 3.771428,1.6 L 19.428571,5.1428571 C 18.628571,4.3428571 17.6,4 16.571429,4 15.542857,4 14.514286,4.3428571 13.714286,5.1428571 L 12.8,4.2285714 c 1.028571,-1.0285714 2.4,-1.6 3.771429,-1.6 m 1.142857,7.6571426 H 20 c 0.605714,0 1.188571,0.24 1.611429,0.674286 0.434285,0.422857 0.674285,1.005714 0.674285,1.611429 v 2.285714 c 0,0.605714 -0.24,1.188571 -0.674285,1.611428 C 21.188571,16.902857 20.605714,17.142857 20,17.142857 h -6.857143 v 2.285714 h 1.142857 c 0.628572,0 1.142857,0.514286 1.142857,1.142858 h 8 v 2.285714 h -8 C 15.428571,23.485714 14.914286,24 14.285714,24 H 9.7142859 C 9.0857145,24 8.5714288,23.485714 8.5714288,22.857143 H 0.57142879 V 20.571429 H 8.5714288 c 0,-0.628572 0.5142857,-1.142858 1.1428571,-1.142858 H 10.857143 V 17.142857 H 4.0000002 c -0.6057143,0 -1.1885714,-0.24 -1.6114286,-0.674286 C 1.9542859,16.045714 1.7142859,15.462857 1.7142859,14.857143 v -2.285714 c 0,-0.605715 0.24,-1.188572 0.6742857,-1.611429 0.4228572,-0.434286 1.0057143,-0.674286 1.6114286,-0.674286 H 15.428571 V 5.7142857 h 2.285715 V 10.285714 M 4.0000002,14.857143 H 6.2857145 V 12.571429 H 4.0000002 v 2.285714 m 4,0 H 10.285714 V 12.571429 H 8.0000002 v 2.285714 m 3.9999998,0 h 2.285714 V 12.571429 H 12 Z"
id="path1"
style="stroke-width:1.14286;fill:#d7afaf;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View file

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 24 24"
version="1.1"
id="svg1"
sodipodi:docname="router-network.svg"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
showgrid="false"
inkscape:zoom="35.75"
inkscape:cx="12"
inkscape:cy="12"
inkscape:window-width="1890"
inkscape:window-height="1118"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" />
<path
d="M 3.6,3.6 C 2.28,3.6 1.2,4.68 1.2,6 v 4.8 c 0,1.332 1.08,2.4 2.4,2.4 h 7.2 v 2.4 H 9.6 c -0.66,0 -1.2,0.54 -1.2,1.2 H 0 v 2.4 h 8.4 c 0,0.66 0.54,1.2 1.2,1.2 h 4.8 c 0.66,0 1.2,-0.54 1.2,-1.2 H 24 v -2.4 h -8.4 c 0,-0.66 -0.54,-1.2 -1.2,-1.2 h -1.2 v -2.4 h 7.2 c 1.332,0 2.4,-1.068 2.4,-2.4 V 6 C 22.8,4.68 21.732,3.6 20.4,3.6 H 3.6 M 4.8,7.2 H 7.2 V 9.6 H 4.8 V 7.2 m 4.2,0 h 2.4 V 9.6 H 9 V 7.2 m 4.2,0 h 2.4 v 2.4 h -2.4 z"
id="path1"
style="fill:#d7afaf;fill-opacity:1;stroke-width:1.2" />
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View file

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 24 24"
version="1.1"
id="svg1"
sodipodi:docname="server-network.svg"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
showgrid="false"
inkscape:zoom="35.75"
inkscape:cx="12"
inkscape:cy="12"
inkscape:window-width="1890"
inkscape:window-height="1118"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" />
<path
d="m 13.2,19.2 h 1.2 a 1.2,1.2 0 0 1 1.2,1.2 H 24 v 2.4 H 15.6 A 1.2,1.2 0 0 1 14.4,24 H 9.6 A 1.2,1.2 0 0 1 8.4,22.8 H 0 v -2.4 h 8.4 a 1.2,1.2 0 0 1 1.2,-1.2 h 1.2 V 16.8 H 2.4 A 1.2,1.2 0 0 1 1.2,15.6 V 10.8 A 1.2,1.2 0 0 1 2.4,9.6 h 19.2 a 1.2,1.2 0 0 1 1.2,1.2 v 4.8 a 1.2,1.2 0 0 1 -1.2,1.2 h -8.4 v 2.4 M 2.4,0 h 19.2 a 1.2,1.2 0 0 1 1.2,1.2 V 6 A 1.2,1.2 0 0 1 21.6,7.2 H 2.4 A 1.2,1.2 0 0 1 1.2,6 V 1.2 A 1.2,1.2 0 0 1 2.4,0 m 6,4.8 H 9.6 V 2.4 H 8.4 v 2.4 m 0,9.6 H 9.6 V 12 H 8.4 v 2.4 M 3.6,2.4 V 4.8 H 6 V 2.4 H 3.6 m 0,9.6 v 2.4 H 6 V 12 Z"
id="path1"
style="fill:#d7afaf;fill-opacity:1;stroke-width:1.2" />
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View file

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 24 24"
version="1.1"
id="svg1"
sodipodi:docname="ceiling-light-multiple.svg"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="7.231215"
inkscape:cx="8.8505182"
inkscape:cy="9.5419649"
inkscape:window-width="1890"
inkscape:window-height="1118"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" />
<path
d="m 9.6,10.8 h 3.6 v -6 h 2.4 v 6 h 3.6 L 24,20.4 H 4.8 l 4.8,-9.6 m 7.2,10.8 C 16.8,22.932 15.732,24 14.4,24 13.068,24 12,22.932 12,21.6 h 4.8 M 7.452,9.732 8.112,8.4 H 10.8 V 0 H 8.4 V 6 H 4.8 L 0,15.6 h 4.512 z"
id="path1"
style="stroke-width:1.2;fill:#d7afaf;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 24 24"
version="1.1"
id="svg1"
sodipodi:docname="home-assistant.svg"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="6.2209433"
inkscape:cx="26.603682"
inkscape:cy="-7.8766189"
inkscape:window-width="1890"
inkscape:window-height="1118"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" />
<path
d="m 23.093484,13.512748 h -2.03966 v 9.065156 h -7.932011 v -3.773371 l 3.161473,-3.161474 0.804533,0.135978 c 1.314447,0 2.379603,-1.065156 2.379603,-2.379604 0,-1.314447 -1.065156,-2.379603 -2.379603,-2.379603 a 2.3796034,2.3796034 0 0 0 -2.379604,2.379603 l 0.113315,0.804533 -1.699717,1.72238 V 9.7167138 c 0.747875,-0.407932 1.246459,-1.1898017 1.246459,-2.0963173 A 2.3796034,2.3796034 0 0 0 11.988669,5.2407931 2.3796034,2.3796034 0 0 0 9.6090652,7.6203965 c 0,0.9065156 0.4985838,1.6883853 1.2464588,2.0963173 V 15.926346 L 9.1558074,14.203966 9.2691218,13.399433 A 2.3796034,2.3796034 0 0 0 6.8895184,11.01983 2.3796034,2.3796034 0 0 0 4.509915,13.399433 2.3796034,2.3796034 0 0 0 6.8895184,15.779037 l 0.8045326,-0.135978 3.161473,3.161474 v 3.773371 H 2.9235127 V 13.512748 H 0.94050992 C 0.46458924,13.512748 0,13.512748 0,13.274788 0.01133144,13.025496 0.48725212,12.549575 0.97450425,12.062323 L 10.855524,2.181303 c 0.373938,-0.3739377 0.759207,-0.7592068 1.133145,-0.7592068 0.373937,0 0.759206,0.3852691 1.133144,0.7592068 l 4.532578,4.5325779 V 5.5807364 h 2.266289 v 3.3994335 l 3.150142,3.1501421 c 0.453257,0.453257 0.917847,0.917847 0.929178,1.155807 0,0.226629 -0.453258,0.226629 -0.906516,0.226629 M 6.8895184,12.379603 a 1.01983,1.01983 0 0 1 1.01983,1.01983 1.01983,1.01983 0 0 1 -1.01983,1.01983 1.01983,1.01983 0 0 1 -1.01983,-1.01983 1.01983,1.01983 0 0 1 1.01983,-1.01983 m 10.1983006,0 c 0.566572,0 1.01983,0.453258 1.01983,1.01983 0,0.566573 -0.453258,1.01983 -1.01983,1.01983 a 1.01983,1.01983 0 0 1 -1.01983,-1.01983 1.01983,1.01983 0 0 1 1.01983,-1.01983 m -5.09915,-5.7790365 c 0.566572,0 1.01983,0.4532578 1.01983,1.01983 0,0.5665722 -0.453258,1.01983 -1.01983,1.01983 -0.566573,0 -1.01983,-0.4532578 -1.01983,-1.01983 0,-0.5665722 0.453257,-1.01983 1.01983,-1.01983 z"
id="path1"
style="fill:#d7afaf;fill-opacity:1;stroke-width:1.13314" />
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View file

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg
fill="#000000"
width="24"
height="24"
viewBox="0 0 0.72 0.72"
role="img"
version="1.1"
id="svg35611"
sodipodi:docname="jellyfin-svgrepo-com.svg"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs35615" />
<sodipodi:namedview
id="namedview35613"
pagecolor="#d7afaf"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
showgrid="false"
inkscape:zoom="15.909903"
inkscape:cx="7.1967757"
inkscape:cy="18.007653"
inkscape:window-width="3390"
inkscape:window-height="1341"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg35611" />
<path
d="m 0.36001843,6e-5 c -0.09522,0 -0.401946,0.556058 -0.355205,0.649929 0.0468,0.09387 0.66421,0.09282 0.71047,0 C 0.76154343,0.557199 0.45532943,0 0.36001843,0 Z m 0.232803,0.568478 c -0.03024,0.06084 -0.434796,0.0615 -0.465427,0 -0.03066,-0.06153 0.170223,-0.425886 0.232714,-0.425886 0.06243,0 0.263104,0.364985 0.232773,0.425886 z m -0.232803,-0.292594 c -0.03162,0 -0.133382,0.184503 -0.117902,0.215673 0.01554,0.0312 0.220443,0.03081 0.235804,0 0.01533,-0.03081 -0.08622,-0.215703 -0.117902,-0.215703 z"
id="path35609"
style="stroke-width:0.0300004;fill:#d7afaf" />
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View file

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="24"
height="24"
viewBox="0 0 24 24"
version="1.1"
id="svg18599"
sodipodi:docname="mastodon.svg"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs18603" />
<sodipodi:namedview
id="namedview18601"
pagecolor="#d7afaf"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="true"
inkscape:deskcolor="#d1d1d1"
showgrid="false"
inkscape:zoom="24.810765"
inkscape:cx="6.3883561"
inkscape:cy="13.723882"
inkscape:window-width="3390"
inkscape:window-height="1341"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg18599" />
<title
id="title18593">Mastodon</title>
<path
d="m 23.180227,7.8797696 c 0,-5.2063103 -3.408714,-6.7328504 -3.408714,-6.7328504 -3.344497,-1.53725005 -12.2274889,-1.52118005 -15.5398853,0 0,0 -3.40871427,1.5265401 -3.40871427,6.7328504 0,6.1972304 -0.35318215,13.8942104 5.65086437,15.4850204 2.1672418,0.57313 4.0294602,0.69632 5.5277872,0.61062 2.718419,-0.14998 4.243505,-0.96949 4.243505,-0.96949 l -0.091,-1.97647 c 0,0 -1.942486,0.61062 -4.125778,0.54099 C 9.8664104,21.49544 7.5868011,21.33476 7.233619,18.67804 7.20152,18.44237 7.18542,18.19598 7.18542,17.93352 c 4.580628,1.11946 8.487001,0.48742 9.562597,0.35887 3.002024,-0.35887 5.618756,-2.21214 5.950528,-3.90473 0.524419,-2.66743 0.48161,-6.5078904 0.48161,-6.5078904 z M 19.177485,14.59649 H 16.68568 V 8.4835796 c 0,-2.6603501 -3.422223,-2.7620501 -3.422223,0.36934 V 12.19843 H 10.787692 V 8.8529196 c 0,-3.1313901 -3.422224,-3.0296901 -3.422224,-0.36934 V 14.59649 H 4.8683135 c 0,-6.5357804 -0.2780538,-7.9168105 0.9838882,-9.3674206 1.3849292,-1.54696 4.2670853,-1.64867 5.5504163,0.3265201 l 0.620286,1.0438 0.620277,-1.0438 c 1.288681,-1.9858901 4.176176,-1.8627801 5.550416,-0.3265201 1.267293,1.4613201 0.983888,2.8369902 0.983888,9.3674206 z"
id="path18595"
style="fill:#d7afaf;fill-opacity:1;stroke-width:0.0467831" />
<metadata
id="metadata48828">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:title>Mastodon</dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View file

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg
width="24"
height="24"
viewBox="0 0 30.72 30.72"
version="1.1"
id="svg39874"
sodipodi:docname="nextcloud-svgrepo-com.svg"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs39878" />
<sodipodi:namedview
id="namedview39876"
pagecolor="#da74e5"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="true"
inkscape:deskcolor="#d1d1d1"
showgrid="false"
inkscape:zoom="31.819805"
inkscape:cx="9.349523"
inkscape:cy="13.623591"
inkscape:window-width="3390"
inkscape:window-height="1341"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg39874" />
<path
id="circle39870"
style="fill:#d7afaf;stroke-width:0.03"
d="M 15.36,0 A 15.36,15.36 0 0 0 0,15.36 15.36,15.36 0 0 0 15.36,30.72 15.36,15.36 0 0 0 30.72,15.36 15.36,15.36 0 0 0 15.36,0 Z m 0.015,11.127 c 1.926,-0.003 3.546,1.311 4.053,3.081 0.441,-0.936 1.38,-1.602 2.478,-1.602 1.518,0.006 2.748,1.236 2.754,2.754 -0.006,1.518 -1.236,2.748 -2.754,2.754 -1.095,0 -2.037,-0.663 -2.478,-1.602 -0.507,1.77 -2.127,3.081 -4.053,3.081 -1.938,0 -3.564,-1.326 -4.062,-3.111 -0.435,0.954 -1.389,1.632 -2.499,1.632 C 7.296,18.105 6.066,16.878 6.06,15.36 c 0.009,-1.518 1.236,-2.748 2.754,-2.754 1.11,0 2.064,0.678 2.499,1.632 0.498,-1.785 2.124,-3.111 4.062,-3.111 z m 0,1.614 c -1.455,0 -2.619,1.164 -2.616,2.619 v 0.024 c 0.006,1.44 1.176,2.601 2.616,2.595 1.455,0 2.619,-1.164 2.619,-2.619 0,-1.455 -1.164,-2.619 -2.619,-2.619 z m -6.561,1.482 c -0.639,0 -1.137,0.498 -1.137,1.137 v 0.024 c 0.006,0.621 0.516,1.119 1.137,1.113 0.639,0 1.137,-0.498 1.137,-1.137 0,-0.636 -0.501,-1.137 -1.137,-1.137 z m 13.092,0 c -0.636,0 -1.137,0.498 -1.137,1.137 v 0.024 c 0.006,0.621 0.516,1.119 1.137,1.113 0.636,0 1.137,-0.498 1.137,-1.137 0,-0.636 -0.498,-1.137 -1.137,-1.137 z" />
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View file

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 24 24"
version="1.1"
id="svg1"
sodipodi:docname="briefcase.svg"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="12.725464"
inkscape:cx="-6.6009382"
inkscape:cy="21.610214"
inkscape:window-width="1890"
inkscape:window-height="1118"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" />
<path
d="m 9.6,0.6 h 4.8 A 2.4,2.4 0 0 1 16.8,3 v 2.4 h 4.8 A 2.4,2.4 0 0 1 24,7.8 V 21 a 2.4,2.4 0 0 1 -2.4,2.4 H 2.4 C 1.068,23.4 0,22.32 0,21 V 7.8 C 0,6.468 1.068,5.4 2.4,5.4 H 7.2 V 3 C 7.2,1.668 8.268,0.6 9.6,0.6 m 4.8,4.8 V 3 H 9.6 v 2.4 z"
id="path1"
style="stroke-width:1.2;fill:#d7afaf;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 24 24"
version="1.1"
id="svg1"
sodipodi:docname="monitor-multiple.svg"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
showgrid="false"
inkscape:zoom="35.75"
inkscape:cx="12"
inkscape:cy="12"
inkscape:window-width="1890"
inkscape:window-height="1118"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" />
<path
d="M 22,17 V 7 H 6 V 17 H 22 M 22,5 a 2,2 0 0 1 2,2 v 10 c 0,1.11 -0.9,2 -2,2 h -6 v 2 h 2 v 2 h -8 v -2 h 2 V 19 H 6 C 4.89,19 4,18.11 4,17 V 7 A 2,2 0 0 1 6,5 H 22 M 2,3 V 15 H 0 V 3 A 2,2 0 0 1 2,1 h 18 v 2 z"
id="path1"
style="fill:#d7afaf;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 B

View file

@ -0,0 +1,75 @@
(defwidget bar []
(centerbox :orientation "h"
(leftgroup)
(centergroup)
(rightgroup)))
;widget templates
(include "modules/bar/revealer-on-hover.yuck")
(include "modules/bar/metric.yuck")
;centerbar groups
(defwidget leftgroup []
(box :class "leftgroup ${((jq(sway_info,'workspace_info[] | select(.is_focused) | .profile_name','r') == 'Work') ? 'profile-work' : ((jq(sway_info,'workspace_info[] | select(.is_focused) | .profile_name','r') == 'School') ? 'profile-school' : ((jq(sway_info,'workspace_info[] | select(.is_focused) | .profile_name','r') == 'Development') ? 'profile-development' : ((jq(sway_info,'workspace_info[] | select(.is_focused) | .profile_name','r') == 'Penelope') ? 'profile-personal' : ''))))}"
:orientation "h"
:space-evenly false
:halign "start"
(powermenu)
(profile)
(workspaces :array {jq(sway_info,'.workspace_info','r')})
(scratchpad)
(windowtitle)))
(defwidget centergroup []
(box :visible false
:class "centergroup"
:orientation "h"
:space-evenly false
:halign "start"))
(defwidget rightgroup []
(box :class "rightgroup"
:orientation "h"
:space-evenly false
:halign "end"
(idleinhibit)
(volume)
(network)
(vpn)
(bluetooth)
(battery)
(sysdisk)
(sysmem)
(clock)
(tray)
(notification_center)))
(include "variables/bar/profile-info.yuck")
(include "variables/bar/sway-info.yuck")
;leftgroup imports
(include "modules/bar/powermenu.yuck")
(include "modules/bar/profile.yuck")
(include "modules/bar/workspaces.yuck")
(include "modules/bar/window_name.yuck")
(include "modules/bar/scratchpad.yuck")
;centergroup
(include "variables/bar/music.yuck")
(include "modules/bar/music.yuck")
;rightgroup
(include "modules/bar/idle_inhibit.yuck")
(include "modules/bar/volume.yuck")
(include "variables/bar/network-manager.yuck")
(include "modules/bar/network.yuck")
(include "modules/bar/vpn.yuck")
(include "variables/bar/bluetooth.yuck")
(include "modules/bar/bluetooth.yuck")
(include "modules/bar/battery.yuck")
(include "modules/bar/sysdisk.yuck")
(include "modules/bar/sysmem.yuck")
(include "modules/bar/clock.yuck")
(include "modules/bar/tray.yuck")
(include "modules/bar/notification-center.yuck")

View file

@ -0,0 +1,21 @@
(defvar reveal_battery false)
(defwidget battery []
(revealer-on-hover :class "${reveal_battery} battery"
:revealvar reveal_battery
:revealvar-name "reveal_battery"
(label :class "revealer-preview ${(EWW_BATTERY == '' || jq(EWW_BATTERY,'.[].status?','r') == 'Charging') ? 'active' : '' }"
:tooltip `${(EWW_BATTERY == "" || jq(EWW_BATTERY,'.[].status?') == '"Charging"') ? "Charging" : "Discharging"}, ${(EWW_BATTERY == "") ? "" : "${round(jq(EWW_BATTERY,'.total_avg?'),1)}% of total average"}`
:text `${(EWW_BATTERY == "" || jq(EWW_BATTERY,'.[].status?') == '"Charging"') ? " " : "󰁹 "}${(EWW_BATTERY == "") ? "" : "${round(jq(EWW_BATTERY,'first(.[].capacity?)'),0)}%"}`)
(battery_children)))
(defwidget battery_children []
(box :class "reveal-children"
:orientation "h"
:space-evenly false
:halign "center"
(box
(progress :height 10
:valign "center"
:value {(EWW_BATTERY == "") ? 100 : jq(EWW_BATTERY,'first(.[].capacity?)')}
:orientation "h"))))

View file

@ -0,0 +1,21 @@
(defvar reveal_bluetooth false)
(defwidget bluetooth []
(revealer-on-hover :class "${reveal_bluetooth} bluetooth"
:revealvar reveal_bluetooth
:revealvar-name "reveal_bluetooth"
(button :onclick 'blueman-manager'
:class "revealer-preview ${matches(jq(bluetooth_status,'.[].connected'),'yes') ? 'active' : 'inactive'}"
"")
(bluetooth_children :array bluetooth_status)))
(defwidget bluetooth_children [array]
(box :class "reveal-children"
:orientation "h"
:space-evenly true
:halign "start"
(for device in array
(button :onclick {(device.connected == "yes") ? 'bluetoothctl disconnect "${device.address}"' : 'bluetoothctl connect "${device.address}"'}
:class {(device.connected == "yes") ? "active" : "inactive"}
:tooltip "${device.name}"
"${device.icon}"))))

View file

@ -0,0 +1,3 @@
(defwidget clock []
(label :class "datetime"
:text {formattime(EWW_TIME,"%b %d, %Y | %H:%M")}))

View file

@ -0,0 +1,7 @@
(defvar inhibit_active false)
(defwidget idleinhibit []
(box :class "idle-inhibitor ${inhibit_active ? 'active' : 'inactive'}"
(button :onclick {inhibit_active ? 'killall eww-idle-inhibit;eww update inhibit_active=false' : 'systemd-inhibit --what="idle" --mode="block" scripts/bar/eww-idle-inhibit & eww update inhibit_active=true'}
:tooltip "Idling is ${inhibit_active ? '' : 'not '}inhibited"
{inhibit_active ? "" : ""})))

View file

@ -0,0 +1,12 @@
(defwidget metric [label value]
(box :orientation "h"
:class "metric"
:space-evenly false
(box :class "label" label)
(transform :rotate 50
:transform-origin-x '50%'
:transform-origin-y '50%'
(circular-progress :value value
:start-at 0
:thickness 10
:clockwise true))))

View file

@ -0,0 +1,7 @@
(defwidget music []
(box :visible {nowplaying != ""}
:class {nowplaying != "" ? "music" : "hidden"}
:orientation "h"
:space-evenly false
:halign "center"
{nowplaying != "" ? "󰎇 ${nowplaying}" : ""}))

View file

@ -0,0 +1,23 @@
(defvar reveal_network false)
(defwidget network []
(revealer-on-hover
:class "${reveal_network} networks"
:revealvar reveal_network
:revealvar-name "reveal_network"
(button :onclick 'nm-connection-editor'
:tooltip "${jq(network_manager.interfaces, '.[] | "\\(.connection) (\\(.device)) \\n"', 'r')}"
:class "revealer-preview ${(jq(network_manager.interfaces, '[ .[] | select(.state=="connected") ] | length') > 0 ? 'active' : 'inactive')}" ;${network_status.wifi || network_status.wired ? 'active' : 'inactive'}"
"󰇧")
(network_children :array "${network_manager.interfaces}")))
(defwidget network_children [array]
(box :class "reveal-children"
:orientation "h"
:space-evenly false
:halign "center"
(for interface in array
(button :onclick "nmcli device ${( interface.state == 'connected' ? 'down' : 'up' )} ${interface.device}"
:class {( interface.state == "connected" ? 'active' : 'inactive' )}
:tooltip "${interface.connection} (${interface.device})"
{( interface.type == "wifi" ? "" : ( interface.type == "ethernet" ? "󰈀" : "" ))}))))

View file

@ -0,0 +1,9 @@
(deflisten notification_center_info :initial '{ "count": 0, "dnd": false, "visible": false, "inhibited": false }'
"swaync-client -s")
(defwidget notification_center []
(box :class "notification-center ${(jq(notification_center_info,'.count','r') > 0 ) ? 'active' : 'inactive'}"
(button :onclick 'swaync-client -t'
:onrightclick 'swaync-client -d'
:tooltip "${jq(notification_center_info,'.count','r')} unread notifications"
"${!jq(notification_center_info,'.dnd','r') ? '' : ''}")))

View file

@ -0,0 +1,29 @@
(defvar reveal_powermenu false)
(defwidget powermenu []
(revealer-on-hover :revealvar reveal_powermenu
:class "powermenu ${reveal_powermenu}"
:revealvar-name "reveal_powermenu"
(button :onclick 'sdu power shutdown'
:class "revealer-preview"
:tooltip "Shutdown"
"")
(powermenu_children)))
(defwidget powermenu_children []
(box :class "reveal-children"
:orientation "h"
:space-evenly false
:halign "center"
(button :onclick 'sdu power reboot'
:tooltip "Reboot"
"")
(button :onclick 'sdu power suspend'
:tooltip "Suspend"
"󰤄")
(button :onclick 'sdu power lock'
:tooltip "Lock"
"")
(button :onclick 'sdu power logout'
:tooltip "Logout"
"")))

View file

@ -0,0 +1,5 @@
(defwidget profile []
(button :onclick "sdu profile switch next"
:tooltip {jq(profile_info,'.name','r')}
:class "profile profile-${(jq(profile_info,'.name','r'))}"
{jq(profile_info,'.icon','r')}))

View file

@ -0,0 +1,12 @@
(defwidget revealer-on-hover [revealvar revealvar-name ?class ?duration ?transition]
(box :class "${class} revealer-on-hover"
:orientation "h"
:space-evenly false
(eventbox :onscroll "if test '{}' = 'down';then ${EWW_CMD} update ${revealvar-name}=true;else ${EWW_CMD} update ${revealvar-name}=false;fi"
:onhoverlost "${EWW_CMD} update ${revealvar-name}=false"
(box :space-evenly false
(children :nth 0)
(revealer :reveal revealvar
:transition {transition ?: "slideright"}
:duration {duration ?: "500ms"}
(children :nth 1))))))

View file

@ -0,0 +1,29 @@
(defvar reveal_scratchpad false)
(defwidget scratchpad []
(box :class "${reveal_scratchpad} scratchpad revealer-on-hover"
:orientation "h"
:space-evenly false
(eventbox :onhover "${EWW_CMD} update reveal_scratchpad=true"
:onhoverlost "${EWW_CMD} update reveal_scratchpad=false"
(box :space-evenly false
(label :class "revealer-preview"
:tooltip "${jq(sway_info,'.scratchpad_info[] | "\\(.title) (\\(.name)) \\n"','r')}"
:text " ${jq(sway_info,'.scratchpad_info | length')} ${reveal_scratchpad ? '' : ''}")
(revealer :reveal reveal_scratchpad
:transition "slideright"
:duration "500ms"
(scratchpad_children :array {jq(sway_info,'.scratchpad_info','r')}))))))
(defwidget scratchpad_children [array]
(box :orientation "h"
:class "reveal-children"
:space-evenly false
(for entry in array
(button :onclick 'swaymsg [con_id=${entry.window_id}] scratchpad show'
:class "scratchpad-item ${(entry.visible == 'true') ? 'active' : 'inactive'}"
:tooltip "${entry.title}
${entry.name}"
(image :path {entry.icon}
:image-width 20
:image-height 20)))))

View file

@ -0,0 +1,23 @@
(defvar reveal_sysdisk false)
(defwidget sysdisk []
(revealer-on-hover :class "${reveal_sysdisk} sysdisk"
:revealvar reveal_sysdisk
:revealvar-name "reveal_sysdisk"
(box :class "revealer-preview"
:tooltip "${jq(EWW_DISK,'to_entries[]|"\\(.key) - \\(.value.used_perc*10|round/10)% Used\\n\\(.value.free/1073741824*100|round/100)GiB Available\\n"','r')}"
(metric :label "󰟒 "
:value {EWW_DISK["/home"].used_perc}))
(sysdisk_children)))
(defwidget sysdisk_children []
(box :class "reveal-children"
:orientation "h"
:space-evenly false
:halign "center"
(metric :label "󰿠 "
:tooltip "root"
:value {EWW_DISK["/"].used_perc})
(metric :label "󰬉 "
:tooltip "boot"
:value {EWW_DISK["/boot"].used_perc})))

View file

@ -0,0 +1,21 @@
(defvar reveal_sysmem false)
(defwidget sysmem []
(revealer-on-hover :class "${(reveal_sysmem) || (EWW_RAM.used_mem / EWW_RAM.total_mem) > 0.95} sysmem"
:revealvar {(reveal_sysmem) || (EWW_RAM.used_mem / EWW_RAM.total_mem) > 0.95}
:revealvar-name "reveal_sysmem"
(box :class "revealer-preview"
:tooltip "${jq(EWW_RAM,'.|"RAM: \\(.used_mem_perc*10|round/10)% Used\\n\\(.used_mem/1073741824*100|round/100)/\\(.total_mem/1073741824*100|round/100)GiB Usage\\nSwap: \\((.total_swap-.free_swap)/.total_swap*1000|round/10)% Usage\\n\\((.total_swap-.free_swap)/1073741824*100|round/100)/\\(.total_swap/1073741824*100|round/100)"','r')}"
(metric :label " "
:value {EWW_RAM.used_mem_perc}))
(sysmem_children)))
(defwidget sysmem_children []
(box :class "reveal-children"
:orientation "h"
:space-evenly false
:halign "center"
(metric :label " "
:value {round((EWW_RAM.total_mem - EWW_RAM.free_mem) / EWW_RAM.total_mem,2) * 100})
(metric :label " "
:value {(EWW_RAM.total_swap != 0) ? round((EWW_RAM.total_swap - EWW_RAM.free_swap) / EWW_RAM.total_swap,2) * 100 : 100})))

View file

@ -0,0 +1,20 @@
(defvar reveal_tray false)
(defwidget tray []
(revealer-on-hover :class "tray ${reveal_tray}"
:revealvar reveal_tray
:revealvar-name "reveal_tray"
(label :class "revealer-preview"
:text {reveal_tray ? "" : ""})
(tray_children)))
(defwidget tray_children []
(box :orientation "h"
:space-evenly false
:halign "center"
(systray
:orientation "h"
:class "reveal-children"
:space-evenly true
:spacing 0
:icon-size 20
:prepend-new true)))

View file

@ -0,0 +1,25 @@
(defvar reveal_volume false)
(defwidget volume []
(revealer-on-hover :class "volume ${reveal_volume}"
:revealvar reveal_volume
:revealvar-name "reveal_volume"
(button :onclick 'pavucontrol-qt --tab 3'
:tooltip "Pulseaudio Volume Control"
:class "${(volume == 0) ? 'inactive' : 'active'} revealer-preview"
{(volume == 0) ? "" : ((volume > 50) ? "" : "")})
(volume_children)))
(deflisten volume :initial "50"
"scripts/bar/volume")
(defwidget volume_children []
(box :class "reveal-children" :orientation "h"
:space-evenly false
:halign "center"
(scale
:tooltip "volume: ${round(volume,0)}%"
:min 0
:max 100
:value {volume}
:orientation "h"
:onchange "wpctl set-volume @DEFAULT_AUDIO_SINK@ {}%;paplay 'volume.ogg'")))

View file

@ -0,0 +1,28 @@
(defvar reveal_vpn false)
(defwidget vpn []
(revealer-on-hover
:class "${reveal_vpn} vpn"
:revealvar reveal_vpn
:revealvar-name "reveal_vpn"
(button :onclick 'notify-send "TODO"'
:class "revealer-preview ${(jq(network_manager.vpns, '[ .[] | select(.active=="yes") ] | length') > 0 ? 'active' : 'inactive')}"
"${(jq(network_manager.vpns, '[ .[] | select(.active=="yes") ] | length') > 0 ? '' : '')}")
(vpn_children :array "${jq(network_manager.vpns,'.|sort_by(.name)')}")))
(defwidget vpn_children [array]
(box :class "reveal-children"
:orientation "h"
:space-evenly false
:halign "center"
(for vpn in array
(button :onclick "nmcli connection ${( vpn.active == 'yes' ? 'down' : 'up' )} ${vpn.name}"
:class {( vpn.active == "yes" ? 'active' : 'inactive' )}
:tooltip "${vpn.name}"
"${( vpn.name =~ '^[Hh]ome.*' ?
( vpn.name =~ '.*[Ff]ull.*' ? '' : '') :
( vpn.name =~ '^pia-.*' ?
( vpn.name =~ '.*local.*' ? '' : '' ) :
( vpn.name == 'SCA' ?
'' :
'') )
)} ${( vpn.active == 'yes' ? '' : '' )}"))))

View file

@ -0,0 +1,5 @@
(defwidget windowtitle []
(label :class {jq(sway_info,'.window_info.title','r') != "" ? "active_window" : ""}
:limit-width 40
:show-truncated true
:text {jq(sway_info,'.window_info.title','r')}))

View file

@ -0,0 +1,7 @@
(deflisten active_window_name :initial ""
:interval "60s"
"scripts/bar/activewindow")
(defwidget windowtitle []
(label :class {active_window_name != "" ? "active_window" : ""}
:text {active_window_name}))

View file

@ -0,0 +1,39 @@
(defvar wsreveal false)
(defwidget workspaces [array]
(eventbox :onhover "${EWW_CMD} update wsreveal=true"
:onhoverlost "${EWW_CMD} update wsreveal=false"
(box :class "workspaces profile-${jq(array,'.[]|select(.is_focused)|.profile_name','r')}"
:orientation "h"
:space-evenly false
:halign "start"
(revealer
:class "ws-left"
:reveal wsreveal
:transition "slideleft"
:duration "500ms"
(box
(for entry in array
(literal :visible {((entry.position == 'l') && !entry.is_focused) ? true : false}
:content {((entry.position == 'l') && !entry.is_focused) ? "(workspace :ws entry :side 'left')" : "(box :visible false)"}))))
(box :class "ws-center ${wsreveal}"
(for entry in array
(literal :visible {entry.is_focused ? true : false}
:content {entry.is_focused ? "(workspace :ws entry :side 'center' :lastws ${jq(array,'.[-1].num')})" : "(box :visible false)"})))
(revealer :class "ws-right"
:reveal wsreveal
:transition "slideright"
:duration "500ms"
(box
(for entry in array
(literal :visible {((entry.position == 'r') && !entry.is_focused) ? true : false}
:content {((entry.position == 'r') && !entry.is_focused) ? "(workspace :ws entry :side 'right')" : "(box :visible false)"})))))))
(defwidget workspace [ws side ?lastws ?firstws]
(button :onclick `swaymsg workspace "${ws.name}"`
:tooltip "${ws.profile_name} ( ${jq(captures(ws.num, '[0-9]$'),'.[].[]','r')} )"
:class '${side} ${ws.num == lastws ? "last-workspace" : (ws.num == firstws ? "first-workspace" : "middle-workspace")} profile-${jq(ws,'.profile_name','r')}'
(box
'${replace(ws.name,".*:","")}'
(label :class "workspace-number"
:text {jq(captures(ws.num, '[0-9]$'),'.[].[]','r')}))))

View file

@ -0,0 +1,41 @@
(defvar homewidgets_reveal false)
(defwidget home []
(revealer :transition "slideright"
:reveal homewidgets_reveal
:duration "250ms"
(box :orientation 'v'
:space-evenly false
(box :height 27)
(scroll :vscroll true
:hscroll false
:vexpand true
:height 400
(box :class "home"
:orientation "v"
:spacing 10
:width 300
:space-evenly false
(nowplayingbar)
(rat)
(shortcuts_revealer)
(weather_revealer)
(mcstatus_revealer)
(box
(notes_revealer))
(box
(reminders_revealer))
)))))
;widget templates
(include "modules/home/revealer-on-press.yuck")
;module imports
(include "modules/home/nowplayingart.yuck")
(include "modules/home/rat.yuck")
(include "modules/home/weather.yuck")
(include "modules/home/shortcuts.yuck")
(include "modules/home/notes.yuck")
(include "modules/home/reminders.yuck")
(include "modules/home/mcstatus.yuck")

View file

@ -0,0 +1,79 @@
(defpoll servers_status :initial '[{"online": true,"kind":"Java","players":{"online":0,"max":0,"list":null},"version":{"name":"version","protocol":0},"motd":"Message of the day","ping":0,"address":"ip.addre.ss"}]'
:interval "21600s"
'scripts/home/mcstatus')
(defvar reveal_mcstatus true)
(defwidget mcstatus_revealer []
(revealer-on-press
:revealvar reveal_mcstatus
:revealvar-name "reveal_mcstatus"
(button
:width 300
:class "revealer-title"
"Minecraft Servers ${reveal_mcstatus ? '' : ''}")
(mcstatus :json servers_status)))
(defwidget mcstatus [json]
(box
:class 'minecraft'
:orientation 'v'
:space-evenly false
(box
:orientation 'v'
:space-evenly false
(for server in json
(box
:class 'server'
:orientation 'h'
:space-evenly false
(box
(box
:class 'icon'
:valign 'center'
:width 75
:height {((server.ping!=0.0) ? 75 : 25 )}
:style 'background-image: url("${server.icon_path}");'
)
)
(box
:class 'details'
:space-evenly false
:orientation 'v'
(label
:class 'title'
:style "${( (server.ping==0.0)? 'color: red' : '' )}"
:text "${( (server.ping==0.0)? ' ' : '' )}${server.address}"
)
(label
:visible {(server.ping!=0.0)}
:xalign 0
:text "${server.players.online}/${server.players.max} players online"
)
(label
:visible {(server.ping!=0.0)}
:class 'motd'
:text "${server.motd}"
:wrap true
:wrap-mode 'word'
; :truncate true
)
(label
:visible {(server.ping!=0.0)}
:xalign 0
:text " ${round(server.ping,0)}ms"
)
)
)
)
)
(button
:class 'button'
:onclick 'eww poll servers_status'
:onrightclick 'rm ~/.cache/mc-server-info/cache.json;eww poll servers_status'
:tooltip 'right-click to bypass cache'
(label
:text "reload now"
)
)
)
)

View file

@ -0,0 +1,38 @@
(defpoll notes_list :initial '{"notes":[{"date":"1752630492","filepath":""}]}'
:interval "3600s"
'scripts/home/notes')
(defvar reveal_notes false)
(defwidget notes_revealer []
(revealer-on-press
:revealvar reveal_notes
:revealvar-name "reveal_notes"
:width 300
(button
:width 300
:class "revealer-title"
"Notes ${reveal_notes ? '' : ''}")
(notes :json {jq(notes_list,'.notes')})))
(defwidget notes [json]
(box
:class "notes"
:orientation "v"
:halign "baseline"
; :width 300
:height 150
:space-evenly true
(for note in json
(button :onclick "kate -n '${note.filepath}'"
(box
:orientation "v"
(label
:xalign 0
:wrap false
:truncate true
:text "󰎞 ${replace(note.filepath,"${get_env("HOME")}/Documents/Notes/",'')}")
(label
:xalign 0.5
:class "timestamp"
:text " ${formattime("${note.date}","%F %R")}"))))
))

View file

@ -0,0 +1,142 @@
(deflisten nowplaying_imgpath :initial ""
'scripts/home/nowplayingart.sh')
;(deflisten nowplaying_title :initial ""
; 'scripts/home/nowplaying-title.sh')
;(deflisten nowplaying_artist :initial ""
; 'scripts/home/nowplaying-artist.sh')
(deflisten nowplaying_info :initial '{"status":"","artist":"","title":""}'
'scripts/home/nowplaying.sh')
(defvar large_album_art false)
(defvar small_art_overlay false)
(defvar large_art_overlay false)
(defwidget nowplayingbar []
; (centerbox
(box
; :visible true
:visible {jq(nowplaying_info,'.title','r') != ""}
:orientation 'v'
:class "nowplayingbar"
:space-evenly false
(box
:orientation "h"
:space-evenly false
:halign "center"
:width 300
:height 100
; (nowplaying_revealer :visible {!large_album_art}
; :width 100
; :height 100)
(revealer
:transition "slideright"
; :transition "slideleft"
:duration "300ms"
:reveal {!large_album_art}
(eventbox
:onclick '${EWW_CMD} update large_album_art=true'
:onhover '${EWW_CMD} update small_art_overlay=true'
:onhoverlost '${EWW_CMD} update small_art_overlay=false'
(button
:height 100
:width 100
:valign "fill"
:halign "fill"
:hexpand false
:vexpand false
:onclick '${EWW_CMD} update large_album_art=true'
(overlay
(nowplayingart :size 'small')
(revealer
:transition "crossfade"
:duration "300ms"
:reveal {small_art_overlay}
(label :class "art-button-overlay small"
:justify "center"
:xalign 0.5
:yalign 0.5
:height 80
:width 80
:text ""))))))
(box
:class "mediadetails ${large_album_art ? 'fullwidth' : ''}"
:orientation "v"
:space-evenly true
:halign "fill"
:hexpand true
(label
:justify "center"
:text "󰎇 ${jq(nowplaying_info,'.title','r')}
󰠃 ${jq(nowplaying_info,'.artist','r')}")
(box
:orientation "h"
:space-evenly true
:halign "fill"
:hexpand true
; :width 130
; :spacing 15
:height 50
(button
:class "mediabutton"
:valign "center"
:halign "center"
:height 25
:width 25
:onclick "playerctl previous"
"")
(button
:class "mediabutton"
:valign "center"
:halign "center"
:height 25
:width 25
:onclick "playerctl play-pause"
{(jq(nowplaying_info,'.status','r') == 'playing') ? "" : ""})
(button
:class "mediabutton"
:valign "center"
:halign "center"
:height 25
:width 25
:onclick "playerctl next"
""))))
;; (nowplaying_revealer :visible false)))
(revealer
; :transition "slideup"
:transition "slidedown"
:duration "300ms"
:reveal {large_album_art}
(eventbox
; :visible {large_album_art}
:onclick '${EWW_CMD} update large_album_art=false'
:onhover '${EWW_CMD} update large_art_overlay=true'
:onhoverlost '${EWW_CMD} update large_art_overlay=false'
(button
:height 100
:width 100
:valign "fill"
:halign "fill"
:hexpand false
:vexpand false
:onclick '${EWW_CMD} update large_album_art=false'
(overlay
(nowplayingart :size 'big')
; :css 'margin: 20px;')
(revealer
:transition "crossfade"
:duration "300ms"
:reveal {large_art_overlay}
(label :class "art-button-overlay big"
:height 100
:width 100
:visible {large_art_overlay}
:text ""))))))))
(defwidget nowplayingart [size]
(box
:class "nowplayingart ${size}"
:hexpand false
; :width 100
; :height 100
; :path '${nowplaying_imgpath}'))
:style "background-image: url('${nowplaying_imgpath}');"))

View file

@ -0,0 +1,9 @@
(defpoll rat_image :interval "60s"
'random-image -d ~/Pictures/Phone/Albums/Rattos/ -s 300 -r')
(defwidget rat []
(box
:class "rat"
:orientation "h"
:width 300
:height 300
:style "background-image: url('${rat_image}');"))

View file

@ -0,0 +1,38 @@
;(defpoll reminders_list :initial '[]'
; :interval "3600s"
; 'scripts/home/reminders')
(deflisten reminders_list :initial '[]'
'scripts/home/reminders')
(defvar reveal_reminders true)
;(defvar reveal_reminders {jq(reminders_list,'length')>0})
(defwidget reminders_revealer []
(revealer-on-press
:visible {jq(reminders_list,'length')>0}
:revealvar reveal_reminders
:revealvar-name "reveal_reminders"
; {reveal_reminders ? "" : ""}
(button
:width 300
:class "revealer-title"
"Reminders ${reveal_reminders ? '' : ''}")
(reminders :json {jq(reminders_list,'.')})))
(defwidget reminders [json]
(box
:class "reminders"
:orientation "v"
:halign "baseline"
; :width 300
; :height 150
:space-evenly true
(for reminder in json
(button :onclick "open '${reminder.url}'"
(box
; :visible
:orientation "v"
(label
:xalign 0
:wrap false
:text "${reminder.name}"))))
))

View file

@ -0,0 +1,17 @@
(defwidget revealer-on-press [revealvar revealvar-name ?class ?duration ?transition ?visible]
(box
:class "${class} revealer-on-press ${revealvar ? 'revealer_opened' : 'revealer_closed'}"
:visible {visible ?: true}
; :width {revealvar ? 300 : 100}
:space-evenly false
(box
:orientation "vertical"
:space-evenly false
(eventbox
:onclick '${EWW_CMD} update ${revealvar-name}=${revealvar ? "false" : "true"}'
(children :nth 0))
(revealer
:reveal revealvar
:transition {transition ?: "slidedown"}
:duration {duration ?: "500ms"}
(children :nth 1)))))

View file

@ -0,0 +1,63 @@
(defvar reveal_shortcuts true)
(defwidget shortcuts_revealer []
(revealer-on-press
:revealvar reveal_shortcuts
:revealvar-name "reveal_shortcuts"
(button
:width 300
:class "revealer-title"
"Shortcuts ${reveal_shortcuts ? '' : ''}")
(shortcuts)))
(defwidget shortcuts []
(box
:class "shortcuts"
:orientation "v"
:space-evenly false
:halign "center"
:width 300
:height 75
(box
; :visible {jq(workspacesArray, '.[]\|select(.focused==true).num') <= 10}
:visible (arraylength(sway_info.workspace_profile.scripts) > 0)
:orientation "h"
:space-evenly true
:halign "center"
(for script in {jq(sway_info,'[.workspace_profile.scripts[0,1,2]]','r')}
(button
:visible "${script?.name!='null'}"
:onclick "${script?.command}"
:tooltip "${script?.name}"
(label
:width 60
:height 60
:justify "center"
:text "${script?.icon}"))
)
; (button
; :width 60
; :height 60
; :onclick "hass-cli -a services -I area_id -i left_bedroom -d light -s toggle"
; (label
; :justify "center"
; :text "󱣝"
; :tooltip "Turn on bedroom lights"))
)
(box
:visible (arraylength(sway_info.workspace_profile.scripts) > 3)
:orientation "h"
:space-evenly true
:halign "center"
(for script in {jq(sway_info, '[.workspace_profile.scripts[3,4,5]]','r')}
(button
:visible "${script?.name!='null'}"
:onclick "${script?.command}"
:tooltip "${script?.name}"
(label
:width 60
:height 60
:justify "center"
:text {script?.icon}))
))
))

View file

@ -0,0 +1,55 @@
(defpoll software_list :initial '[{"package_name":"package","package_version":"1","upstream_version":"1","up_to_date":"true"}]'
:interval "43200s"
'software-release-monitor')
(defvar reveal_software true)
(defwidget software_revealer []
(revealer-on-press
:revealvar reveal_software
:revealvar-name "reveal_software"
:width 300
(button
:width 300
:class "revealer-title"
"Software Monitor ${reveal_software ? '' : ''}")
(softwareupdates :json {software_list})))
(defwidget softwareupdates [json]
(box
:class "notes"
:orientation "v"
:halign "baseline"
:width 300
:height 150
:space-evenly true
(for software in json
(button :onclick "notify-send '${software.package_name} is ${(software.up_to_date == 'true' ) ? 'up to date!' : 'outdated!'}' 'upstream: ${software.upstream_version}\\npackage: ${software.package_version}'"
(box
:orientation "h"
:space-evenly false
(label
;; :xalign 0
:halign "start"
:hexpand true
:wrap false
:truncate true
:text "${software.package_name}")
(box
:orientation "v"
:halign "end"
(label
:valign "end"
:halign "end"
:class "details"
:text "${software.upstream_version} ")
(label
:valign "start"
:halign "end"
:class "details"
:text "${software.package_version} 󰏖"))
(label
:halign "end"
:class "status"
:style {(software.up_to_date == "true" ) ? "color: green;" : "color: red;"}
:text {(software.up_to_date == "true" ) ? "" : ""}))))
))

View file

@ -0,0 +1,31 @@
(defpoll weather_status :initial '{"condition":"loading...","current_temp":"--","feels_temp":"--","min_temp":"--","max_temp":"--","humidity":"--","icon":" ","updated":"loading..."}'
:interval "3600s"
'scripts/home/hass_weather')
(defvar reveal_weather true)
(defwidget weather_revealer []
(revealer-on-press
:revealvar reveal_weather
:revealvar-name "reveal_weather"
:width 300
(button
:width 300
:class "revealer-title"
"Weather ${reveal_weather ? '' : ''}")
(weather :json weather_status)))
(defwidget weather [json]
(box
:class "weather"
:orientation "v"
:width 300
:space-evenly true
"${json.condition} ${json.icon}"
"${json.current_temp}󰔅  / ${json.humidity}% "
"󰄿 ${json.max_temp}󰔅 | 󰄼 ${json.min_temp}󰔅"
(label
:class "weather-subtitle"
:text " ${json.updated}"
)))

View file

@ -0,0 +1,14 @@
#!/bin/bash
function get_workspaces_info() {
output=$(swaymsg -t get_workspaces | jq -r '.. | select(.type?=="workspace") | select(.focused==true).num')
echo $output
}
get_workspaces_info
swaymsg -t subscribe '["workspace"]' --monitor | {
while read -r event; do
get_workspaces_info
done
}

View file

@ -0,0 +1,29 @@
#!/bin/bash
#declare -A titles
#declare -A icons
titles=(" — Alacritty" " — LibreWolf" " — LibreOffice Calc" " — LibreOffice Writer" " — LibreOffice Draw" " — LibreOffice Math" " - KeePassXC" " — Dolphin" " — Tokodon")
icons=(" " " " " " " " " " " " " " " " "")
function get_window_name() {
output=$(swaymsg -t get_tree | jq -r '.. | select(.type?) | select(.focused==true).name')
for s in "${!titles[@]}";do
if [[ "${output}" == *"${titles[${s}]}"* ]]; then
output="${output/${titles[s]}/}"
output="${icons[${s}]} ${output}"
fi
done
if [ ${#output} -ge 50 ];then
echo "${output:0:45}…"
else
echo "${output}"
fi
}
get_window_name
swaymsg -t subscribe '["window"]' --monitor | {
while read -r event; do
get_window_name
done
}

View file

@ -0,0 +1,42 @@
#!/bin/bash
function btstatus(){
# device_mac_list=
device_json_array=()
for m in $(bluetoothctl devices Paired | awk '{print $2}');do
IFS=';' read -r dev_name dev_icon dev_connected <<<$(bluetoothctl info "${m}" | grep -e 'Connected\: \|Name\:\|Icon\:' | sed 's/.*: //g' | tr '\n' ';')
# IFS='' read -rd "\n" dev_name dev_icon dev_connected <<<$(bluetoothctl info "${m}" | grep -e 'Connected\: \|Name\:\|Icon\:' | sed -n 's/.*: //p')
# IFS="\n" read -r dev_name dev_icon dev_connected <<<$(bluetoothctl info "${m}" | grep -e 'Connected\: \|Name\:\|Icon\:' | sed -n 's/.*: //p')
case "${dev_icon}" in
"input-mouse")
dev_icon="󰍽";;
"phone")
dev_icon="";;
"input-keyboard")
dev_icon="";;
"input-gaming")
dev_icon="";;
"audio-headphones")
dev_icon="";;
"audio-headset")
dev_icon="";;
"computer")
dev_icon="";;
esac
# device_json=$( jq -n --arg name "${dev_name}" --arg connected "${dev_connected}" --arg icon "${dev_icon}" --arg address "${m}" '{name: $name, connected: $connected, icon: $icon, address: $address}')
# device_json_array+=("${device_json}")
# printf 'Address: %s\nName: %s\nIcon: %s\nConnected: %s\n\n' "${m}" "${dev_name}" "${dev_icon}" "${dev_connected}"
printf '%s;%s;%s;%s\n' "${m}" "${dev_name}" "${dev_icon}" "${dev_connected}"
done | column -t -n 'bt_devices' -N address,name,icon,connected -s ';' -J | jq -c '.bt_devices'
# devices_json=$(printf '%s\n' "${device_json_array[@]}" | jq -s .)
# echo ${devices_json}
}
btstatus
#dbus-monitor --profile "interface='org.blueman.Applet',member='MenuChanged'" | while read -r event; do
dbus-monitor --profile "interface='org.blueman.Applet',member='ToolTipTitleChanged'" | while read -r event; do
btstatus
done

View file

@ -0,0 +1,3 @@
#!/bin/bash
sleep infinity

View file

@ -0,0 +1,18 @@
#!/bin/bash
function ifstatus(){
jq -cs '{"interfaces": [(.[0].devs[] | select((.type=="wifi") or (.type=="ethernet")))]} * {"vpns": [(.[1].cons[] | select((.type=="vpn") or (.type=="wireguard")))]}' <<<$( \
# nmcli --terse -f DEVICE,TYPE,STATE,CONNECTION d s | column -t -n 'devs' --table-columns device,type,state,connection -s ':' -J; \
nmcli --terse -f DEVICE,TYPE,STATE,CONNECTION d s | sed 's/\\:/###/g;s/:/\;/g;s/###/:/g' | column -t -n 'devs' --table-columns device,type,state,connection -s ';' -J; \
nmcli --terse -f NAME,TYPE,ACTIVE,DEVICE c s | column -t -n 'cons' --table-columns name,type,active,device -s ':' -J)
# [ .devices[] | select((.type=="wifi") or (.type=="ethernet")) ]
}
ifstatus
ip monitor address | {
while read -r event; do
ifstatus
done;
}

View file

@ -0,0 +1,11 @@
#!/bin/bash
type="${1}"
action="${2}"
devices=$(nmcli -g DEVICE device)
for d in ${devices};do
if [ "$(nmcli -g GENERAL.TYPE device show ${d})" = "${type}" ];then
nmcli device "${action}" "${d}"
fi
done

View file

@ -0,0 +1,62 @@
#!/bin/bash
function ifstatus(){
is_online=false
is_wireless=false
is_ethernet=false
is_vpn=false
is_proton=false
is_proton_sc=false
is_homevpn=false
is_homevpn_full=false
if nmcli -g TYPE connection show --active | grep -q "wireless";then
is_wireless='true'
fi
if nmcli -g TYPE connection show --active | grep -q "ethernet";then
is_ethernet='true'
fi
vpn_cons=$(nmcli -g TYPE,NAME connection show --active | grep -e "vpn" -e "wireguard")
# echo "${vpn_cons//$'\n'/;}"
case "${vpn_cons//$'\n'/;}" in
*ProtonVPN|*ProtonVPN\;*)
is_proton='true'
;;&
*ProtonVPN-SC|*ProtonVPN-SC\;*)
is_proton_sc='true'
;;&
*HomeVPN|*HomeVPN\;*)
is_homevpn='true'
;;&
*HomeVPN-Full|*HomeVPN-Full\;*)
is_homevpn_full='true'
;;&
*ProtonVPN*|*ProtonVPN-SC*|*HomeVPN*|*HomeVPN-Full*)
is_vpn='true'
;;
esac
# if grep -qe "ProtonVPN$" <<<${vpn_cons};then
# is_proton='true'
# fi
# if grep -qe "ProtonVPN-SC$" <<<${vpn_cons};then
# is_proton_sc='true'
# fi
# if grep -qe "HomeVPN$" <<<${vpn_cons};then
# is_homevpn='true'
# fi
# if grep -qe "HomeVPN-Full$" <<<${vpn_cons};then
# is_homevpn_full='true'
# fi
echo $(jq -n --arg online "${is_online}" --arg wifi "${is_wireless}" --arg wired "${is_ethernet}" --arg vpn "${is_vpn}" --arg proton "${is_proton}" --arg proton_sc "${is_proton_sc}" --arg homevpn "${is_homevpn}" --arg homevpn_full "${is_homevpn_full}" '{online: $online, wifi: $wifi, wired: $wired, vpn: $vpn, proton: $proton, proton_sc: $proton_sc, homevpn: $homevpn, homevpn_full: $homevpn_full}')
}
ifstatus
ip monitor address | {
while read -r event; do
# echo hi ${event};
ifstatus
done;
}

View file

@ -0,0 +1,9 @@
#!/bin/bash
if $(nmcli -g GENERAL.STATE c s "${1}"|grep -q '\bactiv'); then
echo "going down"
nmcli connection down "${1}"
else
echo "going up"
nmcli connection up "${1}"
fi

View file

@ -0,0 +1,12 @@
#!/bin/bash
playerctl --follow metadata --format '{{ title }}' | {
while read -r nowplaying_title; do
if [ ${#nowplaying_title} -ge 45 ];then
echo "${nowplaying_title:0:40}…"
else
echo "${nowplaying_title}"
fi
# echo "${nowplaying_title}" | head -c 50;
done
}

View file

@ -0,0 +1,11 @@
#!/usr/bin/env bash
action="${1}"
action_icon="${2}"
command="${3}"
#yad --image "${action_icon}" --title "Really ${action}?" --button=gtk-yes:0 --button=gtk-no:1 --text "Really ${action}?\n $ ${command} "
if zenity --question --icon="${action_icon}" --title "Really ${action}?" --text "$ ${command} ";then
bash -c "${command}"
fi
#printf 'test\ntest' | wofi --columns=2 --show dmenu

View file

@ -0,0 +1,3 @@
#!/bin/bash
echo ~/.cache/sway-profiles/active_profile | entr -n sp-profile-icon

View file

@ -0,0 +1,2 @@
#!/usr/bin/env sh
sdu profile get -m

View file

@ -0,0 +1,3 @@
#!/bin/bash
echo ~/.cache/sway-profiles/active_profile | entr -n sp-profile

View file

@ -0,0 +1,199 @@
#!/bin/bash
#appropriated from https://gitlab.com/wef/dotfiles/-/blob/master/bin/sway-select-window for use with eww
declare -A icons=(
)
jq_get_windows='
# descend to workspace or scratchpad
.nodes[].nodes[]
# save workspace name as .w
| {"w": .name} + (
if (.nodes|length) > 0 then # workspace
[recurse(.nodes[])]
else # scratchpad
[]
end
+ .floating_nodes
| .[]
# select nodes with no children (windows)
# | select(.nodes==[])
# | select(.scratchpad!="none")
| select(.scratchpad_state=="fresh")
)'
jq_windows_to_tsv='
[
(.id | tostring),
# remove markup and index from workspace name, replace scratch with "[S]"
(.w | gsub("<[^>]*>|:$"; "") | sub("__i3_scratch"; "[S]")),
# get app name (or window class if xwayland)
(.app_id // .window_properties.class),
(.name),
(.pid),
(.visible)
]
| @tsv'
get_hardcoded_icon() {
icon="${icons[$1]}"
echo "$icon"
}
get_desktop() {
app="$1"
p="/usr/share/applications"
flist=("/var/lib/flatpak/exports/share/applications" "${HOME}/.local/share/flatpak/exports/share/applications")
[[ "$verbose" ]] && echo "searching for '$app'" >&2
# fast and easy cases first:
for prefix in "" org.kde. org.gnome. org.freedesktop.; do
d="$p/$prefix$app.desktop"
[[ -r "$d" ]] && {
echo "$d"
[[ "$verbose" ]] && echo "found '$d'" >&2
return
}
done
# maybe lowercase
for prefix in "" org.kde. org.gnome. org.freedesktop.; do
d="$p/$prefix${app,,}.desktop"
[[ -r "$d" ]] && {
echo "$d"
[[ "$verbose" ]] && echo "found '$d'" >&2
return
}
done
# this is fairly reliable but slow:
# look for a .desktop file with Exec=$app eg
# gnome-disks (but exclude gnome-disk-image-writer.desktop)
# gnome-font-viewer
GREP='egrep -r'
type rg &>/dev/null && GREP=rg
d=$( $GREP -il "^exec=$app( %u)*[[:space:]]*$" $p | head -n 1)
[[ -r "$d" ]] && {
echo "$d"
[[ "$verbose" ]] && echo "found '$d'" >&2
return
}
for f in ${flist[@]};do
[[ "$verbose" ]] && echo "using '$GREP' to search in '${f}'" >&2
d=$( $GREP -il "^startupwmclass=$app.*$" ${f}/* | head -n 1)
[[ "$verbose" ]] && echo "found '$d'" >&2
[[ -r "$d" ]] && {
echo "$d"
[[ "$verbose" ]] && echo "found '$d'" >&2
return
}
done
# desperation - weird apps like com.github.wwmm.pulseeffects.desktop!!
# shellcheck disable=SC2012
d=$( ls "$p/"*".$app.desktop" 2>/dev/null | head -n 1 )
[[ -r "$d" ]] && {
echo "$d"
[[ "$verbose" ]] && echo "found '$d'" >&2
return
}
}
get_icon() {
app="$1"
icon=$( get_hardcoded_icon "$app_name" )
[[ "$icon" && -r "$icon" ]] && {
echo "$icon"
[[ "$verbose" ]] && echo "using hardcoded icon '$icon'" >&2
return
}
# let's go poke in the .desktop files:
icon_name=""
dt=$( get_desktop "$app" )
# sometimes we get the 'class' rather than the exe - so try this:
[[ "$dt" ]] || {
app=$( tr '\0' '\n' < "/proc/$pid/cmdline" | head -n 1 )
dt=$( get_desktop "$( basename "$app" )" )
}
[[ "$dt" ]] && {
icon_name=$( awk -v IGNORECASE="set" -F"=" '/^icon/ {print $2}' "$dt" )
[[ -r "$icon_name" ]] && {
icon="$icon_name"
echo "$icon"
[[ "$verbose" ]] && echo "using .desktop icon '$icon'" >&2
return
}
[[ "$icon_name" ]] && {
icon_locations=(
/usr/share/icons/hicolor/scalable/apps
/usr/share/icons/hicolor/48x48/apps
/usr/share/icons/gnome/48x48/apps
/usr/share/icons/gnome/48x48/devices
/usr/share/pixmaps
/var/lib/flatpak/exports/share/icons/hicolor/scalable/apps
/var/lib/flatpak/exports/share/icons/hicolor/48x48/apps
"${HOME}/.local/share/flatpak/exports/share/icons/hicolor/scalable/apps"
"${HOME}/.local/share/flatpak/exports/share/icons/hicolor/48x48/apps"
# icons/hicolor/scalable/apps
# icons/hicolor/48x48/apps
# icons/gnome/48x48/apps
# icons/gnome/48x48/devices
# pixmaps
)
for d in "${icon_locations[@]}"; do
for s in .svg .png .xpm ""; do
icon=$d/$icon_name$s
[[ -r $icon ]] && {
echo "$icon"
[[ "$verbose" ]] && echo "using .desktop icon '$icon'" >&2
return
}
done
done
icon=$(find /usr/share/icons | grep "/${icon_name}-symbolic.svg" | head -n 1)
[[ -r $icon ]] && {
echo "$icon"
[[ "$verbose" ]] && echo "using .desktop icon '$icon'" >&2
return
}
}
}
[[ "$verbose" ]] && echo "searching for '$app' icon" >&2
icon=$( find /usr/share/icons /usr/share/pixmaps | grep -E -i "/$app.(png|svg)" | head -n 1 )
[[ "$icon" && -r "$icon" ]] && {
echo "$icon"
[[ "$verbose" ]] && echo "using found icon '$icon'" >&2
return
}
# failed:
icon="/usr/share/icons/breeze-dark/mimetypes/32/unknown.svg"
[[ "$verbose" ]] && echo "using missing icon '$icon'" >&2
echo "$icon"
}
function get_scratchpad() {
applist_array=()
applist=""
shopt -s lastpipe
swaymsg -t get_tree |
jq -r "$jq_get_windows | $jq_windows_to_tsv" |
column -s $'\t' -o $'\t' -t | while IFS=$'\t' read -r win_id ws_name app_name win_title pid visible; do
shopt -s extglob
app_name="${app_name%%*( )}"
icon=$( get_icon "$app_name" "$pid" )
visible=${visible}
[[ "$verbose" ]] && printf "[%s]=%s\n" "$app_name" "$icon" >&2
applist_array_item=$(jq -n --arg icon "${icon}" --arg name "${app_name##*.}" --arg title "${win_title}" --arg win_id "${win_id}" --arg visible "${visible}" '{icon: $icon,name: $name,title: $title,win_id: $win_id,visible: $visible}')
applist_array+=("${applist_array_item}")
done
applist=$(printf '%s\n' "${applist_array[@]}" | jq -s .)
echo ${applist}
}
get_scratchpad
swaymsg -t subscribe '["window"]' --monitor | {
while read -r event; do
get_scratchpad
done
}

View file

@ -0,0 +1,15 @@
#!/bin/bash
function print_volume() {
if [ "$(pactl get-sink-mute @DEFAULT_SINK@)" = "Mute: yes" ]; then
echo 0
else
echo "$(wpctl get-volume @DEFAULT_AUDIO_SINK@ | sed 's/[^0-9]//g')"
fi
}
print_volume
pactl subscribe | awk '{ if($0 ~ "new") if($0 ~ "sink-input") {system("echo hi")} }' | while read -r event;do
print_volume
done

View file

@ -0,0 +1,14 @@
#!/bin/bash
function get_workspaces_info() {
output=$(swaymsg -t get_workspaces | jq 'sort_by(.num)')
echo $output
}
get_workspaces_info
swaymsg -t subscribe '["workspace"]' --monitor | {
while read -r event; do
get_workspaces_info
done
}

View file

@ -0,0 +1,64 @@
#!/bin/bash
hass_weather_cache="${HOME}/.cache/hass_weather.json"
update_cache_json(){
weather_summary="$( hass-cli -a states -i sensor.weather_summary | jq -r '.attributes' )"
if [[ -z "${weather_summary}" ]];then
return 1
fi
condition="$( jq -r '.condition' <<< ""${weather_summary}"" )"
condition_code="$( jq -r '.condition_code' <<< ""${weather_summary}"" )"
current_temp="$( jq -r '.current_temp' <<< ""${weather_summary}"" )"
feels_temp="$( jq -r '.feels_temp' <<< ""${weather_summary}"" )"
min_temp="$( jq -r '.min_temp' <<< ""${weather_summary}"" )"
max_temp="$( jq -r '.max_temp' <<< ""${weather_summary}"" )"
humidity="$( jq -r '.humidity' <<< ""${weather_summary}"" )"
updated="$(date '+%Y-%m-%d, %H:%M')"
case "${condition_code}" in
#https://openweathermap.org/weather-conditions#Weather-Condition-Codes-2
(2[0-9][0-9])
condition_icon=''
;;
(3[0-9][0-9])
condition_icon=''
;;
(5[0-9][0-9])
condition_icon=''
;;
(6[0-9][0-9])
condition_icon=''
;;
(7[0-9][0-9])
condition_icon=''
;;
800)
condition_icon=''
;;
(80[0-9])
condition_icon=''
;;
esac
jq -n \
--arg condition "${condition}" \
--arg current_temp "${current_temp}" \
--arg feels_temp "${feels_temp}" \
--arg min_temp "${min_temp}" \
--arg max_temp "${max_temp}" \
--arg humidity "${humidity}" \
--arg icon "${condition_icon}" \
--arg updated "${updated}" \
'{condition: $condition,current_temp: $current_temp,feels_temp: $feels_temp,min_temp: $min_temp,max_temp: $max_temp,humidity: $humidity,icon: $icon,updated: $updated}' | tee "${hass_weather_cache}" >/dev/null
}
if [[ ! $(find "${hass_weather_cache}" -cmin -60 -print 2>/dev/null) ]]; then
# if ! ping -w 15 -c 5 hass.pogmom.me;then
# exit 1
# fi
update_cache_json
fi
cat "${hass_weather_cache}"

View file

@ -0,0 +1,13 @@
#!/usr/bin/env bash
cache_path="${HOME}/.cache/mc-server-info"
mcstatus_cache="${cache_path}/cache.json"
mkdir -p "${cache_path}"
update_cache_json(){
mc-server-info json | tee "${mcstatus_cache}" >/dev/null
}
if [[ ! $(find "${mcstatus_cache}" -cmin -15 -print 2>/dev/null) ]]; then
update_cache_json
fi
cat "${mcstatus_cache}"

View file

@ -0,0 +1,3 @@
#!/usr/bin/env bash
find ~/Documents/Notes/ -type f -exec stat --printf '%Y\t%n\n' {} + | sort -rk 1 | head -n 3 | column -ts $'\t' -n 'Notes' -N date,filepath -J

View file

@ -0,0 +1,15 @@
#!/bin/bash
#playerctl --follow metadata --format '{{ title }}' | {
playerctl --follow metadata --format '{{ trunc(artist,23) }}'
#playerctl metadata --format '{{ title }}\n{{ artist }}' | {
# while read -r nowplaying_title; do
# if [ ${#nowplaying_title} -ge 45 ];then
# echo "${nowplaying_title:0:40}…"
# else
# echo "${nowplaying_title}"
# fi
# echo "${nowplaying_title}" | head -c 50;
# done
#}

View file

@ -0,0 +1,15 @@
#!/bin/bash
#playerctl --follow metadata --format '{{ title }}' | {
playerctl --follow metadata --format '{{ trunc(title,23) }}'
#playerctl metadata --format '{{ title }}\n{{ artist }}' | {
# while read -r nowplaying_title; do
# if [ ${#nowplaying_title} -ge 45 ];then
# echo "${nowplaying_title:0:40}…"
# else
# echo "${nowplaying_title}"
# fi
# echo "${nowplaying_title}" | head -c 50;
# done
#}

View file

@ -0,0 +1,3 @@
#!/bin/bash
playerctl --follow metadata --format '{"status":"{{lc(status)}}","artist":"{{artist}}","title":"{{markup_escape(trunc(title,23))}}"}'

View file

@ -0,0 +1,22 @@
#!/usr/bin/env bash
playerctl metadata --format "{{mpris:artUrl}}" --follow | while IFS= read -r line; do
if [[ $line == *"http"* ]]; then
cache_dir="$XDG_RUNTIME_DIR/album_art_cache"
mkdir -p "$cache_dir"
file_name=$(basename "$line")
file_path="$cache_dir/$file_name"
# Check if file exists
if [ -e "$file_path" ]; then
# File exists, return path immediately
echo "$file_path"
else
curl --output "$file_path" "$line" > /dev/null 2>&1
echo "$file_path"
fi
else
# artUrl doesn't have a link, nothing to do
echo "$line"
fi
done

View file

@ -0,0 +1,10 @@
#!/bin/bash
if [[ "$(eww active-windows)" == *"home"* ]]; then
img_dir="${HOME}/Pictures/Phone/Albums/Rattos/"
img_list=$( find "${img_dir}" -iname '*.jpg' -or -iname '*.png' -or -iname '*.heic')
img=$( shuf -n 1 <<< "${img_list}" )
mkdir -p "${HOME}/.cache/eww/"
convert "${img}" -resize x300\> "${HOME}/.cache/eww/rat.jpg"
echo "${HOME}/.cache/eww/rat.jpg"
fi

View file

@ -0,0 +1,4 @@
#!/usr/bin/env bash
#jq '[.reminders.[]|select(.enabled==true)]' ~/Documents/Reminders/urls.json
echo ~/Documents/Reminders/urls.json | entr -n jq -c '[.reminders.[]|select(.enabled==true)]' ~/Documents/Reminders/urls.json

View file

@ -0,0 +1,4 @@
#!/bin/bash
#dolphin "smb://server-hp-y2z63av/Media"
samba-wofi

View file

@ -0,0 +1,3 @@
#!/bin/bash
alacritty -T ' bridge-netgear-r6250' -e ssh root@bridge-netgear-r6250

View file

@ -0,0 +1,3 @@
#!/bin/bash
alacritty -T ' router-netgear-r8000' -e ssh root@router-netgear-r8000

View file

@ -0,0 +1,6 @@
#!/bin/bash
alacritty -T ' server-asus-n705fd-debian' -e bash -c '\
eval $(ssh-agent) &> /dev/null; \
ssh-add ~/.ssh/id_ed25519 &> /dev/null; \
ssh -A pogmom@server-asus-n705fd-debian'

View file

@ -0,0 +1,6 @@
#!/bin/bash
alacritty -T ' server-dell-7050sff-debian' -e bash -c '\
eval $(ssh-agent) &> /dev/null; \
ssh-add ~/.ssh/id_ed25519 &> /dev/null; \
ssh -A pogmom@server-dell-7050sff-debian'

View file

@ -0,0 +1,6 @@
#!/bin/bash
alacritty -T ' server-hp-y2z63av' -e bash -c '\
eval $(ssh-agent) &> /dev/null; \
ssh-add ~/.ssh/id_ed25519 &> /dev/null; \
ssh -At pogmom@server-hp-y2z63av'

View file

@ -0,0 +1,6 @@
#!/bin/bash
alacritty -T ' server-nintendo-rvl101' -e bash -c '\
eval $(ssh-agent) &> /dev/null; \
ssh-add ~/.ssh/id_ed25519 &> /dev/null; \
ssh -A pogmommy@server-nintendo-rvl101'

View file

@ -0,0 +1,19 @@
#!/bin/bash
swaymsg workspace number '39:'
connected_displays=`swaymsg -rt get_outputs | jq .[].name`
if echo "${connected_displays}" | grep -q 'DP-7';then
swaymsg move workspace to output DP-7
elif echo "${connected_displays}" | grep -q 'DP-6';then
swaymsg move workspace to output DP-6
elif echo "${connected_displays}" | grep -q 'HDMI-A-1';then
swaymsg move workspace to output HDMI-A-1
fi
librewolf-profile Work 'https://library.lanecc.edu/' \
'https://inside.lanecc.edu/sites/default/files/pg/map_2024_ltr.pdf' \
'https://lanecc.libcal.com/allspaces' \
'https://library.lanecc.edu/study-rooms#maps' \
'https://my.livechatinc.com/engage/traffic'
swaymsg move window to workspace number '39:'

View file

@ -0,0 +1,11 @@
#!/bin/bash
#sp-profiles Work
librewolf-profile Work 'https://app.slack.com/client/' \
'https://mail.google.com/mail/u/0/#inbox' \
'https://na01.alma.exlibrisgroup.com/ng/?institute=01ALLIANCE_LANECC&auth=local' \
'https://calendar.google.com/calendar/u/0/r' \
'https://25live.collegenet.com/pro/lanecc#!/home/calendar' \
'https://10.16.0.209:9192/admin' \
'https://drive.google.com'

View file

@ -0,0 +1,45 @@
#!/bin/bash
wttr_cache="${HOME}/.cache/wttr.json"
if [[ ! $(find "${wttr_cache}" -cmin -60 -print 2>/dev/null) ]]; then
if ! ping -w 15 -c 1 wttr.in;then
exit
fi
wttr_json=$(curl --silent wttr.in/Eugene?format=j1)
if [ "" != "${wttr_json}" ]; then
echo "${wttr_json}" | tee "${wttr_cache}"
fi
fi
condition="$(jq -r '.current_condition[0].weatherDesc[0].value' ${wttr_cache})"
condition_code="$(jq -r '.current_condition[0].weatherCode' ${wttr_cache})"
current_temp="$(jq -r '.current_condition[0].temp_F' ${wttr_cache})"
feels_temp="$(jq -r '.current_condition[0].FeelsLikeF' ${wttr_cache})"
min_temp="$(jq -r '.weather[0].mintempF' ${wttr_cache})"
max_temp="$(jq -r '.weather[0].maxtempF' ${wttr_cache})"
humidity="$(jq -r '.current_condition[0].humidity' ${wttr_cache})"
updated="$(date -r ${wttr_cache} '+%Y-%m-%d, %H:%M')"
case "${condition_code}" in
113)
""
;;
116|119|122|143)
condition_icon=""
;;
179|227|230)
condition_icon=""
;;
248|260)
condition_icon="▒"
;;
176|182|185|200|263|266|281|284|293|296|299|302|305|308|311)
condition_icon=""
;;
386)
condition_icon=""
;;
esac
jq -n --arg condition "${condition}" --arg current_temp "${current_temp}" --arg feels_temp "${feels_temp}" --arg min_temp "${min_temp}" --arg max_temp "${max_temp}" --arg humidity "${humidity}" --arg icon "${condition_icon}" --arg updated "${updated}" '{condition: $condition,current_temp: $current_temp,feels_temp: $feels_temp,min_temp: $min_temp,max_temp: $max_temp,humidity: $humidity,icon: $icon,updated: $updated}'

View file

@ -0,0 +1,49 @@
#!/bin/bash
wttr_cache="${HOME}/.cache/wttr.json"
#jq -r '.current_condition[0].weatherCode' ${wttr_cache}
jq -r '.current_condition[0].weatherCode' ${wttr_cache}
condition_code="$(jq -r '.current_condition[0].weatherCode' ${wttr_cache})"
case "${condition_code}" in
113)
#Sunny
echo ""
;;
116|119|122|143)
#Partly cloudy
#Cloudy
#Overcast
#Mist
echo ""
;;
179|227|230)
#Patchy snow possible
#Blowing snow
#Blizzard
echo ""
;;
248|260)
#Fog
#Freezing fog
echo "▒"
;;
176|182|185|200|263|266|281|284|293|296|299|302|305|308|311)
#Patchy rain possible
#Patchy sleet possible
#Patchy freezing drizzle possible
#Thundery outbreaks possible
#Patchy light drizzle
#Light drizzle
#Freezing drizzle
#Heavy freezing drizzle
#Patchy light rain
#Light rain
#Moderate rain at times
#Moderate rain
#Heavy rain at times
#Heavy rain
#Light freezing rain
echo ""
;;
esac

View file

@ -0,0 +1,115 @@
$bar-reveal-children-bg-color: rgba($color0, 0.2);
$transition-time: 0.3s;
.bar.horizontal {
font-size: 1.05em;
padding: 6px;
margin: 4px 10px;
background-color: rgba(mix($bar-bg-color, $color0, 65%), 0.4);
// background-color: rgba($bar-bg-color, 0.2);
border-radius: $bar-module-border-radius;
.leftgroup,
.centergroup,
.rightgroup {
// .revealer-on-hover {
// border: 2px solid $bar-bg-color;
// border-radius: $bar-module-border-radius;
// }
// .revealer-on-hover>widget>box>box>*,
// .revealer-on-hover>widget>box>box>button {
// color: $color0;
// background-color: $bar-bg-color;
// border-radius: $bar-module-border-radius - 4;
// &:hover {
// }
// }
// .reveal_children {
// &>*,
// widget>image {
// &:not(:last-child) {
// border-right: 2px solid $bar-bg-color;
// }
// color: $bar-bg-color;
// }
// }
// .revealer-on-hover.true {
// border-radius: $bar-module-border-radius;
// &>widget>box>box>* {
// background-color: $bar-bg-color;
// }
// }
// .reveal_children {
// border-radius: 0px $bar-module-border-radius $bar-module-border-radius 0px;
// }
}
@import "./bar/power.scss";
@import "./bar/workspaces.scss";
@import "./bar/scratchpad.scss";
@import "./bar/charts.scss";
// &>box>button,
// &>box>label,
// .bar-module>button,
// .bar-module>label,
// .revealer-on-hover>widget>box>box>*,
/* .reveal_children>widget>image,
.reveal_children:not(.tray)>* {
padding: 0px 5px;
min-width: $bar-module-width;
transition: all 0.3s;
&:hover {
color: $bar-hover-fg-color;
text-shadow: $bar-module-hover-shadow;
}
}
.tray>widget>image {
padding: 3px 10px;
min-width: $bar-module-width;
}
.tray>widget,
.scratchpad>button {
image{
// opacity: 0.5;
transition: all 0.3s;
border-radius: $bar-module-border-radius;
}
&:hover,&:hover image {
opacity: 1;
}
}*/
@import "./bar/window_title.scss";
@import "./bar/idle-inhibitor.scss";
@import "./bar/volume.scss";
@import "./bar/networking.scss";
@import "./bar/bluetooth.scss";
// @import "./bar/battery.scss";
// @import "./bar/disk.scss";
// @import "./bar/memory.scss";
@import "./bar/sys.scss";
@import "./bar/clock.scss";
@import "./bar/tray.scss";
@import "./bar/notification-center.scss";
/* .chevron box {
border: 2px solid transparent;
}*/
/* .inactive {
opacity: 0.5;
}*/
// HOTFIXES
/* .scratchpad .reveal_children>*:last-child,
.tray_tab>widget>box>box,
.tray_tab .reveal_children>widget:last-child>image {
margin-right: -5px;
}*/
}

View file

@ -0,0 +1,6 @@
.battery {
margin: 0px 5px;
$module-color: $color3;
// $module-color: mix($color9, $color0, 75%);
@import "./styles/revealer.scss";
}

View file

@ -0,0 +1,5 @@
.bluetooth {
margin: 0px 5px;
$module-color: mix($color4,$color0,75%);
@import "./styles/revealer.scss";
}

View file

@ -0,0 +1,17 @@
scale trough,
progressbar>trough {
background-color: $color9;
min-width: 50px;
min-height: 10px;
border-radius: 4px;
}
scale trough highlight,
progressbar>trough>progress {
background-color: $color2;
border-radius: 4px;
min-height: 10px;
}
circular-progress {
color: $color9;
background-color: $color2;
}

View file

@ -0,0 +1,7 @@
.datetime {
font-weight: bold;
color: $bar-bg-color;
padding: 0px 10px;
border-radius: $bar-module-border-radius;
// margin-left: 10px;
}

View file

@ -0,0 +1,3 @@
.sysdisk {
margin: 0px 10px;
}

View file

@ -0,0 +1,10 @@
.idle-inhibitor {
$module-bg-color: $color7;
$module-fg-color: $bar-module-fg-color;
margin: 0px 5px;
@import "./styles/button.scss";
&.inactive {
opacity: 0.5;
}
}

View file

@ -0,0 +1,5 @@
.sysmem {
margin: 0px 5px;
$module-color: mix($color0,$color2,25%);
@import "./styles/revealer.scss"
}

View file

@ -0,0 +1,11 @@
.networks {
margin: 0px 5px;
$module-color: mix($color14,$color0,75%);
@import "./styles/revealer.scss";
}
.vpn {
margin: 0px 5px;
$module-color: mix($color6,$color0,75%);
@import "./styles/revealer.scss";
}

View file

@ -0,0 +1,10 @@
.notification-center {
$module-bg-color: rgba($bar-bg-color,0.5);
$module-fg-color: $bar-fg-color;
margin: 0px 5px;
@import "./styles/button.scss";
&.inactive {
opacity: 0.5;
}
}

View file

@ -0,0 +1,5 @@
.powermenu {
margin: 0px 5px;
$module-color: mix($color0, $color5, 50%);
@import "./styles/revealer.scss"
}

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