ฉันใช้สคริปต์นี้เป็นวิธีแก้ปัญหา:
#!/bin/bash
CURRENT_STATE=`amixer get Master | egrep 'Playback.*?\[o' | egrep -o '\[o.+\]'`
if [[ $CURRENT_STATE == '[on]' ]]; then
amixer set Master mute
else
amixer set Master unmute
amixer set Front unmute
amixer set Headphone unmute
fi
ฉันทำสิ่งที่แตกต่างamixer scontents
ก่อนโทรออกamixer set Master mute
และหลังจากโทรแล้วและยกเลิกการปิดเสียงทุกอย่างโดยใช้ GUI เพื่อหาสิ่งที่จำเป็นในการยกเลิกการปิดเสียง
- ด้วยประเภทเสียง
amixer scontents > ~/before
(คุณจะได้รับไฟล์ที่มีสถานะของช่องเสียงทั้งหมด)
- จากนั้นสลับระดับเสียงด้วย
amixer set Master toggle
- สร้างไฟล์สถานะชาแนลที่สองด้วย
amixer scontents > ~/after
- สลับเสียงอีกครั้ง
amixer set Master toggle
ซึ่งควรจะปรับระดับเสียงกลับไปที่ระดับก่อนคำสั่งสลับแรก
- สร้างไฟล์ที่สามด้วย
amixer scontents > ~/afterafter
ตอนนี้คุณมีไฟล์สามไฟล์ที่บอกคุณว่าสถานะของช่องเสียงที่ใช้สำหรับเสียงปกตินั้นถูกปิดด้วยเสียงamixer set Master toggle
และไฟล์ใดที่ไม่ได้เปิดอีกครั้ง
ในการเปรียบเทียบไฟล์อย่างง่ายดายและดูความแตกต่าง (ช่องที่ปิดเสียงและไม่เปิดเสียงหลังจากนั้น) คุณสามารถใช้meld
จาก Software Center เริ่มต้นจากนั้นเปิดไฟล์ทั้งสามและบนแถบเลื่อนคุณจะเห็นว่ามีความแตกต่างระหว่างไฟล์ใดบ้าง ใช้ชื่อชาแนลที่พบเพื่อเพิ่มลงในสคริปต์ที่อธิบายไว้ข้างต้น