You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PipeWire通过媒体控制按钮调节特定应用音量?

用PipeWire实现媒体控制按钮调节特定应用音量

方法一:wpctl+桌面快捷键(通用方案)

这是最直接的方式,利用PipeWire自带的wpctl工具结合桌面环境的快捷键设置:

  1. 定位目标应用的音频节点
    运行以下命令查看所有音频节点:

    wpctl status
    

    在输出的Audio Sinks或Audio Sources区域找到你要控制的应用名称(比如Firefox Web Browser)。

  2. 设置自定义快捷键
    根据你的桌面环境操作:

    • GNOME:打开「设置」→「键盘」→「快捷键」→「自定义快捷键」,添加两个新快捷键:
      • 名称:Increase [应用名] Volume,命令:wpctl set-volume "你的应用名称" 5%+,绑定按键XF86AudioRaiseVolume
      • 名称:Decrease [应用名] Volume,命令:wpctl set-volume "你的应用名称" 5%-,绑定按键XF86AudioLowerVolume
    • KDE:打开「系统设置」→「快捷方式」→「自定义快捷键」,创建对应的全局快捷键,命令同上。
    • Xfce:打开「设置管理器」→「键盘」→「应用程序快捷键」,添加上述命令和对应媒体键。

    注意:如果应用名称包含空格,必须用双引号包裹。

方法二:自动控制当前活跃播放应用的音量

如果想让媒体键自动调节当前正在播放音频的应用音量,可以结合playerctl(需先安装)和wpctl:

  1. 安装playerctl
    根据发行版包管理器安装:

    # Debian/Ubuntu
    sudo apt install playerctl
    # Fedora
    sudo dnf install playerctl
    # Arch Linux
    sudo pacman -S playerctl
    
  2. 设置快捷键命令
    将媒体键的命令替换为:

    • 音量增加:wpctl set-volume "$(playerctl metadata --format '{{playerName}}')" 5%+
    • 音量减少:wpctl set-volume "$(playerctl metadata --format '{{playerName}}')" 5%-

    这个命令会先通过playerctl获取当前活跃播放的应用名称,再用wpctl调整其音量。

方法三:WirePlumber自定义脚本(进阶)

如果需要更定制化的行为,可以通过WirePlumber的Lua脚本实现:

  1. 创建WirePlumber配置目录

    mkdir -p ~/.config/wireplumber/main.lua.d/
    
  2. 编写自定义脚本
    创建50-custom-media-keys.lua文件,内容如下(以控制Firefox为例):

    local core = require("wireplumber.core")
    local api = require("wireplumber.api")
    
    local function adjust_app_volume(app_name, delta)
      core.iterate_objects(function(obj)
        if obj["application.name"] == app_name then
          local vol = obj:get_param("Volume")
          if vol then
            local new_vol = math.max(0.0, math.min(1.0, vol + delta))
            obj:set_param("Volume", new_vol)
          end
        end
      end, "Audio/Sink")
    end
    
    -- 绑定音量增加键
    api.add_key_binding("XF86AudioRaiseVolume", function()
      adjust_app_volume("firefox", 0.05)
    end)
    
    -- 绑定音量减少键
    api.add_key_binding("XF86AudioLowerVolume", function()
      adjust_app_volume("firefox", -0.05)
    end)
    
  3. 重启WirePlumber生效

    systemctl --user restart wireplumber
    

内容的提问来源于stack exchange,提问作者Matblanket

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 08:01:24