Ubuntu DWM 使用蜂鸣声作为电池警告

Ubuntu DWM 使用蜂鸣声作为电池警告

编辑——对于那些感兴趣的人,我已经解决了这个问题,并在下面的第二篇文章中澄清了我的脚本中的一些代码

我在 .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

相关内容