✨ feat(eww): use gnome-like workspaces in bar
This commit is contained in:
+28
-17
@@ -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
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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,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 }
|
||||
|
||||
@@ -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}")
|
||||
"")
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user