Ubuntuがsound
を切断するたびにheadphones
をミュートしていると、周囲は毎回異なりますが(例:昼/夜)、同じ出力ボリュームなので、私の人生は楽になります。
そのためのスクリプトを理解することはできますが、Ubuntu event listener
との相互作用がないわけではありません。今のところそれについて何も知りません。
私はどちらかの主題の解決策またはヒントを感謝しますが、package
のインストールではなく、非常に単純なことで、これらの束はupdate
を長すぎます。
実際、接続時にUSBマウス設定を自動調整する(地獄がリセットされるのですか?)、接続時にGSMモデムを自動的に有効にするなど、reaction to events
の知識が足りない多くのソリューションを作成します。
まず、ターミナルでalsamixer
プログラムを開きます(Ctrl + Alt + T)。
自動ミュートが有効になっているかどうかを確認します。左右のキーを使用して上下に移動し、上下に値を切り替えることができます。 Escで終了します。
これで、ヘッドフォンなしでサウンドをミュートし、ヘッドフォンを接続し、再度取り外した場合、スピーカーからの音はミュートのままになります。少なくとも私のマシンでは、自動ミュートが有効になっていると、スピーカーをミュートのままにできますが、ヘッドフォンを接続するとサウンドを出力できます。
Sudo apt install notify-osd
をインストールする必要があります<my_name>.sh
ディレクトリにテキストファイル/home/<user_name>/
を作成します。そして、ファイルchmod +x /home/<user_name>/<my_name>.sh
に実行許可を追加します以下のテキストを<my_name>.sh
ファイルに貼り付けます
#!/bin/bash
acpi_listen | while IFS= read -r line;
do
if [ "$line" = "jack/headphone HEADPHONE plug" ]
then
amixer -D Pulse set Master mute
notify-send "headphones connected. Sound is muted"
Elif [ "$line" = "jack/headphone HEADPHONE unplug" ]
then
amixer -D Pulse set Master mute
notify-send "headphones disconnected. Sound is muted"
fi
done
Startup Configurations Linuxシステムのメニュー(ubuntu、kubuntu、xubuntuなど)に移動します。 /home/<user_name>/<my_name>.sh
ファイルをautostartwithに設定します。デスクトップ環境(xfce、KDE、Gnomeなど)。
警告! KDEを使用する場合DON NOT"Start script before KDE"
または"Application"
のファイルをbash /home/<user_name>/<my_name>.sh
で追加します。
スクリプトとして(シナリオ)および"Start WITH KDE"を使用します。
IFすでに行っている場合は、ctrl + alt + F2
を押して、ユーザーとしてログインし、rm /home/<user_name>/<my_name>.sh
を削除します。削除する権限がない場合は、mount -o remount, rw /
を削除する前にディスクを再マウントしてください。
一部のLinuxベースのシステムcache自動起動スクリプト。つまり、/home/<user_name>/<my_name>.sh
およびlogout / login
またはrestart
システムを編集しても、スクリプトは同じままです。
KDEでは、キャッシュされたスクリプトシンボリックリンクは/home/<user_name>/.config/autostart-scripts/<my_name>.sh
にあります。 <my_name>.sh
ファイル、logout / login
システムを手動で削除し、スクリプトをautostart
に再度追加し、logout / login
を再度追加します。
私にはKDEバグのようです。他のDE(xfce、Gnomeなど)について知らない
上記のコードでは、テキストは"jack/headphone HEADPHONE plug"
として表示されます。ヘッドフォンのイベント名です。
イベントを表示するには:
1。コンソールに入力acpi_listen
2。 Plugおよびnplugヘッドフォン(または別のデバイス)
3。 consoleにイベント名が表示されます。下のテキストのようなものになります
user@user-PC:~$ acpi_listen
jack/headphone HEADPHONE unplug
jack/microphone MICROPHONE unplug
jack/headphone HEADPHONE plug
jack/microphone MICROPHONE plug
上記のスクリプトのイベント名異なるの場合、それらをconsole出力からのイベント名に置き換えます。
ACPIイベントを表示してテストするには、evtestSudo apt install evtest
を使用できます
user@user-PC:~$ Sudo evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0: Lid Switch
/dev/input/event1: Power Button
/dev/input/event2: Power Button
/dev/input/event3: AT Translated Set 2 keyboard
/dev/input/event4: Video Bus
/dev/input/event5: SynPS/2 Synaptics TouchPad
/dev/input/event6: COMPANY USB Device
/dev/input/event7: COMPANY USB Device
/dev/input/event8: COMPANY USB Device
/dev/input/event9: HP Wireless hotkeys
/dev/input/event10: HDA Intel HDMI HDMI/DP,pcm=3
/dev/input/event11: HDA Intel HDMI HDMI/DP,pcm=7
/dev/input/event12: HDA Intel HDMI HDMI/DP,pcm=8
/dev/input/event13: HDA Intel HDMI HDMI/DP,pcm=9
/dev/input/event14: HDA Intel HDMI HDMI/DP,pcm=10
/dev/input/event15: HDA Intel PCH Mic
/dev/input/event16: HDA Intel PCH Headphone
/dev/input/event17: HP WMI hotkeys
/dev/input/event18: HP Webcam: HP Webcam
Select the device event number [0-18]: 16
Input driver version is 1.0.1
Input device ID: bus 0x0 vendor 0x0 product 0x0 version 0x0
Input device name: "HDA Intel PCH Headphone"
Supported events:
Event type 0 (EV_SYN)
Event type 5 (EV_SW)
Event code 2 (SW_HEADPHONE_INSERT) state 1
Properties:
Testing ... (interrupt to exit)
Event: time 1522588668.319567, type 5 (EV_SW), code 2 (SW_HEADPHONE_INSERT), value 0
Event: time 1522588668.319567, -------------- SYN_REPORT ------------
Event: time 1522588670.035275, type 5 (EV_SW), code 2 (SW_HEADPHONE_INSERT), value 1
Event: time 1522588670.035275, -------------- SYN_REPORT ------------
何らかの理由で/etc/acpi/events/jack
が機能しません。おそらくCONFIG_SND_HDA_INPUT_JACKオプションが間違っています。その使用をテストするには
Sudo grep CONFIG_SND_HDA_INPUT_JACK /boot/config-$(uname -r)
私の答えは this answerに基づいています。
ヘッドフォンのプラグ/アンプラグイベントのACPIリスナーを設定することで、これを自動化できます。
$ grep headphone /etc/acpi/handler.sh -A 11
jack/headphone)
case "$3" in
plug)
logger "Headphones plugged"
amixer sset 'Headphone' 30%
;;
unplug)
logger "Headphones unplugged"
amixer sset 'Speaker' 30%
;;
esac
;;
$ systemctl restart acpid
別の方法:/etc/acpi/handler.sh
を変更する代わりに、/etc/acpi/events/
に別の構成ファイルを作成し、これらのイベントを処理する独自のスクリプトを指定できます。デフォルトの構成をテンプレートとして使用します。
$ cat /etc/acpi/events/anything
# Pass all events to our one handler script
event=.*
action=/etc/acpi/handler.sh %e
詳細については、man acpid
をご覧ください。