From 68b575c72cff17a119039c28f2a11c626bf14209 Mon Sep 17 00:00:00 2001 From: The_miro Date: Sat, 5 Apr 2025 12:11:34 +0200 Subject: [PATCH] added eww-nobattery as a se --- desktopenvs/hyprland/eww-nobattery/eww.scss | 70 ++++++++++++ desktopenvs/hyprland/eww-nobattery/eww.yuck | 102 ++++++++++++++++++ .../eww-nobattery/scripts/activewindow | 18 ++++ .../eww-nobattery/scripts/batteryperc | 37 +++++++ .../hyprland/eww-nobattery/scripts/getvol | 5 + .../hyprland/eww-nobattery/scripts/playerget | 31 ++++++ .../eww-nobattery/scripts/windowswitcher | 2 + .../hyprland/eww-nobattery/scripts/workspace | 52 +++++++++ 8 files changed, 317 insertions(+) create mode 100644 desktopenvs/hyprland/eww-nobattery/eww.scss create mode 100644 desktopenvs/hyprland/eww-nobattery/eww.yuck create mode 100755 desktopenvs/hyprland/eww-nobattery/scripts/activewindow create mode 100755 desktopenvs/hyprland/eww-nobattery/scripts/batteryperc create mode 100755 desktopenvs/hyprland/eww-nobattery/scripts/getvol create mode 100755 desktopenvs/hyprland/eww-nobattery/scripts/playerget create mode 100755 desktopenvs/hyprland/eww-nobattery/scripts/windowswitcher create mode 100755 desktopenvs/hyprland/eww-nobattery/scripts/workspace diff --git a/desktopenvs/hyprland/eww-nobattery/eww.scss b/desktopenvs/hyprland/eww-nobattery/eww.scss new file mode 100644 index 0000000..4a09c40 --- /dev/null +++ b/desktopenvs/hyprland/eww-nobattery/eww.scss @@ -0,0 +1,70 @@ +* { + all: unset; // Unsets everything so you can style everything from scratch + font-family: Agave Nerd Font Mono, sans-serif; + font-size: 14pt; +} + +// Global Styles +.bar { + + color: #b0b4bc; + padding: 10px; +} + +// Styles on classes (see eww.yuck for more information) + +.sidestuff slider { + all: unset; + color: #ffd5cd; +} + +.metric scale trough highlight { + all: unset; + background: #E40046; + + color: #000000; + border-radius: 10px; + +} + +.metric scale trough { + all: unset; + background-color: #5018dd; + border-radius: 50px; + min-height: 3px; + min-width: 50px; + margin-left: 10px; + margin-right: 20px; +} + +.label-ram { + font-size: large; +} + + + +.music,.metric,.clock,.workspace-button { + border: solid; + border-width: 3px; + background: #1a1a1a; + color: #5018dd; + + padding-top:5px; + margin-top:1px; + + padding-bottom:5px; + margin-bottom:1px; + + padding-left:5px; + margin-left:4px; + + padding-right:5px; + margin-right:4px; + + border-radius: 25px; +} + +.workspace-active { + color: #E40046; + +} diff --git a/desktopenvs/hyprland/eww-nobattery/eww.yuck b/desktopenvs/hyprland/eww-nobattery/eww.yuck new file mode 100644 index 0000000..b9da6d9 --- /dev/null +++ b/desktopenvs/hyprland/eww-nobattery/eww.yuck @@ -0,0 +1,102 @@ + +(defwindow bar [monitor] + :monitor monitor + :windowtype "dock" + :geometry (geometry :x "0%" + :y "1%" + :width "99%" + :height "20px" + :anchor "top center") + :exclusive true + (bar :monitor_ monitor)) + +(defpoll battery :interval "2s" + "scripts/batteryperc") + + + +(defwidget bar [monitor_] + (centerbox :orientation "h" + (winsworks :monitor monitor_) + (music) + (sidestuff))) + +(defwidget winsworks [monitor] + (box :orientation "h" :space-evenly false :halign "start" + (workspaceWidget :monitor monitor) + (box :onclick "scripts/windowswitcher" :class "music" {" ${activewindow}"}) + ) +) + +(defwidget sidestuff [] + (box :class "sidestuff" :orientation "h" :space-evenly false :halign "end" + (box :class "music" {"󰛳 ${IP}"}) + (metric :label "󰓃" + :value volume + :onchange "pactl set-sink-volume @DEFAULT_SINK@ {}%") + (metric :label "" + :value {round((1 - (EWW_DISK["/"].free / EWW_DISK["/"].total)) * 100, 0)} + :onchange "") + (clock) + )) + +(defwidget music [] + (box :class "music" + :orientation "h" + :space-evenly false + :halign "center" + {music != "" ? " ${music}" : " None"})) + + +(defwidget metric [label value onchange] + (box :orientation "h" + :class "metric" + :space-evenly false + (box :class "label" label) + (scale :min 0 + :max 101 + :active {onchange != ""} + :value value + :onchange onchange))) + +(deflisten workspaces "hyprland-workspaces _") + +(defwidget workspaceWidget [monitor] + (eventbox :onscroll "hyprctl dispatch workspace `echo {} | sed 's/up/+/\' | sed 's/down/-/'`1" + (box :class "workspaces" + :space-evenly false + :width 20 + (for i in {workspaces[monitor].workspaces} + (button + :width 20 + :onclick "hyprctl dispatch workspace ${i.id}" + :class "${i.class}" + {i.name == "special:magic" ? "󱂬" : "󱂬${i.name}"}))))) + + +(deflisten workspace-old "scripts/workspace") +(defwidget workspaces-old [] +(literal :content workspace-old)) + +(defpoll music :interval "0.5s" + "scripts/playerget") + + +(defpoll activewindow :interval "0.5s" + "scripts/activewindow") + +(defpoll IP :interval "600s" + "hostname -i") + + +(defpoll volume :interval "0.5s" + "scripts/getvol") + +(defpoll time :interval "1s" + "date '+%H:%M:%S|%d.%m.%Y'") + +(defwidget clock [] + (box :class "clock" + (label :text {"${time}"}) + ) +) diff --git a/desktopenvs/hyprland/eww-nobattery/scripts/activewindow b/desktopenvs/hyprland/eww-nobattery/scripts/activewindow new file mode 100755 index 0000000..8b16732 --- /dev/null +++ b/desktopenvs/hyprland/eww-nobattery/scripts/activewindow @@ -0,0 +1,18 @@ +#!/bin/bash +trunc=16 +sample=$(hyprctl activewindow | grep title: | awk -F: '{print $2}') + +#echo ${sample} + +if [ ${#sample} -gt $trunc ]; then + echo $sample | head -c $trunc | sed 's/$/…/' +else + if [ ${#sample} -ne 0 ]; then + echo $sample + else + echo None + fi +fi + +#hyprctl activewindow | grep title: | awk -F: '{print $2}' | head -c $trunc | sed 's/$/.../' + diff --git a/desktopenvs/hyprland/eww-nobattery/scripts/batteryperc b/desktopenvs/hyprland/eww-nobattery/scripts/batteryperc new file mode 100755 index 0000000..d72cb8b --- /dev/null +++ b/desktopenvs/hyprland/eww-nobattery/scripts/batteryperc @@ -0,0 +1,37 @@ +#!/bin/bash + +perc=$(upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep percentage | awk -F: '{print $2}' | xargs) +state=$(upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep state | awk -F: '{print $2}' | xargs) + +num=$(echo ${perc::-1}) + +if [ $state == "charging" ]; then + echo "󰂄 ${perc}" +else + #echo "󰁹 ${perc}" + + if [ $num -gt 95 ]; then + echo "󰁹 ${perc}" + elif [ $num -gt 90 ]; then + echo "󰂂 ${perc}" + elif [ $num -gt 80 ]; then + echo "󰂁 ${perc}" + elif [ $num -gt 70 ]; then + echo "󰂀 ${perc}" + elif [ $num -gt 60 ]; then + echo "󰁿 ${perc}" + elif [ $num -gt 50 ]; then + echo "󰁾 ${perc}" + elif [ $num -gt 40 ]; then + echo "󰁽 ${perc}" + elif [ $num -gt 30 ]; then + echo "󰁼 ${perc}" + elif [ $num -gt 20 ]; then + echo "󰁻 ${perc}" + elif [ $num -gt 10 ]; then + echo "󰁺 ${perc}" + else + notify-send --urgency=critical -t 2000 "󱃍 low battery, please charge" + echo "󰂎 ${perc}" + fi +fi diff --git a/desktopenvs/hyprland/eww-nobattery/scripts/getvol b/desktopenvs/hyprland/eww-nobattery/scripts/getvol new file mode 100755 index 0000000..86b6270 --- /dev/null +++ b/desktopenvs/hyprland/eww-nobattery/scripts/getvol @@ -0,0 +1,5 @@ +#!/bin/sh + +perc=$(pactl get-sink-volume @DEFAULT_SINK@ | awk -F/ '{print $2}' | xargs) +num=$(echo ${perc::-1}) +echo $num diff --git a/desktopenvs/hyprland/eww-nobattery/scripts/playerget b/desktopenvs/hyprland/eww-nobattery/scripts/playerget new file mode 100755 index 0000000..80a5e01 --- /dev/null +++ b/desktopenvs/hyprland/eww-nobattery/scripts/playerget @@ -0,0 +1,31 @@ +#!/bin/bash +truncs=13 +trunca=10 +song=$(playerctl metadata --format '{{ title }}') +artist=$(playerctl metadata --format '{{ artist }}') +#echo ${sample} + +if [ ${#song} -gt $truncs ]; then + songt=$(echo $song | head -c $truncs | sed 's/$/…/') +else + if [ ${#song} -ne 0 ]; then + songt=$(echo ${song}) + else + songt=$(echo None) + fi +fi + +if [ ${#artist} -gt $trunca ]; then + artistt=$(echo $artist | head -c $trunca | sed 's/$/…/') +else + if [ ${#artist} -ne 0 ]; then + artistt=$(echo ${artist}) + else + artistt=$(echo None) + fi +fi +echo "${songt}|${artistt}" + + +#hyprctl activewindow | grep title: | awk -F: '{print $2}' | head -c $trunc | sed 's/$/.../' + diff --git a/desktopenvs/hyprland/eww-nobattery/scripts/windowswitcher b/desktopenvs/hyprland/eww-nobattery/scripts/windowswitcher new file mode 100755 index 0000000..2ca011b --- /dev/null +++ b/desktopenvs/hyprland/eww-nobattery/scripts/windowswitcher @@ -0,0 +1,2 @@ +#!/bin/bash + hyprctl dispatch focuswindow address:"$(hyprctl -j clients | jq 'map("\(.workspace.id) ∴ \(.workspace.name) ┇ \(.title) ┇ \(.address)")' | sed "s/,$//; s/^\[//; s/^\]//; s/^[[:blank:]]*//; s/^\"//; s/\"$//" | grep -v "^$" | wofi -dO alphabetical | grep -o "0x.*$")" diff --git a/desktopenvs/hyprland/eww-nobattery/scripts/workspace b/desktopenvs/hyprland/eww-nobattery/scripts/workspace new file mode 100755 index 0000000..7fff597 --- /dev/null +++ b/desktopenvs/hyprland/eww-nobattery/scripts/workspace @@ -0,0 +1,52 @@ +#!/bin/bash + +#define icons for workspaces 1-9 +ic=("W0" "W1" "W2" "W3" "W4" "W5" "W6" "W7" "W8" "W9") + +#initial check for occupied workspaces +for num in $(hyprctl workspaces | grep ID | sed 's/()/(1)/g' | awk 'NR>1{print $1}' RS='(' FS=')'); do + export o"$num"="$num" +done + +#initial check for focused workspace +for num in $(hyprctl monitors | grep active | sed 's/()/(1)/g' | awk 'NR>1{print $1}' RS='(' FS=')'); do + export f"$num"="$num" + export fnum=f"$num" +done + +workspaces() { +if [[ ${1:0:9} == "workspace" ]]; then #set focused workspace + unset -v "$fnum" + num=${1:11} + export f"$num"="$num" + export fnum=f"$num" + +elif [[ ${1:0:15} == "createworkspace" ]]; then #set Occupied workspace + num=${1:17} + export o"$num"="$num" + export f"$num"="$num" + +elif [[ ${1:0:16} == "destroyworkspace" ]]; then #unset unoccupied workspace + num=${1:18} + unset -v o"$num" f"$num" +fi + +#output eww widget +echo "(eventbox :onscroll \"echo {} | sed -e 's/up/-1/g' -e 's/down/+1/g' | xargs hyprctl dispatch workspace\" \ + (box :class \"works\" :orientation \"h\" :spacing 5 :space-evenly \"true\" \ + (button :onclick \"hyprctl dispatch workspace 1\" :onrightclick \"hyprctl dispatch workspace 1 && /home/taylor/.config/hypr/default_app\" :class \"0$o1$f1\" \"${ic[1]}\") \ + (button :onclick \"hyprctl dispatch workspace 2\" :onrightclick \"hyprctl dispatch workspace 2 && /home/taylor/.config/hypr/default_app\" :class \"0$o2$f2\" \"${ic[2]}\") \ + (button :onclick \"hyprctl dispatch workspace 3\" :onrightclick \"hyprctl dispatch workspace 3 && /home/taylor/.config/hypr/default_app\" :class \"0$o3$f3\" \"${ic[3]}\") \ + (button :onclick \"hyprctl dispatch workspace 4\" :onrightclick \"hyprctl dispatch workspace 4 && /home/taylor/.config/hypr/default_app\" :class \"0$o4$f4\" \"${ic[4]}\") \ + (button :onclick \"hyprctl dispatch workspace 5\" :onrightclick \"hyprctl dispatch workspace 5 && /home/taylor/.config/hypr/default_app\" :class \"0$o5$f5\" \"${ic[5]}\") \ + (button :onclick \"hyprctl dispatch workspace 6\" :onrightclick \"hyprctl dispatch workspace 6 && /home/taylor/.config/hypr/default_app\" :class \"0$o6$f6\" \"${ic[6]}\") \ + (button :onclick \"hyprctl dispatch workspace 7\" :onrightclick \"hyprctl dispatch workspace 7 && /home/taylor/.config/hypr/default_app\" :class \"0$o7$f7\" \"${ic[7]}\") \ + )\ + )" +} + +workspaces + +socat -u UNIX-CONNECT:/tmp/hypr/"$HYPRLAND_INSTANCE_SIGNATURE"/.socket2.sock - | while read -r event; do +workspaces "$event" +done