আমার লক্ষ্য হ'ল স্পোটাইফাই অ্যাপ্লিকেশনটি নিঃশব্দ করতে সক্ষম হবে, পুরো সিস্টেমটি নয়। কমান্ডটি ব্যবহার করে: ps -C spotify -o pid=
আমি স্পটিফাইয়ের প্রসেস আইডিটি সন্ধান করতে সক্ষম, এই ক্ষেত্রে আইডিটি "22981"
। যে প্রক্রিয়ার সঙ্গে আইডি আমি এই তালিকা থেকে অনুসন্ধান করতে চায়: pacmd list-sink-inputs
। কমান্ডটি এই জাতীয় একটি তালিকা ফিরিয়ে দেয়:
eric@eric-desktop:~$ pacmd list-sink-inputs
Welcome to PulseAudio! Use "help" for usage information.
>>> 1 sink input(s) available.
index: 0
driver: <protocol-native.c>
flags: START_CORKED
state: RUNNING
sink: 1 <alsa_output.pci-0000_00_1b.0.analog-stereo>
volume: 0: 100% 1: 100%
0: -0.00 dB 1: -0.00 dB
balance 0.00
muted: no
current latency: 1019.80 ms
requested latency: 371.52 ms
sample spec: s16le 2ch 44100Hz
channel map: front-left,front-right
Stereo
resample method: (null)
module: 8
client: 10 <Spotify>
properties:
media.role = "music"
media.name = "Spotify"
application.name = "Spotify"
native-protocol.peer = "UNIX socket client"
native-protocol.version = "26"
application.process.id = "22981"
application.process.user = "eric"
application.process.host = "eric-desktop"
application.process.binary = "spotify"
window.x11.display = ":0"
application.language = "en_US.UTF-8"
application.process.machine_id = "058c89ad77c15e1ce0dd5a7800000012"
application.process.session_id = "058c89ad77c15e1ce0dd5a7800000012-1345692739.486413-85297109"
application.icon_name = "spotify-linux-512x512"
module-stream-restore.id = "sink-input-by-media-role:music"
এখন আমি application.process.id = "22981"
সিঙ্ক ইনপুট সূচীর সাথে সম্পর্কিত করতে চাই যা এই ক্ষেত্রে index: 0
। এখন সেই সূচী নম্বরটি নিয়ে আমার তখন এই কমান্ডটি চালানো দরকার: pacmd set-sink-input-mute 0 1
স্পটিফাইটি নিঃশব্দ করা এবং pacmd set-sink-input-mute 0 0
স্পটিফাইটি সশব্দ করা। এই কমান্ডগুলির জন্য, প্রথম নম্বরটি আগে পাওয়া সূচক সংখ্যাটির সাথে প্রতিস্থাপন করা প্রয়োজন এবং পরবর্তী নম্বরটি নিঃশব্দ চালু বা বন্ধ করার জন্য বুলিয়ান। আমি কীভাবে এটি পুরোপুরি স্ক্রিপ্টে রাখতে পারি, যাতে আমি স্পটিফাই অ্যাপ্লিকেশনটি নিঃশব্দ / নিঃশব্দ করার জন্য একটি আদেশ পেতে পারি?
সম্পাদনা করুন:
কাজ আশানুরূপ নিচে স্ক্রিপ্ট দুজনেই পারেন কারো একটি টগল যা পরীক্ষা হবে যোগ muted: yes
বা muted: no
এবং তারপর নিঃশব্দ অথবা সশব্দ তদনুসারে?
সম্পাদনা: টগল যোগ করতে আমি গ্লেন জ্যাকম্যানের স্ক্রিপ্টটি সংশোধন করতে সক্ষম হয়েছি:
#!/bin/bash
main() {
local action=toggle
while getopts :mu option; do
case "$option" in
m) action=mute ;;
u) action=unmute ;;
?) usage 1 "invalid option: -$OPTARG" ;;
esac
done
shift $((OPTIND - 1))
local pid=$(pidof "$1")
if [[ -z "$pid" ]]; then
echo "error: no running processes for: $1" >&2
elif [[ "$1" ]]; then
$action "$1"
else
usage 1 "specify an application name"
fi
}
usage() {
[[ "$2" ]] && echo "error: $2"
echo "Usage: $0 [-m | -u] appname"
echo "Default: toggle mute"
echo "Arguments:"
echo "-m = mute application"
echo "-u = unmute application"
exit $1
}
toggle() {
local status=$(get_status "$1")
if [[ "$status" == "yes" ]]; then
unmute "$1"
elif [[ "$status" == "no" ]]; then
mute "$1"
fi
}
mute() { adjust_muteness "$1" 1; }
unmute() { adjust_muteness "$1" 0; }
adjust_muteness() {
local index=$(get_index "$1")
local status=$(get_status "$1")
[[ "$index" ]] && pacmd set-sink-input-mute "$index" $2 >/dev/null
}
get_index() {
local pid=$(pidof "$1")
pacmd list-sink-inputs |
awk -v pid=$pid '
$1 == "index:" {idx = $2}
$1 == "application.process.id" && $3 == "\"" pid "\"" {print idx; exit}
'
}
get_status() {
local pid=$(pidof "$1")
pacmd list-sink-inputs |
awk -v pid=$pid '
$1 == "muted:" {idx = $2}
$1 == "application.process.id" && $3 == "\"" pid "\"" {print idx; exit}
'
}
main "$@"
pactl list sink-inputs
করবেন না ? তারপরে এটি নেটওয়ার্কে কাজ করবে।