Aș dori să configurez i3WM pentru a seta nivelul maxim al volumului (să zicem 150%), astfel încât să nu măresc accidental volumul la o valoare uriașă. Am creat un script bash care execuție este legată de cheia volume_up. Toate elementele funcționează bine separat, dar când pun totul împreună, ceva nu este în regulă.
Cod de script Bash:
#!/bin/bash
max_volume_pc=1 USD
current_volume_pc=$(pactl list sinks | grep '^[[:space:]]Volum:' | head -n $(( $SINK + 1 )) | tail -n 1 | sed -e 's,.* \( [0-9][0-9]*\)%.*,\1,')
if (($volum_curent_buc < $max_volum_buc-10)) ; atunci
pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status
altfel
a=$(($max_volume_pc - $current_volume_pc))
pactl set-sink-volume @DEFAULT_SINK@ +$a% && $refresh_i3status
fi
legați în fișierul de configurare i3:
bindsym XF86AudioRaiseVolume exec ~/.config/i3/custom_configs/volume_up.sh 150
Ce funcționează bine:
- creșterea volumului când este legată este doar o singură comandă pentru creșterea volumului cu pactl (fără niciun script bash, doar comanda exec pactl în fișierul de configurare i3 la fel ca și comanda în declarația if de mai sus)
- executând numai scriptul bash de mai sus din terminal
- executând totul împreună, dar când
curent_volum_buc
este codificat greu la o anumită valoare
Deci, totul indică o problemă cu obținerea valorii curente a volumului atunci când scriptul este executat prin acțiune legată de taste, dar nu am idee cum să o repar. De asemenea, nu există nicio eroare de comunicare de la i3 și sistemul meu de operare este Ubuntu 20.04, dacă aceste informații ar fi utile cuiva. Am încercat și alte moduri de a lega sintaxa, dar rezultatul este întotdeauna același, iar sintaxa furnizată mai sus mi se pare cea mai logică.
Am găsit și reddit cu o întrebare similară aici: https://www.reddit.com/r/i3wm/comments/dens5j/limiting_pulseaudio_max_volume/, dar nu înțeleg ce se întâmplă în fișierul lui dikduk și cred că este mai bine pentru mine să găsesc ajutor pentru a-mi remedia propria problemă, decât să copiez și lipim soluția cuiva