তবুও অন্য সিঙ্ক সুইচার স্ক্রিপ্ট
উবুন্টু 16.04 এ পরীক্ষা করা হয়েছে
তবে এটি আপনাকে যে অ্যাপ্লিকেশনটি চায় তার কেবল অডিওটি স্যুইচ করতে দেয়।
ব্যবহার: আপনি যে অ্যাপ্লিকেশনটির সিংক পরিবর্তন করতে চান এবং এই স্ক্রিপ্টটি চালাতে চান তাতে ফোকাস দিন। এটাই!!!
এই স্ক্রিপ্টটি এমন অ্যাপ্লিকেশনটি সনাক্ত করে যা ফোকাসে রয়েছে, এটি থেকে সমস্ত অডিও খেলছে এবং তাদের পরবর্তী উপলব্ধ সিঙ্কে স্যুইচ করে।
https://gist.github.com/madacol/1a0d8569166886d2d98f073f7f5c5fe3
স্ক্রিপ্ট ব্যাখ্যা
ফোকাসে আমাদের অ্যাপ্লিকেশনটির পিআইডি সন্ধান করতে হবে
তবে প্রথমে আমাদের জিড দরকার
xprop -root _NET_ACTIVE_WINDOW
তারপরে $xid
অ্যাপ্লিকেশনটির পিড পেতে এটি এখানে .োকান
xprop -id $xid _NET_WM_PID
এখন আমাদের সেই পিআইডি সম্পর্কিত সিঙ্ক ইনপুটগুলি খুঁজে পাওয়া দরকার
প্রথমে কমান্ডের আউটপুটকে লাইনরেইজ করা যাক pacmd list-sink-inputs
প্রতি লাইনে একটি সিনকি-ইনপুট তালিকা তৈরি করুন, তার সূচকটি দেখান, একই ডোকে সিঙ্ক এবং পিড করুন
pacmd list-sink-inputs | grep -E 'index:|sink:|process.id' | tr '\n' ' ' | tr -d '"' | sed -e 's/index:/\n/g' | tail -n +2
আসুন এটি পর্যায়ক্রমে বিশ্লেষণ করুন:
grep -E 'index:|sink:|process.id
শুধুমাত্র লাইন যেগুলিতে রাখা index:
, sink:
বাprocess.id
tr '\n' ' '
সমস্ত লাইনে যোগদান
tr -d '"'
সমস্ত "
অক্ষর মুছে ফেলা । উদ্ধৃতি ছাড়াই পিড পেতে প্রয়োজনীয়
sed -e 's/index:/\n/g'
index:
একটি নতুন লাইন চরিত্রের সাথে সমস্ত উপস্থিতি প্রতিস্থাপন করে\n
tail -n +2
প্রথম লাইনটি সরিয়ে দেয় কারণ এটি খালি রয়েছে
এবং ফলাফলটি এরকম কিছু:
180 sink: 0 <alsa_output.pci-0000_00_00.1.hdmi-stereo-extra1> application.process.id = 3521
181 sink: 1 <alsa_output.pci-0000_00_01.0.analog-stereo> application.process.id = 2733
182 sink: 0 <alsa_output.pci-0000_00_00.1.hdmi-stereo-extra1> application.process.id = 13752
এর অর্থ কী তা বোঝার জন্য একটি লাইন বিশ্লেষণ করা যাক:
# 182 sink: 0 <alsa_output.pci-0000_00_00.1.hdmi-stereo-extra1> application.process.id = 13752
182
হ'ল সিঙ্ক-ইনপুট সূচকটি 0
হ'ল সিঙ্ক সূচক এবং 13752
শেষে, এটি সম্পর্কিত অ্যাপ্লিকেশনটির পিড
তারপরে আমরা প্রতিটি লাইনের মাধ্যমে পুনরাবৃত্তি করি
... | while IFS= read -r line || [ -n "$line" ]; do
sink_input_pid=$(echo $line | awk '{print $NF}')
এবং অবশেষে কেবলমাত্র সিন্ক-ইনপুটের পিড ফিল্টার করুন যা ফোকাসযুক্ত অ্যাপের পিডের সাথে মেলে
if [ $sink_input_pid = $app_pid ]; then
তথ্য আহরণ করা হচ্ছে
সঙ্গে awk
আমরা উপাদানের পেতে পারেন আমরা প্রয়োজন
sink_input_index=$(echo $sink_input | awk '{print $1}')
current_sink_index=$(echo $sink_input | awk '{print $3}')
ডুবির সংখ্যা পান, কখন ডুবির ঘূর্ণন 0 থেকে পুনরায় আরম্ভ করা উচিত তা জানতে।
sink_list_size=${#sink_list_array[@]}
পরবর্তী সিঙ্কটি সন্ধান করে আমাদের ডুবে যাওয়া তালিকার মধ্য দিয়ে পুনরাবৃত্তি করতে হবে, কারটি কারেন্ট_সিন্ক_ইন্ডেক্সের সাথে মেলে এবং পরবর্তী সিঙ্কের সূচিটি জানতে হবে।
i=0
for sink in "${sink_list_array[@]}"; do
i=$((($i+1)%sink_list_size)) # i++ mod(#sinks)
if [ $sink = $current_sink_index ]; then
next_sink_index=${sink_list_array[i]}
break
fi
done
এবং অবশেষে, আমরা পরবর্তী_সিংক_ইন্ডেক্সে খেলতে সিঙ্ক-ইনপুটটি সরিয়ে নিয়েছি
pacmd move-sink-input $sink_input_index $next_sink_index
উবুন্টু 16.04 এ নোট:
শর্টকাট কীটি কনফিগার করার সময়, আমি এটি উবুন্টুর শর্টকাট পরিচালক দিয়ে কাজ করতে পারি না make সুতরাং আমি compizconfig- সেটিংস-পরিচালক ইনস্টল করতে হবে
sudo apt-get install compizconfig-settings-manager