SaverSwitcher

A screensaver plugin for SlimServer

Releases for SqueezeCenter 7 are available here.
SqueezeCenter 7.3: you can use the repository URL https://tuxreborn.netlify.com/slim/slim7/repodata.xml in the web Extension Downloader interface instead of manually unzipping the plugin.

SlimServer 6.5.x: download SaverSwitcher-1.16.zip, and unpack in your SlimServer Plugins directory.

Other versions are available.

What it does

SaverSwitcher allows you to configure multiple screensavers for all three screensaver modes (Off, Stopped, and When Playing). You can configure up to 9 screensavers for each mode, and have SaverSwitcher cycle through them. For instance, you can use SaverSwitcher to have your Squeezeboxes alternate between the classic Now Playing and Date/Time screensavers while music is playing, and alternate between SuperDateTime and the RSS Feeds screensavers when the Squeezebox is "off".

You can designate how long (roughly) each screensaver should be active in each mode. For instance, while playing music show Now Playing for 1 minute and then Date/Time for 10 seconds, and while "off", show SuperDateTime for 30 seconds and RSS Feeds for 2 minutes.

WeatherTime caveat: the popular WeatherTime screensaver does not, as of this writing, cache its forecast data. Because of the way SqueezeCenter/SlimServer handle screensaver transitions, WeatherTime is ill-suited for timed/"active" use with SaverSwitcher. I use, and recommend, SuperDateTime as a great alternative. SuperDateTime has more features, but you *can* use SuperDateTime to merely display weather conditions and forecasts; you don't have to use the advanced sports, financial, and other information display choices it offers.

Song transitions

When used as the When Playing screensaver, SaverSwitcher will check every few seconds to see if the song has changed. If so, it will start the first specified When Playing screensaver again so that, if you've configured Now Playing as the first When Playing screensaver, you'll see what song just started. (If you do not want this behavior, set the first screensaver to Disabled/Manual instead of setting a regular duration value.)

Manually forcing a screensaver change

When a SaverSwitcher screensaver is active, you can press the "0" button to have SaverSwitcher move to the next active screensaver.

Manually choosing a specific screensaver

When a SaverSwitcher screensaver is active, you can press "1" through "9" buttons to have SaverSwitcher move to a specific screensaver. If you do this, SaverSwitcher will only use that specific saver -- except it will still switch to the first screensaver when a new song begins. To revert to the normal cycle of active screensavers, press the "0" button.

Button sensitivity

To use the Manual screensaver selection feature, press the number button only very briefly. If you press a number button for less than 0.25 second, SaverSwitcher will act on it. If you hold the button for between 0.25 and 1.25 seconds, SaverSwitcher will pass that along as a brief button press for such things as moving around within a playlist. If you hold the button for more than 1.25 seconds, SaverSwitcher will pass that along as a "held" button for such things as jumping to a particular Favorite or rating a song with TrackStat.

Use with ContextMenu

Changing current screensaver

SaverSwitcher versions 7a10 and later support my ContextMenu plugin (requiring at least version 7a14 of ContextMenu). With both plugins installed, SaverSwitcher will provide a context menu when your Squeezebox is off, or when the When Stopped or When Playing screensavers have kicked in. This means

If SaverSwitcher controls that screensaver mode, you'll see

If SaverSwitcher does not control that screensaver mode, you'll see an alphabetical list of all screensavers that seem appropriate; choosing one simply changes the screensaver preference for that mode.

Starting screensaver immediately

As of version 7a11, SaverSwitcher also offers an "Activate screensaver" option. This is disabled by default, but can be enabled through the ContextMenu web settings page. If enabled, SaverSwitcher will provide a context menu option if your Squeezebox is playing music but the When Playing screensaver has not yet kicked in. This option, "Activate screensaver", will cause your Squeezebox to start displaying your preferred When Playing screensaver immediately, so you don't have to wait for the usual screensaver timeout to elapse.

Disabling button control

SaverSwitcher has a "Button control" setting you can use to disable the Manual screensaver selection feature. Users of plugins like TrackStat that need to see number button presses may wish to disable SaverSwitcher button control, although as of version 1.15, SaverSwitcher "plays well" with TrackStat and similar plugins, and button control can actuall help you -- see the Hints section for more information. Note that button control is a global setting that affects all players. If you disable button control, the player UI will use the phrase "Disabled" rather than "Manual".

Using inactive/"Manual" screensavers

