From ccb081f4f40f71e5db09be082e69af9e25e84e41 Mon Sep 17 00:00:00 2001 From: Justine Smithies Date: Fri, 10 May 2024 19:49:57 +0100 Subject: Updates for using eww as the bar for sway --- .config/eww/eww.scss | 10 ++-- .config/eww/eww.yuck | 10 ++-- .config/eww/scripts/arch-updates.sh | 9 ++-- .config/eww/scripts/bar-toggle.sh | 9 ++-- .config/eww/scripts/brightnesscontrol | 14 +++--- .config/eww/scripts/calendar.sh | 2 +- .config/eww/scripts/idleinhibit.sh | 48 +++++------------- .config/eww/scripts/scratchpad-indicator.sh | 9 ++-- .config/eww/scripts/start.sh | 13 ++--- .config/eww/scripts/void-updates.sh | 39 +++++++++++++++ .config/eww/scripts/volumecontrol | 77 +++++++++++++++++------------ 11 files changed, 133 insertions(+), 107 deletions(-) create mode 100755 .config/eww/scripts/void-updates.sh (limited to '.config/eww') diff --git a/.config/eww/eww.scss b/.config/eww/eww.scss index 6ac2238..e9588af 100644 --- a/.config/eww/eww.scss +++ b/.config/eww/eww.scss @@ -12,9 +12,9 @@ .bar { background-color: rgba(0, 0, 0, 0.7); - box-shadow: 2px 4px 2px 1px rgba(0, 0, 0, 0.5); - margin: 2px 10px 4px 10px; - border-radius: 5px; + // box-shadow: 2px 4px 2px 1px rgba(0, 0, 0, 0.5); + margin: 2px 10px 0px 10px; + border-radius: 0px; } // Styles on classes (see eww.yuck for more information) @@ -38,12 +38,12 @@ padding-right: 10px; } -.paru { +.xbps { color: #98971a; padding-right: 10px; } -.paru-empty { +.xbps-empty { color: #98971a; padding-right: 0px; } diff --git a/.config/eww/eww.yuck b/.config/eww/eww.yuck index 85c00c8..9d1f4dc 100644 --- a/.config/eww/eww.yuck +++ b/.config/eww/eww.yuck @@ -92,15 +92,15 @@ (defwidget updates [] (box - :class "${matches(arch-updates, '^\s*$')?'paru-empty':'paru'}" + :class "${matches(void-updates, '^\s*$')?'xbps-empty':'xbps'}" :orientation "h" :space-evenly false :halign "end" :spacing 10 (button :class "" - :onclick "foot bash -c 'paru; ~/.config/eww/scripts/arch-updates.sh Refresh'&" - arch-updates) + :onclick "foot bash -c 'sudo xbps-install -Suv; ~/.config/eww/scripts/void-updates.sh Refresh'&" + void-updates) )) (defwidget scratchpad-indicator [] @@ -169,8 +169,8 @@ (defpoll idle :interval "1s" "scripts/idleinhibit.sh") -(defpoll arch-updates :interval "600s" - "scripts/arch-updates.sh") +(defpoll void-updates :interval "600s" + "scripts/void-updates.sh") (defpoll volume :interval "1s" "scripts/volumecontrol") diff --git a/.config/eww/scripts/arch-updates.sh b/.config/eww/scripts/arch-updates.sh index 62bfe4a..e3da71f 100755 --- a/.config/eww/scripts/arch-updates.sh +++ b/.config/eww/scripts/arch-updates.sh @@ -1,10 +1,9 @@ #!/bin/bash function CheckUpdates() { -updates="$(checkupdates;paru -Qum)" -arch="$(checkupdates | wc -l)" -aur="$(paru -Qum | wc -l)" -number=$((arch+aur)) +xbps-install -Mun 1> /tmp/void-updates +updates="$(cat /tmp/void-updates | awk '{ print $1 }')" +number=$(cat /tmp/void-updates | wc -l) if [ "$number" -gt 0 ]; then text=" $number" @@ -21,7 +20,7 @@ function RefreshUpdates() { } function Update() { - foot 'paru' + foot bash -c 'sudo xbps-install -Suv' RefreshUpdates } diff --git a/.config/eww/scripts/bar-toggle.sh b/.config/eww/scripts/bar-toggle.sh index aedc8fd..74b1819 100755 --- a/.config/eww/scripts/bar-toggle.sh +++ b/.config/eww/scripts/bar-toggle.sh @@ -1,8 +1,9 @@ #!/bin/bash -monitors=$(hyprctl monitors -j | jq '.[] | .id') -for i in ${monitors}; -do - active_monitor=$(hyprctl -j activeworkspace | grep 'monitorID' | tr -dc '0-9\n') +monitors=$(swaymsg -t get_outputs -r | jq -r -c '.[] | .name' | wc -l) + +for ((i = 0 ; i < $monitors ; i++)); do + echo $i + active_monitor=$(swaymsg -t get_outputs | jq 'map(.focused)|to_entries|.[]|select(.value)|.key') bar=$(eww active-windows | grep "bar$i") if [ "$active_monitor" == "$i" ] && [ "$bar" == "bar$i: bar$i" ]; then eww close bar$i diff --git a/.config/eww/scripts/brightnesscontrol b/.config/eww/scripts/brightnesscontrol index 1f66f9d..2b51c75 100755 --- a/.config/eww/scripts/brightnesscontrol +++ b/.config/eww/scripts/brightnesscontrol @@ -9,14 +9,15 @@ # https://gist.github.com/sebastiencs/5d7227f388d93374cebdf72e783fbd6a function send_notification { - icon=/usr/share/icons/Papirus-Dark/16x16/actions/brightnesssettings.svg - brightness=$(brightnessctl -P g) + icon=/usr/share/icons/Adwaita/symbolic/status/daytime-sunrise-symbolic.svg + brightness=$(brightnessctl g) + brightness=$((brightness *100 / 255 )) brightness=$(echo "$brightness" | awk '{print ($0-int($0)<0.499)?int($0):int($0)+1}') # Make the bar with the special character ─ (it's not dash -) # https://en.wikipedia.org/wiki/Box-drawing_character bar=$(seq -s "─" 0 $((brightness / 10 )) | sed 's/[0-9]//g') # Send the notification - notify-send -i "$icon" -r 5555 -u normal "$bar $brightness" + notify-send -i "$icon" --hint=string:x-canonical-private-synchronous:brightness -u normal "$bar $brightness" } case $1 in @@ -24,16 +25,17 @@ case $1 in # increase the backlight by 5% brightnessctl s +5% send_notification - canberra-gtk-play -i audio-volume-change + # canberra-gtk-play -i audio-volume-change ;; down) # decrease the backlight by 5% brightnessctl s 5%- send_notification - canberra-gtk-play -i audio-volume-change + # canberra-gtk-play -i audio-volume-change ;; *) - brightness=$(brightnessctl -P g) + brightness=$(brightnessctl g) + brightness=$((brightness *100 / 255 )) brightness=$(echo "$brightness" | awk '{print ($0-int($0)<0.499)?int($0):int($0)+1}') icon="󰃞" printf "%s" "$icon $brightness" "%" diff --git a/.config/eww/scripts/calendar.sh b/.config/eww/scripts/calendar.sh index 3c6b16f..f077c59 100755 --- a/.config/eww/scripts/calendar.sh +++ b/.config/eww/scripts/calendar.sh @@ -3,7 +3,7 @@ # Calendar script function ShowCalendar() { - notify-send -i "calendar" " 📅 Calendar" "$(cal --color=always | sed "s/..7m//;s/..0m/<\/span><\/b>/")" -r 124 + notify-send --hint=string:x-canonical-private-synchronous:calendar -u normal -i "calendar" " 📅 Calendar" "$(cal --color=always | sed "s/..7m//;s/..0m/<\/span><\/b>/")" } function EditCalendar() { diff --git a/.config/eww/scripts/idleinhibit.sh b/.config/eww/scripts/idleinhibit.sh index 79f9ef0..f606ad5 100755 --- a/.config/eww/scripts/idleinhibit.sh +++ b/.config/eww/scripts/idleinhibit.sh @@ -1,42 +1,20 @@ #!/bin/bash # Swayidle toggle -# function toggle { -# if pgrep "swayidle" > /dev/null -# then -# pkill swayidle -# notify-send -r 5556 -u normal " Swayidle Inactive" -# else -# swayidle timeout 300 'swaylock -F -i ~/.cache/wallpaper --effect-blur 10x5 --clock --indicator' timeout 600 'hyprctl dispatch dpms off' resume 'hyprctl dispatch dpms on' & -# notify-send -r 5556 -u normal " Swayidle Active" -# fi -# } -# -# case $1 in -# toggle) -# toggle -# ;; -# *) -# if pgrep "swayidle" > /dev/null -# then -# icon="" -# else -# icon="" -# fi -# printf "%s" "$icon " -# ;; -# esac - -# Hypridle toggle function toggle { - if pgrep "hypridle" > /dev/null + if pgrep "swayidle" > /dev/null then - pkill hypridle - notify-send -r 5556 -u normal " Hypridle Inactive" - else - hypridle & - notify-send -r 5556 -u normal " Hypridle Active" - fi + pkill swayidle + notify-send --hint=string:x-canonical-private-synchronous:idleinhibit -u normal " Swayidle Inactive" +else + read -r wallpaper<~/.cache/wallpaper + export wallpaper=$( echo $wallpaper) + swayidle -w \ + timeout 300 'swaylock -f -i $wallpaper' \ + timeout 600 'wlopm --off \*;swaylock -F -i $wallpaper' resume 'wlopm --on \*' \ + before-sleep 'swaylock -f -i $wallpaper' & + notify-send --hint=string:x-canonical-private-synchronous:idleinhibit -u normal " Swayidle Active" +fi } case $1 in @@ -44,7 +22,7 @@ case $1 in toggle ;; *) - if pgrep "hypridle" > /dev/null + if pgrep "swayidle" > /dev/null then icon="" else diff --git a/.config/eww/scripts/scratchpad-indicator.sh b/.config/eww/scripts/scratchpad-indicator.sh index b0911d9..8fd06f4 100755 --- a/.config/eww/scripts/scratchpad-indicator.sh +++ b/.config/eww/scripts/scratchpad-indicator.sh @@ -1,9 +1,8 @@ #!/bin/bash -# Scratchpad indicator for Hyprland +# Scratchpad indicator for Sway -output="$(hyprctl clients -j | jq -r '.[] | select(.workspace.id==-99) |""+.class+" : "+.title+""')" -number="$(hyprctl clients -j | jq -r '.[] | select(.workspace.id==-99) | (tostring)' | wc -l)" -file=~/.config/eww/eww.scss +output="$(swaymsg -t get_tree | jq -r 'recurse(.nodes[]?)|recurse(.floating_nodes[]?)|select(.name == "__i3_scratch").floating_nodes[]|"`"+.name+"` - "+.app_id+" "+(.id|tostring)')" +number="$(swaymsg -r -t get_tree | jq -r 'recurse(.nodes[]) | first(select(.name=="__i3_scratch")) | .floating_nodes | length')" if [ "$number" -gt 0 ]; then text=" $number" @@ -21,7 +20,7 @@ function ShowInfo() { exit else tooltip="$(echo -e $tooltip)" - notify-send " Scratchpad" "$tooltip" -r 123 + notify-send --hint=string:x-canonical-private-synchronous:scratchpad -u normal " Scratchpad" "$tooltip" fi } diff --git a/.config/eww/scripts/start.sh b/.config/eww/scripts/start.sh index f464058..1e5c023 100755 --- a/.config/eww/scripts/start.sh +++ b/.config/eww/scripts/start.sh @@ -4,16 +4,9 @@ eww kill # start a bar for each monitor -monitors=$(hyprctl monitors -j | jq '.[] | .id') -# monitors=$(hyprctl monitors -j | jq '.[] | .id' | wc -l) +monitors=$(wlr-randr | grep "^[^ ]" | awk '{ print$1 }' | wc -l) -for monitor in ${monitors}; do - eww open bar${monitor} +for ((i = 0 ; i < $monitors ; i++)); do + eww open bar${i} done -# eww open bar0 -# if [ $monitors -gt 1 ]; then -# for ((i = 1 ; i <= $monitors ; i++)); do -# eww open bar${i} -# done -# fi diff --git a/.config/eww/scripts/void-updates.sh b/.config/eww/scripts/void-updates.sh new file mode 100755 index 0000000..b004735 --- /dev/null +++ b/.config/eww/scripts/void-updates.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +function CheckUpdates() { +xbps-install -Mun 1> /tmp/void-updates +updates="$(cat /tmp/void-updates | awk '{ print $1 }')" +number=$(cat /tmp/void-updates | wc -l) + +if [ "$number" -gt 0 ]; then + text=" $number" +else + text="" +fi + +echo "$text" +} + +function RefreshUpdates() { + value="$(CheckUpdates)" + eww update void-updates="$value" +} + +function Update() { + foot bash -c 'sudo xbps-install -Suv' + RefreshUpdates +} + +case "$1" in + Refresh) + RefreshUpdates + exit 0 + ;; + Update) + Update + exit 0 + ;; + *) + CheckUpdates + exit 0 +esac diff --git a/.config/eww/scripts/volumecontrol b/.config/eww/scripts/volumecontrol index 4d24d29..60a5b83 100755 --- a/.config/eww/scripts/volumecontrol +++ b/.config/eww/scripts/volumecontrol @@ -6,64 +6,79 @@ # volumecontrol mute function get_volume { - amixer get Master | grep '%' | head -n 1 | cut -d '[' -f 2 | cut -d '%' -f 1 + # amixer get Master | grep '%' | head -n 1 | cut -d '[' -f 2 | cut -d '%' -f 1 + pactl get-sink-volume @DEFAULT_SINK@ | grep -Po '\d+(?=%)' | head -n 1 } function is_mute { - amixer get Master | grep '%' | grep -oE '[^ ]+$' | grep off > /dev/null + # amixer get Master | grep '%' | grep -oE '[^ ]+$' | grep off > /dev/null + pactl get-sink-mute @DEFAULT_SINK@ | grep 'Mute: yes' >> /dev/null } function send_notification { volume=$(get_volume) # Make the bar with the special character ─ (it's not dash -) # https://en.wikipedia.org/wiki/Box-drawing_character -if [ "$volume" = "0" ]; then - icon_name="/usr/share/icons/Adwaita/16x16/legacy/audio-volume-muted.png" -notify-send -i "$icon_name" -r 5556 -u normal "$volume" - else - if [ "$volume" -lt "10" ]; then - icon_name="/usr/share/icons/Adwaita/16x16/legacy/audio-volume-low.png" -notify-send -i "$icon_name" -r 5556 -u normal "$volume" - else - if [ "$volume" -lt "30" ]; then - icon_name="/usr/share/icons/Adwaita/16x16/legacy/audio-volume-low.png" - else - if [ "$volume" -lt "70" ]; then - icon_name="/usr/share/icons/Adwaita/16x16/legacy/audio-volume-medium.png" - else - icon_name="/usr/share/icons/Adwaita/16x16/legacy/audio-volume-high.png" - fi - fi - fi -fi + if [[ $volume == "100" ]]; then + icon="" + elif [[ $volume -ge "89" && $volume -le "100" ]]; then + icon="" + elif [[ $volume -ge "79" && $volume -le "90" ]]; then + icon="" + elif [[ $volume -ge "69" && $volume -le "80" ]]; then + icon="" + elif [[ $volume -ge "59" && $volume -le "70" ]]; then + icon="" + elif [[ $volume -ge "49" && $volume -le "60" ]]; then + icon="" + elif [[ $volume -ge "39" && $volume -le "50" ]]; then + icon="" + elif [[ $volume -ge "29" && $volume -le "40" ]]; then + icon="" + elif [[ $volume -ge "19" && $volume -le "30" ]]; then + icon="" + elif [[ $volume -ge "9" && $volume -le "20" ]]; then + icon="" + elif [[ $volume -gt "0" && $volume -le "10" ]]; then + icon="" + elif [[ $volume -eq "0" ]]; then + icon="" + # volume="M " + fi bar=$(seq -s "─" $(($volume/5)) | sed 's/[0-9]//g') # Send the notification -notify-send -i "$icon_name" -r 5556 -u normal "$bar $volume" +notify-send --hint=string:x-canonical-private-synchronous:volumecontrol -u normal "$icon $bar $volume" } case $1 in up) # Set the volume on (if it was muted) - amixer set Master on > /dev/null + # amixer set Master on > /dev/null + pactl set-sink-mute @DEFAULT_SINK@ 0 # Up the volume (+ 2%) - amixer sset Master 2%+ > /dev/null + # amixer sset Master 2%+ > /dev/null + pactl set-sink-volume @DEFAULT_SINK@ +2% send_notification - canberra-gtk-play -i audio-volume-change + # canberra-gtk-play -i audio-volume-change ;; down) - amixer set Master on > /dev/null - amixer sset Master 2%- > /dev/null + # amixer set Master on > /dev/null + pactl set-sink-mute @DEFAULT_SINK@ 0 + # amixer sset Master 2%- > /dev/null + pactl set-sink-volume @DEFAULT_SINK@ -2% send_notification - canberra-gtk-play -i audio-volume-change + # canberra-gtk-play -i audio-volume-change ;; mute) # Toggle mute - amixer set Master 1+ toggle > /dev/null + # amixer set Master 1+ toggle > /dev/null + pactl set-sink-mute @DEFAULT_SINK@ toggle if is_mute ; then - notify-send -i "/usr/share/icons/Adwaita/16x16/legacy/audio-volume-muted.png" -r 5556 -u normal "$bar Audio Muted" + icon="󰝟" + notify-send --hint=string:x-canonical-private-synchronous:volumecontrol -u normal "$icon Audio Muted" else send_notification - canberra-gtk-play -i audio-volume-change + # canberra-gtk-play -i audio-volume-change fi ;; *) -- cgit v1.2.3