xbindkeys thoát báo giá


4

Làm cách nào tôi có thể thoát dấu ngoặc kép trong các lệnh .xbindkeysrc? Không phải những công việc đó.

"pacmd dump|awk --non-decimal-data '$1~/set-sink-volume/{system ("pacmd "$1" "$2" "$3+2500)}'"

"pacmd dump|awk --non-decimal-data '\$1~/set-sink-volume/{system ("pacmd "\$1" "\$2" "\$3+2500)}'"

"pacmd dump|awk --non-decimal-data '\$1~/set-sink-volume/{system (\"pacmd \"\$1\" \"\$2\" \"\$3+2500)}'"

"pacmd dump|awk --non-decimal-data '$1~/set-sink-volume/{system (\"pacmd \"$1\" \"$2\" \"$3+2500)}'"

(Các lệnh tăng mức âm lượng PulseAudio)

Câu trả lời:


4

Có hai vấn đề riêng biệt ở đây và tôi sẽ cố gắng giải quyết cả hai.

Đầu tiên là làm thế nào để trích dẫn chính xác một lệnh trong .xbindkeysrc.

Tất cả bạn phải làm là nhận một lệnh làm việc trong bash, sau đó đặt dấu ngoặc kép xung quanh nó.

Ví dụ: đối với một lệnh có khoảng trắng trong đó, bạn phải chạy

"/home/user/My Programs/progname"

hoặc là

/home/user/My\ Programs/progname

trong bash.

Có nghĩa là bạn cần

""/home/user/My Programs/progname""

hoặc là

"/home/user/My\ Programs/progname"

trong bạn .xbindkeysrc.

Về mặt kỹ thuật những gì đang xảy ra là xbindkey loại bỏ cặp dấu ngoặc kép ngoài cùng, sau đó chạy chuỗi còn lại bằng cách sử dụng sh -c.


Trong ví dụ của bạn, lệnh

pacmd dump|awk --non-decimal-data '$1~/set-sink-volume/{system ("pacmd "$1" "$2" "$3+2500)}'

hoạt động tốt trong bash, vì vậy tôi nghĩ rằng vấn đề là ở nơi khác.

Hãy thử chạy xbindkeys với -v tùy chọn, mà làm cho xbindkeys chạy ở nền trước, do đó bạn có thể thấy bất kỳ lỗi nào trên thiết bị đầu cuối của mình.

Trong trường hợp của tôi, nó cho thấy nguyên nhân cơ bản không phải là trích dẫn xấu, nhưng pacmd báo lỗi

...
No PulseAudio daemon running, or not running as session daemon.

nhưng nếu bạn có PulseAudio hoạt động, tôi nghĩ bạn cần thay đổi pacmd đến pactl, bởi vì trang người đàn ông nói rằng pacmd không lấy đối số và một số ví dụ khác trên chương trình web bằng cách sử dụng pactl vì mục đích này.


1
Cảm ơn, đặt lệnh trong dấu ngoặc kép mà không thoát nào cả
Danilo Bargen

4

Như một giải pháp thay thế, hãy tạo một tập lệnh shell ~ / bin / mychangevolume với các lệnh không thoát khi chúng xuất hiện trên dòng lệnh. Cái gì đó như

#!/bin/bash
incr=$1
pacmd dump | awk --non-decimal-data '$1~/set-sink-volume/{system ("pacmd "$1" "$2" "$3'$incr')}'"

Sau đó gọi tập lệnh này từ .xbindkeysrc

"mychangevolume +2500"
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.