media scwrypts v5 refactor
This commit is contained in:
79
scwrypts/media/audio/play-sfx.module.zsh
Normal file
79
scwrypts/media/audio/play-sfx.module.zsh
Normal file
@ -0,0 +1,79 @@
|
||||
#####################################################################
|
||||
|
||||
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
|
||||
}
|
Reference in New Issue
Block a user