dotwryn/scwrypts/media/audio/play-sfx.module.zsh
2025-02-21 15:57:49 -07:00

80 lines
2.2 KiB
Bash

#####################################################################
use notify
use scwrypts/get-realpath
DEPENDENCIES+=(canberra-gtk-play)
REQUIRED_ENV+=(DESKTOP__SFX_PATH)
#####################################################################
${scwryptsmodule}() {
local SCWRYPTS_NOTIFICATION_ENGINES=(echo notify.desktop)
eval "$(utils.parse.autosetup)"
##########################################
echo.status 'starting playback'
canberra-gtk-play -f "${SFX_FILE}" \
&& echo.success "finished output of '${SFX_FILE}'" \
|| notify.error "something went wrong playing file '${SFX_FILE}'" \
|| return 1
}
#####################################################################
${scwryptsmodule}.parse() {
[[ ${POSITIONAL_ARGS} -eq 0 ]] || return 0
((POSITIONAL_ARGS+=1))
case $1 in
( backlight ) SFX_FILE="${DESKTOP__SFX_PATH}/yaru-audio-volume-change.oga" ;;
( gamedock ) SFX_FILE="${DESKTOP__SFX_PATH}/gamedock.oga" ;;
( homedock ) SFX_FILE="${DESKTOP__SFX_PATH}/homedock.oga" ;;
( login ) SFX_FILE="${DESKTOP__SFX_PATH}/yaru-desktop-login.oga" ;;
( logout ) SFX_FILE="${DESKTOP__SFX_PATH}/smooth-desktop-login.oga" ;;
( mute ) SFX_FILE="${DESKTOP__SFX_PATH}/smooth-dialog-warning.oga" ;;
( notify ) SFX_FILE="${DESKTOP__SFX_PATH}/yaru-complete.oga" ;;
( undock ) SFX_FILE="${DESKTOP__SFX_PATH}/yaru-desktop-login.oga" ;;
( volume ) SFX_FILE="${DESKTOP__SFX_PATH}/yaru-message.oga" ;;
( * )
SFX_FILE="$1"
;;
esac
return 1
}
${scwryptsmodule}.parse.locals() {
local SFX_FILE
}
${scwryptsmodule}.parse.usage() {
USAGE__description='
play the indicated sound effect by mapped name or filename
mapped names :
backlight notify
login logout
mute volume
gamedock homedock undock
'
USAGE__args='
\$1 mapped name or filename
'
}
${scwryptsmodule}.parse.validate() {
[ -f "$(scwrypts.get-realpath "${SFX_FILE}")" ] \
&& SFX_FILE="$(scwrypts.get-realpath "${SFX_FILE}")" \
|| SFX_FILE="${DESKTOP__SFX_PATH}/${SFX_FILE}" \
;
[ -f "${SFX_FILE}" ] \
|| notify.error "unable to locate sfx file '$1'" \
|| return 1
}