![Ubuntu DWM 使用蜂鸣声作为电池警告](https://linux22.com/image/1091087/Ubuntu%20DWM%20%E4%BD%BF%E7%94%A8%E8%9C%82%E9%B8%A3%E5%A3%B0%E4%BD%9C%E4%B8%BA%E7%94%B5%E6%B1%A0%E8%AD%A6%E5%91%8A.png)
编辑——对于那些感兴趣的人,我已经解决了这个问题,并在下面的第二篇文章中澄清了我的脚本中的一些代码
我在 .xinitrc 中运行一个小脚本,轮询 acpi 以获取电池信息。如果低于某个水平,则发出蜂鸣声作为警告。
但是,除非我在调用它之前播放了其他音频,否则似乎不会听到哔声。这就是为什么我在启动 x 时调用 mpv 播放一段简短的 mp3 曲目。就好像我的声卡在启动时没有激活,直到我播放了一些音频。
我现在的问题是它在睡眠之后也会关闭,直到我播放音频。
下面是我的 .xinitrc 脚本。我使用 alsamixer 并运行 16.04 的最小安装,使用 DWM 作为窗口管理器。Beep 是从 apt 安装的。
我真的希望有一个解决方案,可以让我随时听到哔哔声 - 这可能意味着我的声卡在从休眠状态唤醒后保持活动状态。感谢您提供的任何帮助。
马修
.xinitrc
xbacklight = 50 &
setxkbmap -option 'caps:ctrl_modifier'
xcape -e 'Caps_Lock=Escape'
setxkbmap -option 'caps:ctrl_modifier'
xcape -e 'Caps_Lock=Escape;Control_L=Escape;Control_R=Escape'
amixer -q sset Master 75% &
amixer -q sset Beep 35% &
slstatus -d &
nm-applet &
./suckless/clipmenu/clipmenud &
modprobe pcspkr &
while true; do
./suckless/batt_warn
sleep 15s
done &
mpv ./suckless/start.mp3 &
exec dwm
batt_warn
#!/bin/bash
BATT=$( acpi -b | sed 's/.*[charging|unknown], \([0-9]*\)%.*/\1/gi' )
STATUS=$( acpi -b | sed 's/.*: \([a-zA-Z]*\),.*/\1/gi' )
if ([ $BATT -le 5 ] && [ $STATUS == 'Discharging' ]); then
beep && sleep 0.05
beep && sleep 0.05
beep && sleep 0.05
fi
答案1
大家好,我想我应该发布我的解决方案,因为这是许多人在使用 dwm 等 WM 时可能面临的问题。
我找到了一个解决方案,可以在启动时在后台播放一段简短的 mp3,也可以从睡眠状态恢复。这似乎很有效,我
还利用恢复脚本重新映射了我的自定义键,因为这些键在睡眠后会丢失。
如果以后有人需要帮助,请随时给我发私信。-----------------------------------------------------------------
.xinitrc
需要 Modprobe 来启用在 ubuntu 上列入黑名单的系统蜂鸣。
注意:
init 是我的可执行初始化脚本,在 startx 时从 .xinitrc 调用,并从 99Wake.sh 恢复
注意:
batt_warn 是我用来检查电池的可执行脚本
slstatus -d &
nm-applet &
./suckless/clipmenu/clipmenud &
./suckless/init &
modprobe pcspkr &
while true; do
./suckless/batt_warn
sleep 15s
done &
exec dwm
在里面
如果按下则将 caps 设置为 esc,如果用作 leader 则设置为 ctrl
设置合理的背光和音量
使用 mpv 播放短 mp3 片段 start.mp3
#!/bin/bash
setxkbmap -option 'caps:ctrl_modifier'
xcape -e 'Caps_Lock=Escape'
setxkbmap -option 'caps:ctrl_modifier'
xcape -e 'Caps_Lock=Escape;Control_L=Escape;Control_R=Escape'
xbacklight = 50 &
amixer -q sset Master 75% &
amixer -q sset Beep 35% &
cd ~ && mpv suckless/start.mp3 &
batt_warn
使用 acpi 轮询电池,如果电量低于 5% 且正在放电,则发出蜂鸣声
#!/bin/bash
BATT=$( acpi -b | sed 's/.*[charging|unknown], \([0-9]*\)%.*/\1/gi' )
STATUS=$( acpi -b | sed 's/.*: \([a-zA-Z]*\),.*/\1/gi' )
if ([ $BATT -le 5 ] && [ $STATUS == 'Discharging' ]); then
beep && sleep 0.05
beep && sleep 0.05
beep && sleep 0.05
fi
99醒醒
该文件已通过 chmod +x 变为可执行文件
,并移至目录 /usr/lib/pm-utils/sleep.d\
此目录中的脚本在恢复时运行。这里我再次调用 init。
注意:
由于我将脚本存储在本地用户目录中,因此我必须添加 sudo 行,但这样做只是为了让 .xinitrc 和 99wake.sh 可以共享相同的 init 文件,而不是重复。
#!/bin/bash
case "$1" in
thaw|resume)
sudo -u matthew env DISPLAY=:0 zenity --info --text "do stuff on resume"
./home/matthew/suckless/init
;;
esac