From ef9c6b9d00e835fc39d8e76357109c77e6d4f29e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Dias?= Date: Sun, 24 Nov 2024 15:21:20 -0300 Subject: [PATCH] :sparkles: feat(eww): use gnome-like workspaces in bar --- eww/scripts/volume.sh | 45 +++++++++++++++++++++++-------------- eww/styles/bar.scss | 31 +++++++++++++------------ eww/widgets/audio.yuck | 9 ++++---- eww/widgets/window.yuck | 2 +- eww/widgets/workspaces.yuck | 3 ++- 5 files changed, 52 insertions(+), 38 deletions(-) diff --git a/eww/scripts/volume.sh b/eww/scripts/volume.sh index 44ff958..192d94c 100644 --- a/eww/scripts/volume.sh +++ b/eww/scripts/volume.sh @@ -1,28 +1,39 @@ #!/usr/bin/env bash -# Note: $SCROLL is defined by eww +default_value="5" +audio_sink="@DEFAULT_AUDIO_SINK@" +current_volume=$(wpctl get-volume $audio_sink) -DEFAULT_INCREASE='5' -Guess_increase_decrease() { - CURRENT_VOL=$(Translate_volume_to_int) +get_volume() { + echo $(wpctl get-volume $audio_sink) +} - if [[ $SCROLL == "up" ]]; then - if [[ $(awk "BEGIN { ($CURRENT_VOL+$DEFAULT_INCREASE) }") > 100 ]]; then - echo "1.00" - else - echo "$DEFAULT_INCREASE%+" +get_json_loop() { + while true; do + if ! [[ $current_volume == get_volume ]]; then + echo "{ \"volume\": $(translate_volume $current_volume) }" + current_volume=$(get_volume) fi + done +} + +set_volume() { + wpctl set-volume $audio_sink $1 +} + +translate_volume() { + echo "$($1 | sed -e 's/Volume: //' -e 's/^1\./1/' -e 's/^0.//' -e 's/^00/0/')" +} + +increase_vol() { + if (($(translate_volume $current_volume)+$default_value >= 100)); then + set_volume "1.00" else - echo "$DEFAULT_INCREASE%-" + set_volume "$default_value%+" fi } -Update_volume() { - UPDATED_VOL=$(Guess_increase_decrease) - wpctl set-volume "@DEFAULT_AUDIO_SINK@" "$UPDATED_VOL" -} - -Translate_volume_to_int() { - echo $(wpctl get-volume @DEFAULT_AUDIO_SINK@ | sed -e 's/Volume: //' -e 's/^1\./1/' -e 's/^0.//' -e 's/^00/0/') +decrease_vol() { + set_volume "$default_value%-" } diff --git a/eww/styles/bar.scss b/eww/styles/bar.scss index 4a18189..da0e739 100644 --- a/eww/styles/bar.scss +++ b/eww/styles/bar.scss @@ -80,36 +80,39 @@ menu { } .workspaces { - padding: 2px 6px; - border-radius: 16px; + padding: 2px 0px; + border-radius: 10px; & > button { padding: 0 0; border-radius: 16px; margin: 0 2px; - background: darken($color1, 20); - font-weight: 500; + background: $color1; + transition: ease-in 80ms; + transition-property: all; &.active { - background: $color1; - font-weight: 600; - padding: 0 24px; + padding: 0 22px; + background: $foreground; } - &:not(.active) { - padding: 0 10px; + &.default { + padding: 0 12px; } } } -.workspaces button:hover { - color: $color1; -} .distro-logo { - padding: 0 16px; + padding: 0 14px; - & label { + & > button { + padding: 0; + margin: 0; + } + + & > label { font-size: 15px; + padding-right: 2px; } } diff --git a/eww/widgets/audio.yuck b/eww/widgets/audio.yuck index 2fca143..2dd4396 100644 --- a/eww/widgets/audio.yuck +++ b/eww/widgets/audio.yuck @@ -1,11 +1,10 @@ -(defpoll output_volume :interval "500ms" -`echo "$(wpctl get-volume @DEFAULT_AUDIO_SINK@ | sed -e 's/Volume: //' -e 's/^1\./1/' -e 's/^0.//' -e 's/^00/0/')%"`) +(deflisten volume_out :initial '{ "volume": "100%" }' +`sh -c "source './scripts/volume.sh'; get_json_loop"`) (defwidget audio [] (eventbox - :onscroll `sh -c "SCROLL='{}'; source './scripts/volume.sh'; Update_volume"` - - (button :class "audio" "󰕾 ${output_volume}") + :onscroll `[[ {} == "up" ]]; sh -c "source './scripts/volume.sh'; increase_vol" || sh -c "source './scripts/volume.sh'; decrease_vol"` + (button "󰕾 ${volume_out.volume}") ) ) diff --git a/eww/widgets/window.yuck b/eww/widgets/window.yuck index e6729a4..62c0f8b 100644 --- a/eww/widgets/window.yuck +++ b/eww/widgets/window.yuck @@ -1,6 +1,6 @@ (deflisten active_window :initial "" -`sh ./scripts/window.sh`) +`sh ./scripts/active-window.sh`) (defwidget window [] (button :visible { active_window.class == "null" ? false : true } diff --git a/eww/widgets/workspaces.yuck b/eww/widgets/workspaces.yuck index 6207791..323c6f3 100644 --- a/eww/widgets/workspaces.yuck +++ b/eww/widgets/workspaces.yuck @@ -8,10 +8,11 @@ (defwidget workspaces [] (eventbox :onscroll "[[ {} == up ]] && hyprctl dispatch workspace e+1 || hyprctl dispatch workspace e-1" (box :class "workspaces" + :space-evenly false (for workspace in json_workspaces (button :onclick "hyprctl dispatch workspace ${workspace.id}" :class "${ json_active_workspace.id == workspace.id ? "active" : "default" }" - "${workspace.id}") + "") ) ) )