You can set any of the 9 positions to a screensaver flagged "Manual" by arrowing down toward zero seconds. These screensavers can be activated as described above, and the "0" button can be used to switch back to the normal cycle of screensavers.

Configuring SaverSwitcher

First, use the Extras menu to configure your choices for the When Playing, Stopped, and Off modes that you want SaverSwitcher to control. You only need to configure the modes that you want to use SaverSwitcher for. Note that the screensaver does not use the "radio button" indicator at all. If you use the Up or Down button to change a Manual/number of seconds choice or a screensaver choice on the display, that will automatically update the SaverSwitcher settings.

Start at the main Extras menu One of three choices for SaverSwitcher modes
Extras menu choice First SaverSwitcher menu item
First possible When Playing saver is set to run for one minute using the Now Playing saver
1/9 1 minute Now Playing
Second possible When Playing saver is set to run for ten seconds using the Date and Time saver
2/9 10 seconds Date and Time
Third possible When Playing saver is "manual" (only used on demand) will use Analog VU if chosen
3/9 Manual Analog VU

Once you have done that, use the Settings -> Screensavers menus to choose "SaverSwitcher screensavers" as the screensaver to use for any mode that you want SaverSwitcher to control.
Screensavers top menu Now Playing SaverSwitcher selected

Hints

Requirements

SaverSwitcher has been tested with SlimServer 6.5.x, SqueezeCenter 7.0 - 7.3, though current development is focused on SqueezeCenter 7.2 and 7.3.

SqueezeNetwork limitation

This plugin will not work with SqueezeNetwork, due to technical limitations (although it does work whrn using SqueezeNetwork services through SlimServer 7). When a Squeezebox or Transporter(?) is connected to SqueezeNetwork, it is not connected to the "local" Slimserver host at all. This means that plugins you've installed on your local Slimserver won't see any activity on the Squeezebox.

SaverSwitcher for other Plugin developers

As of version 1.15, SaverSwitcher has an API that other plugins can use to interoperate better with SaverSwitcher. Other screensaver plugins can register "pre-usage check" routines with SaverSwitcher that SaverSwitcher will always call before switching to that screensaver. This allows things like having a screensaver that is only active in certain hours, or "announcement" screensavers that only display if there is some news to report. See SaverSwitcher/Public.pm for more information and sample code.

Changelog

revision 1.16
date: 2007/05/05
working on unresponsive buttons bug (SS ignoring button presses while playing)
----------------------------
revision 1.15
date: 2007/04/28
"play well" with other plugins (don't hog the number buttons)
"pre-usage check function" public API
better support for noticing new songs
fix minor bug with resetting screensaver prefs
----------------------------
revision 1.14
date: 2007/03/04
allow disabling button control; do not assume that screensaver #1 is active
----------------------------
revision 1.13
date: 2007/02/26
remove invalid prefs; pad lists to 9 savers for each type; CGI.pm 'use' fix
----------------------------
revision 1.12
date: 2007/02/21
$minActiveDuration support; better UI in N/9 screens
----------------------------
revision 1.11
date: 2007/02/17
can set 9 savers; fix bug saving prefs if not all possible positions reviewed;
don't support holding up/down keys (better usability for more common tasks, esp. w/ JVC remotes)
----------------------------
revision 1.10
date: 2007/02/17
manual override fix -- sometimes failed to revert to normal saver
----------------------------
revision 1.9
date: 2007/02/12
fix bug where number buttons not working in menus
----------------------------
revision 1.8
date: 2007/02/12
ability to select inactive screensavers; awareness of client display capabilities
----------------------------
revision 1.7
date: 2007/02/10
live365 (non-http) stream recognition fix, better "out of screensaver" logic for When Playing
----------------------------
revision 1.6
date: 2007/02/08
add code to switch savers when "0" pressed
----------------------------
revision 1.5
date: 2007/02/07
fix obscure bug that can crash Slimserver
----------------------------
revision 1.4
date: 2007/02/04
"new song" fixes: premature local song change; more precise timing for changes in streams
----------------------------
revision 1.3
date: 2007/02/04
fix multi-player reset bug
----------------------------
revision 1.2
date: 2007/01/31
fix some save/restore problems; add code to recognize new songs in When Playing mode
----------------------------
revision 1.1
date: 2007/01/30 
Initial revision

Other plugins - Home

$Id: SaverSwitcher.html,v 1.31 2008/12/09 13:15:43 peterw Exp peterw $