You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu自定义1%音量调节快捷键后,如何调出音量等级提示框?

解决Ubuntu自定义音量快捷键无音量提示框的问题

我明白你的痛点——自定义了1%步进的音量快捷键,但没了系统自带的音量提示确实很不方便。其实原因很简单:默认的音量按键是调用系统桌面环境的通知组件来显示提示,而你直接用amixer命令的话,它本身不会触发这个提示框,得手动把通知逻辑加进去。

下面给你两种实用的解决方案,选适合你的就行:

方案一:结合amixernotify-send显示自定义通知

这个方法是在执行音量调节命令后,用Ubuntu自带的notify-send工具弹出包含当前音量的提示框,还能搭配对应音量级别的图标,直观又好用。

1. 创建音量调节脚本

先把调节逻辑和通知逻辑打包成可执行脚本:

  • 打开终端,创建增加音量的脚本:
    nano ~/.local/bin/volume-up.sh
    
  • 粘贴以下内容:
    #!/bin/bash
    # 增加1%音量,屏蔽多余输出
    amixer -D pulse sset Master 1%+ > /dev/null
    # 提取当前音量百分比
    VOLUME=$(amixer -D pulse get Master | grep -oP '\d+%' | head -n1)
    # 弹出带图标的通知,停留1秒
    notify-send -i audio-volume-high "音量调节" "当前音量: $VOLUME" -t 1000
    
  • 同理创建减少音量的脚本volume-down.sh
    nano ~/.local/bin/volume-down.sh
    
    内容替换为:
    #!/bin/bash
    # 减少1%音量,屏蔽多余输出
    amixer -D pulse sset Master 1%- > /dev/null
    # 提取当前音量百分比
    VOLUME=$(amixer -D pulse get Master | grep -oP '\d+%' | head -n1)
    # 根据音量匹配对应图标
    VOLUME_NUM=${VOLUME%?}
    if [ $VOLUME_NUM -eq 0 ]; then
      ICON="audio-volume-muted"
    elif [ $VOLUME_NUM -lt 30 ]; then
      ICON="audio-volume-low"
    elif [ $VOLUME_NUM -lt 70 ]; then
      ICON="audio-volume-medium"
    else
      ICON="audio-volume-high"
    fi
    # 弹出通知
    notify-send -i $ICON "音量调节" "当前音量: $VOLUME" -t 1000
    
  • 给两个脚本添加执行权限:
    chmod +x ~/.local/bin/volume-up.sh ~/.local/bin/volume-down.sh
    

2. 重新设置自定义快捷键

打开系统设置 → 键盘 → 快捷键 → 自定义快捷键,把原来的amixer命令替换成脚本路径:

  • 增加音量:~/.local/bin/volume-up.sh
  • 减少音量:~/.local/bin/volume-down.sh

这样每次按快捷键,不仅会精准调节1%音量,还会弹出带图标的提示框,停留1秒后自动消失。

方案二:用pactl调用原生OSD提示(贴近系统默认体验)

如果你想要和系统默认音量提示完全一致的样式,可以用pactl调节音量,同时调用桌面环境的原生屏幕显示(OSD)组件。

1. 自定义增加音量的命令

直接把快捷键的命令改成:

pactl set-sink-volume @DEFAULT_SINK@ +1% && dbus-send --print-reply --dest=org.gnome.Shell /org/gnome/Shell org.gnome.Shell.ShowOSD string:'{"icon": "audio-volume-high", "level": '$(( $(pactl get-sink-volume @DEFAULT_SINK@ | grep -oP '\d+%' | head -n1 | sed 's/%//') ))'}'

2. 自定义减少音量的命令

减音量的命令替换为:

pactl set-sink-volume @DEFAULT_SINK@ -1% && dbus-send --print-reply --dest=org.gnome.Shell /org/gnome/Shell org.gnome.Shell.ShowOSD string:'{"icon": "audio-volume-low", "level": '$(( $(pactl get-sink-volume @DEFAULT_SINK@ | grep -oP '\d+%' | head -n1 | sed 's/%//') ))'}'

这个方法会调出和系统默认完全一样的OSD提示,样式、动画都和原生按键一致,适合追求统一体验的用户。

额外说明

  • 如果你用的是KDE桌面环境,方案一的notify-send依然有效;方案二则需要换成KDE对应的命令,比如用qdbus org.kde.plasmashell /org/kde/osdService org.kde.osdService.showVolume来调用原生OSD。
  • 脚本里的-t 1000是通知停留时间(单位:毫秒),可以根据喜好调整,比如改成2000就是停留2秒。

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

火山引擎 最新活动