耳机断开时执行什么代码?

int*_*_ua 10 headphones monitoring soundcard

我想在耳机断开连接时执行脚本,但是当已经有一些代码在更改时执行时,我讨厌不断轮询状态的想法。

use*_*.dz 12

在大多数系统中,如果不是全部,ACPI 可以处理此事件。要测试:

  1. acpi_listen
  2. 拔下并重新插入耳机,示例输出:(麦克风/耳朵在我的笔记本电脑上共享同一个插孔)

    jack/headphone HEADPHONE unplug
    jack/microphone MICROPHONE unplug
    jack/headphone HEADPHONE plug
    jack/microphone MICROPHONE plug
    
    Run Code Online (Sandbox Code Playgroud)
  3. your-script.sh/etc/acpi/

  4. 为您的脚本添加一个事件触发器文件 /etc/acpi/events/

    event=jack/headphone HEADPHONE unplug
    action=/etc/acpi/your-script.sh
    
    Run Code Online (Sandbox Code Playgroud)

    检查那里的其他文件以学习。

  5. 您可能需要重新启动acpid服务以重新加载更改的规则/etc/acpi/events/

    sudo service acpid restart
    
    Run Code Online (Sandbox Code Playgroud)

参考: man acpid

  • @int_ua 您需要使用以“~/.config/autostart/dbus.desktop”开头的脚本将“DBUS_SESSION_BUS_ADDRESS”环境变量写入主目录中的文件中。然后你可以从`/etc/acpi/your-script.sh`运行`su YOURUSER -c "DBUS_SESSION_BUS_ADDRESS=$(cat ~/.dbus_address) amixer ......."` (2认同)