Add xmusic tracker/audio player, xfiles media actions, ringtone volume & vibration fix

This commit is contained in:
Luxferre
2026-10-25 17:31:54 +02:00
parent ba2307d44c
commit 30c3e817dc
70 changed files with 2296 additions and 86 deletions
@@ -50,6 +50,7 @@ write_line_app baobab "$icon_pie Baobab" "baobab"
write_line_app bluetuith "$icon_bth Bluetuith" "sxmo_terminal.sh bluetuith"
write_line_app calcurse "$icon_clk Calcurse" "sxmo_terminal.sh calcurse"
write_line_app xcamera "$icon_cam Camera" "xcamera"
write_line_app xmusic "$icon_mus Music" "xmusic"
write_line_app celluloid "$icon_mvi Celluloid" "celluloid"
write_line_app chatty "$icon_msg Chatty" "chatty"
([ -z "$WAYLAND_DISPLAY" ] && command -v clipmenu >/dev/null) && \
@@ -27,8 +27,8 @@ fi
# pm8xxx-vib shifts FF_RUMBLE strong_magnitude right by 8 bits (valid 256..65535)
case "${SXMO_VIBRATE_STRENGTH:-}" in
1) SXMO_VIBRATE_STRENGTH=20000 ;;
2|"") SXMO_VIBRATE_STRENGTH=40000 ;;
1) SXMO_VIBRATE_STRENGTH=8000 ;;
2|"") SXMO_VIBRATE_STRENGTH=32000 ;;
3) SXMO_VIBRATE_STRENGTH=65535 ;;
esac
@@ -54,15 +54,41 @@ if ! sxmo_modemcall.sh list_active_calls \
exit
fi
case "${SXMO_RINGVOL:-100}" in
''|*[!0-9]*) SXMO_RINGVOL=100 ;;
esac
[ "$SXMO_RINGVOL" -gt 100 ] && SXMO_RINGVOL=100
SAVED_RX3="$(amixer -c 0 cget "name='RX3 Digital Volume'" 2>/dev/null | awk -F= '/: values=/ {print $2; exit}')"
SAVED_SPK_VOL=100
if [ -r "$XDG_CONFIG_HOME/sxmo/speaker_vol" ]; then
read -r SAVED_SPK_VOL < "$XDG_CONFIG_HOME/sxmo/speaker_vol" 2>/dev/null || SAVED_SPK_VOL=100
fi
case "$SAVED_SPK_VOL" in ''|*[!0-9]*) SAVED_SPK_VOL=100 ;; esac
finish() {
trap - INT TERM EXIT
jobs -p | xargs -r kill
wait
jobs -p | xargs -r kill 2>/dev/null || true
wait 2>/dev/null || true
if [ -n "${SAVED_RX3:-}" ]; then
amixer -c 0 cset "name='RX3 Digital Volume'" "$SAVED_RX3" >/dev/null 2>&1 || true
fi
wpctl set-volume @DEFAULT_AUDIO_SINK@ "${SAVED_SPK_VOL}%" >/dev/null 2>&1 || true
exit
}
ring() {
if [ "${SXMO_RINGVOL:-100}" -le 0 ]; then
return 0
fi
ring_rx3=$(( 60 + SXMO_RINGVOL * 34 / 100 ))
mpv_vol=$(( SXMO_RINGVOL * 130 / 100 ))
amixer -c 0 cset "name='SPK DAC Switch'" 1 >/dev/null 2>&1 || true
amixer -c 0 cset "name='RX3 Digital Volume'" "$ring_rx3" >/dev/null 2>&1 || true
wpctl set-mute @DEFAULT_AUDIO_SINK@ 0 >/dev/null 2>&1 || true
wpctl set-volume @DEFAULT_AUDIO_SINK@ 100% >/dev/null 2>&1 || true
mpv --no-resume-playback --quiet --no-video \
--volume-max=150 --volume="$mpv_vol" \
--loop="${SXMO_RINGNUMBER:-10}" "$SXMO_RINGTONE" >/dev/null &
}
@@ -90,6 +116,9 @@ if [ ! -f "$XDG_CONFIG_HOME"/sxmo/.noring ] && [ ! -f "$XDG_CONFIG_HOME"/sxmo/.n
sxmo_log "RING AND VIBRATE"
sxmo_playerctl.sh pause_all
if [ -p /tmp/dwm_plugin_music.fifo ]; then
echo "PAUSE" > /tmp/dwm_plugin_music.fifo 2>/dev/null || true
fi
ring
vibrate
@@ -99,6 +128,9 @@ elif [ ! -f "$XDG_CONFIG_HOME"/sxmo/.noring ] && [ -f "$XDG_CONFIG_HOME"/sxmo/.n
sxmo_log "RING ONLY"
sxmo_playerctl.sh pause_all
if [ -p /tmp/dwm_plugin_music.fifo ]; then
echo "PAUSE" > /tmp/dwm_plugin_music.fifo 2>/dev/null || true
fi
ring
@@ -30,12 +30,23 @@ if [ -f "$XDG_CONFIG_HOME"/sxmo/.busy ]; then
fi
fi
if [ -f "$XDG_CONFIG_HOME/sxmo/ringsettings" ]; then
# shellcheck disable=SC1091
. "$XDG_CONFIG_HOME/sxmo/ringsettings"
fi
if [ ! -f "$XDG_CONFIG_HOME"/sxmo/.noring ]; then
mpv --no-resume-playback --quiet --no-video "$SXMO_TEXTSOUND" >> /dev/null 2>&1 &
case "${SXMO_RINGVOL:-100}" in
''|*[!0-9]*) SXMO_RINGVOL=100 ;;
esac
if [ "$SXMO_RINGVOL" -gt 0 ]; then
mpv_vol=$(( SXMO_RINGVOL * 130 / 100 ))
mpv --no-resume-playback --quiet --no-video --volume-max=150 --volume="$mpv_vol" "$SXMO_TEXTSOUND" >> /dev/null 2>&1 &
fi
fi
if [ ! -f "$XDG_CONFIG_HOME"/sxmo/.novibrate ]; then
sxmo_vibrate 500 "${SXMO_VIBRATE_STRENGTH:-1}" &
sxmo_vibrate 500 "${SXMO_VIBRATE_STRENGTH:-2}" &
fi
wait
@@ -43,6 +43,24 @@ if [ -z "$SXMO_NO_AUDIO" ]; then
# monitor for headphone for statusbar
superctl start sxmo_soundmonitor
(
sleep 1
spk_vol=100
if [ -r "$XDG_CONFIG_HOME/sxmo/speaker_vol" ]; then
read -r spk_vol < "$XDG_CONFIG_HOME/sxmo/speaker_vol" 2>/dev/null || spk_vol=100
fi
case "$spk_vol" in ''|*[!0-9]*) spk_vol=100 ;; esac
if [ "$spk_vol" -le 0 ]; then
amixer -c 0 cset "name='RX3 Digital Volume'" 0 >/dev/null 2>&1 || true
wpctl set-volume @DEFAULT_AUDIO_SINK@ 0% >/dev/null 2>&1 || true
else
rx3_hw=$(( 60 + spk_vol * 32 / 100 ))
amixer -c 0 cset "name='SPK DAC Switch'" 1 >/dev/null 2>&1 || true
amixer -c 0 cset "name='RX3 Digital Volume'" "$rx3_hw" >/dev/null 2>&1 || true
wpctl set-volume @DEFAULT_AUDIO_SINK@ "${spk_vol}%" >/dev/null 2>&1 || true
fi
sxmo_hook_statusbar.sh volume >/dev/null 2>&1 || true
) &
fi
# Periodically update some status bar components