এই প্রশ্নটিতে হোঁচট খায় এমন লোকের সুবিধার্থে - ১৩.০৪ সালে সালেমের সমাধান আমার পক্ষে প্রায় কাজ করেছিল, আমি ওয়েবের চারপাশের বিট এবং টুকরোগুলি সংগ্রহ করেছি, আমার মনে হয় আমার জন্য ডিল ব্রেকার পরিবেশের পরিবর্তনশীল PULSE_SERVER এর অভাব ছিল
এখানে আমার সম্পূর্ণ সমাধানটি দেওয়া হয়েছে, যা মূলত কয়েকটি হারিয়ে যাওয়া টুকরোগুলি দিয়ে সালমের সমাধান পুনরাবৃত্তি করছে। আমি এটিকে শেল স্ক্রিপ্ট হিসাবে (পাইথনের প্রতি আমার ভালবাসা সত্ত্বেও) হিসাবে আবারও পাঠিয়েছি কারণ আমার প্রথমে ভয় ছিল যে আমার পাইথন লিপিটি আমদানির পথে ইস্যুতে চলেছে:
(সালেমের উত্তরের মতো) /etc/udev/rules.d/hdmi_sound.rules
সামগ্রীটি দিয়ে রুট হিসাবে একটি ফাইল তৈরি করুন :
SUBSYSTEM=="drm", ACTION=="change", RUN+="/usr/local/bin/hdmi_sound_toggle"
/usr/local/bin/hdmi_sound_toggle
সামগ্রীর সাহায্যে রুট হিসাবে একটি ফাইল তৈরি করুন :
#!/bin/sh
USER_NAME=`who | grep "(:0)" | cut -f 1 -d ' '`
USER_ID=`id -u $USER_NAME`
HDMI_STATUS=`cat /sys/class/drm/card0/*HDMI*/status`
export PULSE_SERVER="unix:/run/user/"$USER_ID"/pulse/native"
if [ $HDMI_STATUS = "connected" ]
then
sudo -u $USER_NAME pactl --server $PULSE_SERVER set-card-profile 0 output:hdmi-stereo+input:analog-stereo
else
sudo -u $USER_NAME pactl --server $PULSE_SERVER set-card-profile 0 output:analog-stereo+input:analog-stereo
fi
তারপরে এটি কার্যকর করতে সক্ষম করুন make chmod 0755 /usr/local/bin/hdmi_sound_toggle
আমি এই স্ক্রিপ্টটিকে যতটা সম্ভব জেনেরিক করার চেষ্টা করেছি, তবে আপনাকে এখনও কিছু লাইন যেমন HDMI_STATUS ফাইল পাথ বা ব্যবহৃত প্রোফাইলগুলি পরিবর্তন করতে হবে। আপনি pactl list cards
প্রোফাইলের অধীনে এবং অনুসন্ধান করে প্রোফাইলগুলির একটি তালিকা দেখতে পাচ্ছেন ।
নোট করুন যে স্ক্রিপ্টটি আমার জন্য ব্যর্থ হয়েছিল যখন আমি যখন PULSE_SERVER সেট করার সময় "এক্সপোর্ট" শব্দটি মুছে ফেলতাম, আমার মনে হয় প্যাকটেল এনভেরি ভেরিয়েবলের সন্ধান করছে
আপনার উদেব নিয়মগুলি পুনরায় লোড করতে ভুলবেন না: sudo udevadm control --reload-rules
আপডেট করুন এই স্ক্রিপ্টের 14.04 জন্য আপডেট করা হয়। এর আগে, আপনি সর্বত্র USER_ID এর পরিবর্তে USER_NAME ব্যবহার করবেন