UPDATE: Wallpaper downloads are not available from InterfaceLIFT anymore. Read details here.
Even though the first basic version of Juggler pretty much did what it was supposed to do, there were few ‘nice to have’ things which were missing. So I updated it as soon as I got some free time.
Here is the list of features (existing + new) which are now included.
- Its coded and tested to work on Vista and XP SP2 with .Net 3.5. It should work (not tested though) on Server 2008/2003 as they borrow UI code base from Vista/XP. No words for any other OS.
- It runs in background and can be controlled from System Tray.
- It can be configured to:
- start with Windows.
- look for wallpapers in multiple folders including/excluding sub-folders. Best results when used with matching resolution wallpapers.
- change wallpaper once every preferred duration between 1 min and 500 hrs. It will understand “000 Hrs/Mins 000 Min” format. It can interpret M/Min/Mins/Minutes and H/Hr/Hrs/Hour as Minutes and Hours respectively.
- confirm before changing wallpaper
- adjust image positioning for odd size wallpapers.
- You can also change wallpaper manually by clicking ‘Juggle Now’ menu or by double clicking the icon.
- It allows only one instance at a time.
- It also displays the last updated wallpaper and the time stamp when the next change will occur.
- It displays a confirmation dialog before automatically changing wallpaper. Its configurable to show a confirmation dialog and for how long the message should be displayed.
- “Active” option to enable/disable wallpaper juggling while program is running.
- Last changed wallpaper is a clickable menu which opens the wallpaper in windows explorer.
- You can download stunning wallpapers from interfaceLIFT.com and WallpaperStock.com using “Download Wallpapers” screen right within juggler.
This version uses .Net 3.5. Also, the downloads are posted at codeplex.com.
- Download and install .Net framework v3.5 if its not installed already.
- Navigate to Juggler release page at codeplex to download application and/or source code. The downloads are in Files section.
To uninstall, just remove the files from your PC. There are no special steps required to uninstall this.
Most of the stuff is pretty straightforward. It uses Timer class to invoke code to change wallpaper. The invoked code then uses Win APIs to do the job. But there are few things which may interest you.
- There are all kinds of anonymous method illustrations. You can also find basic as well as complex lambda expressions which, I think, are nothing but fancy anonymous methods invented for LINQ.
- It also demonstrates how to use System.Threading.Mutex to find and avoid if user is trying to run multiple instance of same application. This is the simplest and most accurate approach to create single instance application in C# (VB has some out of the box functionality). There is a catch in this approach which may disqualify this in certain cases.
- While implementing single instance functionality, I needed to warn user that the application is already running. Simplest way is to just display a message box. But I thought if the already running (first) instance can get a notification from second instance then it can show a balloon tip which will tell user where exactly the application is running. This may sound simple but it’s not.
- As both instance are separate processes, we are talking about inter process communication (IPC) here.
- There is no other way than remoting in .Net 1.0-2.0 for IPC. And opening a tcp(forget about http) port seems overkill to me in this situation.
- So I chose a self hosted simple wcf service with named pipe binding. May be I’ll post about using named pipes in WCF for IPC later some time.
As always, please use it at your own risk. Feel free to rant in comments.