# Support for Audacious music player
# Written by: Rafael Antonio Porras Samaniego <spoek@distrobit.net>

# Where are stored Audacious playlists
SetEnv Audacious-Playlists "$[FVWM_USERDIR]/playlists"

# Styles for Audacious windows
Style audacious		StaysOnTop
Style audacious		StartIconic, NoIcon, NoTitle, Sticky, WindowListSkip
Style playlist		StartIconic, NoIcon, NoTitle, Sticky, WindowListSkip
Style equalizer		StartIconic, NoIcon, NoTitle, Sticky, WindowListSkip

# If there is no selected mixer, load the default
CheckPreferences DefaultMixer "Include components/functions/Mixer-audacious"

# Main functions and menus
DestroyMenu /Music
AddToMenu /Music
+ DynamicPopupAction Function /Music-generator

DestroyFunc /Music-generator
AddToFunc /Music-generator
+ I DestroyMenu recreate /Music
+ I AddToMenu /Music '$[gt.Load playlist]'		Popup /Music/LoadPlaylist
+ I AddToMenu /Music '$[gt.Save playlist...]'	Music-SavePlaylist
+ I AddToMenu /Music '$[gt.Clear playlist]'	Music-ClearPlaylist
+ I AddToMenu /Music '$[gt.Remove current song]'	Music-RemoveSong
+ I AddToMenu /Music '$[gt.Remove playlist]'	Popup /Music/RemovePlaylist
+ I AddToMenu /Music "" Nop
+ I PipeRead 'audtool get-volume | sed -e "s:[ \t]::g" | sed -e "s:^.\\+$:AddToMenu\ /Music \'$[gt.Volume] \(&%%\)\' Popup /Mixer:"'

+ I AddToMenu /Music '$[gt.Toggle random]'	Music-ToggleRandom
+ I AddToMenu /Music '$[gt.Toggle repeat]'	Exec exec audtool playlist-repeat-toggle
+ I AddToMenu /Music "" Nop
+ I AddToMenu /Music '$[gt.Stop playback]'	Music-Stop
+ I AddToMenu /Music '$[gt.Show/hide player]'	Music-GUI
+ I AddToMenu /Music '$[gt.Play/Pause]'		Music-PlayPause

# ---------------------------------------------------------------------------
# Basic control functions
DestroyFunc Music-Play
AddToFunc Music-Play
+ I Exec exec audtool playback-play

DestroyFunc Music-Pause
AddToFunc Music-Pause
+ I Exec exec audtool playback-pause

DestroyFunc Music-Stop
AddToFunc Music-Stop
+ I Exec exec audtool playback-stop

DestroyFunc Music-PlayPause
AddToFunc Music-PlayPause
+ I Exec exec audacious -t

DestroyFunc Music-Next
AddToFunc Music-Next
+ I Exec exec audtool playlist-advance

DestroyFunc Music-Prev
AddToFunc Music-Prev
+ I Exec exec audtool playlist-reverse

DestroyFunc Music-Forward
AddToFunc Music-Forward
+ I Nop

DestroyFunc Music-Backward
AddToFunc Music-Backward
+ I Nop

DestroyFunc Music-ToggleRandom
AddToFunc Music-ToggleRandom
+ I Exec exec audtool playlist-shuffle-toggle

DestroyFunc Music-RemoveSong
AddToFunc Music-RemoveSong
+ I Exec exec audtool playlist-delete `audtool playlist-position`

DestroyFunc Music-GUI
AddToFunc Music-GUI
+ I All (audacious) Iconify toggle

DestroyFunc Music-Find
AddToFunc Music-Find
+ I Nop

# ---------------------------------------------------------------------------
# Playlist functions

DestroyMenu /Music/LoadPlaylist
AddToMenu /Music/LoadPlaylist
+ DynamicPopupAction Function /Music/LoadPlaylist-generator

DestroyFunc /Music/LoadPlaylist-generator
AddToFunc /Music/LoadPlaylist-generator
+ I DestroyMenu recreate /Music/LoadPlaylist
+ I AddToMenu /Music/LoadPlaylist
+ I PipeRead 'for i in $[Audacious-Playlists]/*.m3u $[Audacious-Playlists]/*.pls; do \
  name=$(basename "$i"); \
  sname=${name%%.m3u}; \
  sname=${sname%%.pls}; \
  echo \"AddToMenu /Music/LoadPlaylist \'$sname\' Exec exec audacious \'$i\'\"; done'

DestroyFunc Music-SavePlaylist
AddToFunc Music-SavePlaylist
+ I Exec exec mkdir -p $[Audacious-Playlists]
+ I Module FvwmForm Music-SavePlaylist-Dialog

All (Music-SavePlaylist-Dialog) Close
DestroyModuleConfig Music-SavePlaylist-Dialog: *
*Music-SavePlaylist-Dialog: Title "$[gt.Save playlist]"
*Music-SavePlaylist-Dialog: Text "$[gt.Name of the playlist]"
*Music-SavePlaylist-Dialog: Line center
*Music-SavePlaylist-Dialog: Input PlaylistName 40 ""
*Music-SavePlaylist-Dialog: Line center
*Music-SavePlaylist-Dialog: Line center
*Music-SavePlaylist-Dialog: Button quit " $[gt.Cancel] " ^[
*Music-SavePlaylist-Dialog: Command Nop
*Music-SavePlaylist-Dialog: Button quit " $[gt.Save] " ^M
*Music-SavePlaylist-Dialog: Command PipeRead 'numero=1; echo "#EXTM3U" > $[Audacious-Playlists]/$(PlaylistName).m3u; while [ $numero -le `audtool playlist-length` ]; do \
  echo "#EXTINF:-1,"`audtool playlist-song $numero` >> $[Audacious-Playlists]/$(PlaylistName).m3u; \
  audtool playlist-song-filename $numero >> $[Audacious-Playlists]/$(PlaylistName).m3u; \
  numero=`expr $numero + 1`; \
  done'
*Music-SavePlaylist-Dialog: Line center

DestroyFunc Music-ClearPlaylist
AddToFunc Music-ClearPlaylist
+ I Exec exec audtool playlist-clear

DestroyMenu /Music/RemovePlaylist
AddToMenu /Music/RemovePlaylist
+ DynamicPopupAction Function /Music/RemovePlaylist-generator

DestroyFunc /Music/RemovePlaylist-generator
AddToFunc /Music/RemovePlaylist-generator
+ I DestroyMenu recreate /Music/RemovePlaylist
+ I AddToMenu /Music/RemovePlaylist
+ I PipeRead 'for i in $[Audacious-Playlists]/*.m3u $[Audacious-Playlists]/*.pls; do \
  name=$(basename "$i"); \
  sname=${name%%.m3u}; \
  sname=${sname%%.pls}; \
  echo \"AddToMenu /Music/RemovePlaylist \'$sname\' Exec rm -f \'$i\'\"; done'

# vim:ft=fvwm
