@@ -22,6 +22,7 @@ OSD="no"
22
22
NODE_NICKNAMES_PROP=
23
23
VOLUME_STEP=2
24
24
VOLUME_MAX=130
25
+ LISTEN_TIMEOUT=0.1
25
26
# shellcheck disable=SC2016
26
27
FORMAT=' $VOL_ICON ${VOL_LEVEL}% $ICON_NODE $NODE_NICKNAME'
27
28
declare -A NODE_NICKNAMES
@@ -348,7 +349,7 @@ function listen() {
348
349
# Read all stdin to flush unwanted pending events, i.e. if there are
349
350
# 15 events at the same time (100ms window), output is only called
350
351
# twice.
351
- read -r -d ' ' -t 0.1 -n 10000
352
+ read -r -d ' ' -t " $LISTEN_TIMEOUT " -n 10000
352
353
353
354
# After the 100ms waiting time, output again the state, as it may
354
355
# have changed if the user did an action during the 100ms window.
@@ -466,6 +467,17 @@ Options:
466
467
Exact matches are prioritized. Don't forget to quote the string when
467
468
using globs, to avoid unwanted shell glob extension.
468
469
Default: none
470
+ --listen-timeout-secs
471
+ The listen command updates the output as soon as it receives an event
472
+ from PulseAudio. However, events are often accompanied by many other
473
+ useless ones, which may result in unnecessary consecutive output
474
+ updates. This script buffers the following events until a timeout is
475
+ reached to avoid this scenario, which lessens the CPU load on events.
476
+ However, this may result in noticeable latency when performing many
477
+ actions quickly (e.g., updating the volume with the mouse wheel). You
478
+ can specify what timeout to use to control the responsiveness, in
479
+ seconds.
480
+ Default: \" $LISTEN_TIMEOUT \"
469
481
470
482
Actions:
471
483
help display this message and exit
@@ -570,6 +582,10 @@ while [[ "$1" = --* ]]; do
570
582
NODE_TYPE=" $val "
571
583
SINK_OR_SOURCE=$( [ " $NODE_TYPE " == " output" ] && echo " ink" || echo " ource" )
572
584
;;
585
+ --listen-timeout-secs)
586
+ if getOptVal " $@ " ; then shift ; fi
587
+ LISTEN_TIMEOUT=" $val "
588
+ ;;
573
589
# Deprecated options, to be removed in a next release
574
590
--icon-sink)
575
591
echo " Replaced by --icon-node, see https://github.com/marioortizmanero/polybar-pulseaudio-control/releases/tag/v3.0.0" >&2
0 commit comments