Show slider only when app is running [SOLVED]

Hey, is there a way to hide a custom slider widget if an associated app is not running? Basically, I have a custom slider that controls the Music app volume control (which is separate from the system volume in AirPlay). That much works. But I'd like the slider to auto-hide if the Music app is not running. A few people have had success with techniques for regular buttons, but I can't get them to work for the custom slider.

What seems to be happening is that if the Music app isn't running, then the slider is sent a blank value (return ""), which gets interpreted as a zero and the slider remains visible, set to zero.

I've tried "return null", "return missing value", and "return false" in the scripts, but the same thing happens.

Any ideas how to hide a custom slider widget for an app that isn't running?

My widget-specific AppleScript is:

if application "Music" is running then
   tell application "Music"
      set itunesvolume to sound volume
   end tell
   set currentvolume to itunesvolume / 100
   return currentvolume
else
   return ""
end if

My predefined action (AppleScript async) is:

on bttWidgetSliderMoved(sliderValue)
    if application "Music" is running then
       tell application "Music"
       try
          set the sound volume to sliderValue * 100
       end try
       end tell
    else
       return ""
    end if
end bttWidgetSliderMoved

Thanks!

Currently the only solution would be to create a conditional activation group and use the "Running Processes" property:

However I have just uploaded a new alpha version which should make the slider behavior the same as for other widgets, so returning an empty string should hide it. Possibly try that alpha.

1 Like

The first solution works (though it's a little bit slow to react). Thanks! I'll look forward to the updated feature in a stable future release!