在 dwm 状态栏中显示信息的脚本(例如亮度/音量变化)

在 dwm 状态栏中显示信息的脚本(例如亮度/音量变化)

我有一个 dwm 状态栏,其中只有很少的信息(使用 bash 脚本):音量、电池、可用磁盘空间和时间。有些东西,例如音量和亮度,应该只在变化时出现(音量增大/减小,亮度增大/减小)。
我可以在终端中执行以下操作:

vol="$(amixer get Master | tail -n1 | sed -r 's/.*\[(.*)%\].*/\1/')"  
printf '%s\n' "Volume set to ${vol}" | dzen2 -p 3  

这使得 dzen 在条形中间显示实际音量(亮度也一样)。

我使用 XF86MonBrightnessDown XF86MonBrightnessUp (在 config.h 中定义)来改变亮度。
如何获取有关音量/亮度变化的信息?

感谢您的帮助!

答案1

如果我理解正确,您希望dzen2在更改亮度/音量时看到弹出窗口。您可以从脚本中执行此操作,并在按下相同的按键( 等)时触发XF86MonBrightnessUpXF86XK_AudioLowerVolume

你的 dwmconfig.h会有这条线

...
    { 0,        XF86XK_AudioRaiseVolume,    spawn,      SHCMD("volume_change.sh -i") },
    { 0,        XF86XK_AudioLowerVolume,    spawn,      SHCMD("volume_change.sh -d") },
...

SHCMD命令将运行给定的 shell 命令。你可以有一个volume_change.sh脚本

#!/bin/sh

case $1 in

# Increase volume
    -i)
        pactl set-sink-volume @DEFAULT_SINK@ +5%
        vol="$(amixer get Master | tail -n1 | sed -r 's/.*\[(.*)%\].*/\1/')"  
        printf '%s\n' "Volume set to ${vol}" | dzen2 -p 3  
        ;;

# Decrease volume.
    -d)
        pactl set-sink-volume @DEFAULT_SINK@ -5%
        vol="$(amixer get Master | tail -n1 | sed -r 's/.*\[(.*)%\].*/\1/')"  
        printf '%s\n' "Volume set to ${vol}" | dzen2 -p 3  
    ;;
esac

还有一个类似的亮度键脚本。

确保您volume_change.sh的文件中有PATH并且它是可执行的。

答案2

亮度:

xsetroot -name "

相关内容