Điểm:1

Đặt giới hạn tối đa để tăng âm lượng với i3, pactl và bash

lá cờ in

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 đó

Điểm:1
lá cờ in

Tôi tìm thấy vấn đề. Nguyên nhân là do ngôn ngữ hệ thống của tôi - Tôi đến từ Ba Lan, vì vậy tôi đặt tiếng Ba Lan thành ngôn ngữ hệ thống của mình, nhưng tôi đã thay đổi ngôn ngữ đầu cuối bằng .bashrc sang tiếng Anh vì nó thuận tiện hơn.

Trong trường hợp của tôi, khi tôi thực thi tập lệnh bash của mình trực tiếp từ thiết bị đầu cuối, tôi nhận được kết quả là danh sách pactl chìm bằng tiếng Anh (tôi cho rằng do thay đổi ngôn ngữ .bashrc), vì vậy mọi thứ đều hoạt động tốt. Nhưng khi tôi thực thi tập lệnh bằng cách sử dụng liên kết phím, kết quả tôi nhận được từ lệnh trên là tiếng Ba Lan, vì vậy grep không thể tìm thấy từ 'Âm lượng'. Tôi đang đặt tập lệnh bash chính xác hoạt động cả khi gọi từ thiết bị đầu cuối hoặc liên kết khóa bên dưới nếu có ai gặp sự cố tương tự.

#!/bin/bash
max_volume_pc=$1
current_volume_pc=$(pactl list sinks | grep '<Từ ngôn ngữ hệ thống của bạn có nghĩa là "âm lượng">' | head -n $(( $SINK + 1 )) | tail -n 1 | sed -e 's,.* \ ([0-9][0-9]*\)%.*,\1,')

if (($(echo -n $current_volume_pc | wc -m) == 0)); sau đó
    current_volume_pc=$(pactl list sinks | grep '^[[:space:]]Volume:' | head -n $(( $SINK + 1 )) | tail -n 1 | sed -e 's,.* \( [0-9][0-9]*\)%.*,\1,')
fi

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
pa4080 avatar
lá cờ cn
Bạn có thể đặt ngôn ngữ bằng cách thêm [`export LC_ALL=C`](https://unix.stackexchange.com/q/87745/201297) vào đầu tập lệnh (ngay sau shebang *#!/bin/bash *) để làm cho nó độc lập với ngôn ngữ.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.