Làm cách nào để thay đổi các ràng buộc chính dựa trên cửa sổ nào được tập trung?


8

Tôi có những dòng này trong cấu hình i3 của tôi ngay bây giờ:

# Play/pause, prev, next
bindcode 172 exec "/opt/playerctl/bin/playerctl play-pause"
bindcode 173 exec "/opt/playerctl/bin/playerctl previous"
bindcode 171 exec "/opt/playerctl/bin/playerctl next"

Điều này làm cho các nút phương tiện trên bàn phím của tôi phát / tạm dừng trình phát âm thanh được hỗ trợ bởi playerctl, như Spotify.

Vấn đề là nút phương tiện phát / tạm dừng bây giờ không còn hoạt động trong trình phát video của tôi (SMPlayer).

Có thể làm cho các ràng buộc chính chỉ có hiệu lực khi cửa sổ tập trung không phải là SMPlayer?


Để tóm tắt những gì tôi đang cố gắng thực hiện: Tôi muốn các ràng buộc chính ở trên luôn có hiệu lực, ngoại trừ khi cửa sổ SMPlayer (lớp: "Smplayer") được tập trung.

Điều này có thể không?

Câu trả lời:


3

Bạn có thể thử điều này. Hãy nhớ thay thế usernamebằng tên người dùng Linux thực sự của bạn sau đây. Vì một số lý do, sử dụng ~thay vì home/usernamekhông hiệu quả với tôi.

Sử dụng các dòng này trong cấu hình i3:

# Play/pause, prev, next
bindcode 172 exec /home/username/.i3/play.sh play-pause
bindcode 173 exec /home/username/.i3/play.sh previous
bindcode 171 exec /home/username/.i3/play.sh next

Dán đoạn sau vào một tệp có tên /home/username/.i3/play.sh

cmd="$1"
id=$(xprop -root | awk '/_NET_ACTIVE_WINDOW\(WINDOW\)/{print $NF}')
curr_title=$(xprop -id $id | awk '/_NET_WM_NAME/{$1=$2="";print}' | cut -d'"' -f2)
if [[ "$curr_title" != "SMPlayer"* ]]; then
    /opt/playerctl/bin/playerctl "$cmd"
fi

Bạn có thể phải điều chỉnh phần "SMPlayer" * tùy thuộc vào tiêu đề chính xác mà cửa sổ có - Tôi không có kinh nghiệm với chương trình đó. Bạn có thể thêm một elsemệnh đề để chạy chương trình khác khi SMPlayer đang chạy, nếu bạn muốn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.