[FEATURE] Adjust volume via music widget (#953)

This commit is contained in:
Celestial.y
2025-01-10 20:12:52 +08:00
committed by GitHub
3 changed files with 38 additions and 2 deletions
+21 -2
View File
@@ -26,6 +26,22 @@ function trimTrackTitle(title) {
return title;
}
function adjustVolume(direction) {
const step = 0.03;
execAsync(['playerctl', 'volume'])
.then((output) => {
let currentVolume = parseFloat(output.trim());
let newVolume = direction === 'up' ? currentVolume + step : currentVolume - step;
if (newVolume > 1.0) newVolume = 1.0;
if (newVolume < 0.0) newVolume = 0.0;
execAsync(['playerctl', 'volume', newVolume.toFixed(2)]).catch(print);
})
.catch(print);
}
const BarGroup = ({ child }) => Box({
className: 'bar-group-margin bar-sides',
children: [
@@ -105,6 +121,8 @@ const switchToRelativeWorkspace = async (self, num) => {
}
}
export default () => {
// TODO: use cairo to make button bounce smaller on click, if that's possible
const playingState = Box({ // Wrap a box cuz overlay can't have margins itself
@@ -208,8 +226,8 @@ export default () => {
});
}
return EventBox({
onScrollUp: (self) => switchToRelativeWorkspace(self, -1),
onScrollDown: (self) => switchToRelativeWorkspace(self, +1),
onScrollUp: () => adjustVolume('up'),
onScrollDown: () => adjustVolume('down'),
child: Box({
className: 'spacing-h-4',
children: [
@@ -228,3 +246,4 @@ export default () => {
})
});
}
+15
View File
@@ -0,0 +1,15 @@
#!/bin/bash
change=$1
current_volume=$(playerctl volume)
new_volume=$(echo "$current_volume + $change" | bc)
if (( $(echo "$new_volume > 1.0" | bc -l) )); then
new_volume=1.0
elif (( $(echo "$new_volume < 0.0" | bc -l) )); then
new_volume=0.0
fi
playerctl volume "$new_volume"