Я хотел бы настроить i3WM для установки максимального уровня громкости (скажем, 150%), чтобы случайно не увеличить громкость до какого-то огромного значения. Я сделал bash-скрипт, выполнение которого привязано к клавише volume_up. Все элементы работают нормально по отдельности, но когда я собираю все вместе, что-то не так.
Код Bash-скрипта:
#!/бин/баш
max_volume_pc=$1
current_volume_pc=$(список пактов | grep '^[[:space:]]Volume:' | head -n $(( $SINK + 1 )) | tail -n 1 | sed -e s,.* \( [0-9][0-9]*\)%.*,\1,')
если (($current_volume_pc < $max_volume_pc-10)) ; тогда
pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status
еще
a=$(($max_volume_pc - $current_volume_pc))
pactl set-sink-volume @DEFAULT_SINK@ +$a% && $refresh_i3status
фи
привязать в конфигурационном файле i3:
bindsym XF86AudioRaiseVolume exec ~/.config/i3/custom_configs/volume_up.sh 150
Что работает просто отлично:
- увеличение громкости при привязке - это всего лишь одна команда для увеличения громкости с помощью pactl (без какого-либо скрипта bash, просто команда exec pactl в конфигурационном файле i3, такая же, как команда в операторе if выше)
- выполнение только вышеуказанного скрипта bash с терминала
- выполнять все вместе, но когда
current_volume_pc
жестко запрограммировано на некоторое значение
Таким образом, все указывает на проблему с получением текущего значения громкости, когда скрипт выполняется с помощью действия с привязкой клавиш, но я понятия не имею, как это исправить. Также нет сообщений об ошибках от i3, и моя ОС — Ubuntu 20.04, если эта информация будет кому-то полезна. Я также пробовал некоторые другие способы синтаксиса привязки, но результат всегда один и тот же, и приведенный выше синтаксис кажется мне наиболее логичным.
Я также нашел Reddit с подобным вопросом здесь: https://www.reddit.com/r/i3wm/comments/dens5j/limiting_pulseaudio_max_volume/, но я не понимаю, что происходит в файле dikduk, и я думаю, что мне лучше найти помощь в решении моей проблемы, чем копировать чье-то решение