feat(eww): use gnome-like workspaces in bar

This commit is contained in:
João Dias
2024-11-24 15:21:20 -03:00
parent 825b57a8f2
commit ef9c6b9d00
5 changed files with 52 additions and 38 deletions
+28 -17
View File
@@ -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%-"
}
+17 -14
View File
@@ -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;
}
}
+4 -5
View File
@@ -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}")
)
)
+1 -1
View File
@@ -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 }
+2 -1
View File
@@ -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}")
"")
)
)
)