Tôi muốn định cấu hình i3WM để đặt mức âm lượng tối đa (giả sử là 150%) để tôi không vô tình tăng âm lượng lên một số giá trị lớn. Tôi đã tạo tập lệnh bash để thực thi được liên kết với khóa volume_up. Tất cả các yếu tố đều hoạt động tốt khi tách riêng, nhưng khi tôi kết hợp mọi thứ lại với nhau thì có điều gì đó không ổn.
Mã tập lệnh Bash:
#!/bin/bash
max_volume_pc=$1
current_volume_pc=$(pactl list sinks | grep '^[[:space:]]Volume:' | head -n $(( $SINK + 1 )) | tail -n 1 | sed -e 's,.* \( [0-9][0-9]*\)%.*,\1,')
if (($current_volume_pc < $max_volume_pc-10)) ; sau đó
pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status
khác
a=$(($max_volume_pc - $current_volume_pc))
pactl set-sink-volume @DEFAULT_SINK@ +$a% && $refresh_i3status
fi
liên kết trong tệp cấu hình i3:
bindsym XF86AudioRaiseVolume exec ~/.config/i3/custom_configs/volume_up.sh 150
Những gì hoạt động tốt:
- tăng âm lượng khi được liên kết chỉ là một lệnh duy nhất để tăng âm lượng với pactl (không có bất kỳ tập lệnh bash nào, chỉ cần thực thi lệnh pactl trong tệp cấu hình i3 giống như lệnh trong câu lệnh if ở trên)
- chỉ thực thi tập lệnh bash ở trên từ thiết bị đầu cuối
- thực hiện mọi thứ cùng nhau, nhưng khi
current_volume_pc
được mã hóa cứng thành một số giá trị
Vì vậy, mọi thứ đều chỉ ra vấn đề với việc nhận giá trị âm lượng hiện tại khi tập lệnh được thực thi thông qua hành động liên kết phím, nhưng tôi không biết cách khắc phục. Cũng không có lỗi giao tiếp từ i3 và hệ điều hành của tôi là Ubuntu 20.04, nếu những thông tin này hữu ích cho ai đó. Tôi cũng đã thử một số cách liên kết cú pháp khác, nhưng kết quả luôn giống nhau và cú pháp được cung cấp ở trên có vẻ hợp lý nhất đối với tôi.
Tôi cũng tìm thấy reddit với câu hỏi tương tự ở đây: https://www.reddit.com/r/i3wm/comments/dens5j/limiting_pulseaudio_max_volume/, nhưng tôi không hiểu điều gì đang xảy ra trong tệp của dikduk và tôi nghĩ tốt hơn hết là tôi nên tìm trợ giúp khắc phục sự cố của chính mình thay vì sao chép giải pháp của ai đó