13 Nov 2010

WebViewScreenSaver for Mac

I just released a small project called WebViewScreenSaver for Mac. It is available on github and is open-sourced. You can download the binary for 10.6.

The idea is very simple: Make any page on the web a screensaver.

The screensaver takes care (the relatively simple task) of ensuring no keyboard or mouse events leak into the web view and so you can display a website and not worry that someone could subvert it and access your account, or maliciously rickroll you.


You can use it in a variety of ways. Currently, I use it at work as an ambient display to display tweets about our product (via sites like visibletweets.com) or to display an internal feeds driven through a web server. I also use it to display a flickr slideshow. More and more dashboards and visualization are running on the web, either with maps, javascript or flash and many of them look great as a screensaver.

The screensaver's options will allow you to set a list of URLs to cycle through with a custom time interval.


I don't think this is a new idea, but I couldn't find anyone who had done it for the Mac. We often build dashboards that are hosted on a website, they're very easy to build and there are now even more sophisticated ones like geckoboard that look super-sexy.

However, running a web browser in a logged in account is dangerous. I've seen people build proper full blown apps and do many secret keystrokes or password protects in order to make sure someone can't quit the app and access the console or desktop.

I noticed there was already a perfectly well tested mechanism for this, which is the screen saver framework. It can take care of password protection, screen locking, screen blanking etc. All I had to do was create a webview that would embed into the screensaver view and some rudimentary preferences.


  1. Download and install the screensaver from the github download page.

  2. See the project description for how to activate it and some sample URLs you can use that make great screensavers.


You can reply to me about this on Twitter: