PulseAudio/PipeWire terminal beeper that notifies you when your commands are done running.
cmdbeeper is a tiny bash script that plays an audio file on loop until Enter is pressed or SIGINT/SIGTERM is received. Chaining it with ; after a shell command
sets an alarm that will notify you when a long foreground process returns:
make; cmdbeeperThe alarm will also work if it's run in the background:
( long_process; cmdbeeper -q ) &When the alarm goes off, simply foreground the process and press Enter or send SIGINT as usual.
cmdbeeper may also be used as a makeshift timer by chaining it after sleep:
sleep 15; cmdbeepercmdbeeper can play custom sound files (uncompressed and .oga files for most desktop distros), take a timeout parameter in seconds, and pause n seconds each
time the audio file loops. For instance, to play freedesktop's bell.oga tune with a 10-second timeout and a 1-second silent interval between each loop, simply
run
cmdbeeper -s /usr/share/sounds/freedesktop/stereo/bell.oga -t 10 -i 1cmdbeeper can also be configured via environment variables, so default parameters can be defined by exporting them from your bashrc. In any case,
explicit flag arguments will always override environment settings.
For more information on flag usage and environment variable configuration, see the man page.
A PulseAudio or PipeWire audio server must be enabled. If PipeWire is the target backend, make sure the pipewire-pulse compatibility layer is present.
The libpulse and sound-theme-freedesktop packages are also required to play audio from the terminal and to provide a default tune respectively.
The cmdbeeper package is available through the AUR. You can install it with an AUR helper such as yay:
yay -S cmdbeeperOnce the installation is complete, you'll be able to run the cmdbeeper command and access the manual by running man cmdbeeper.
cmdbeeper is a simple monolithic bash script, so appending alias cmdbeeper="bash /global/path/to/cmdbeeper" to your bashrc should be enough.
If you wish to install it globally instead, install it into your global /usr/bin directory as cmdbeeper with 755 permissions, although this method
is not recommended. Try the AUR package if you're running Arch Linux or an Arch-related distro.
Copyright (C) 2026 Diego Fernández
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.
Diego Fernández - dfimium499+cmdbeeper@proton.me