8-bit color cycling time-aware live wallpapers by Mark Ferrari

 

A few days ago I stumbled upon the fantastic Seize The Day 24 Hour Palette Art Gallery by Mark Ferrari and converted to HTML5 by Joseph Huckaby. As we all know 8-bit art is awesome: as soon as I saw the impressive collection of landscapes I decided I had to place them somewhere close to my eyes so that I could gorge on them continuously. Each landscape matches a different month of the year and all of them feature a fancy palette cycling that animates the scene in a loop and also shows different illumination according to the time of the day. I thought this would make a perfect animated live wallpaper. Kind of like f.lux but with a retro, pixelated heart.

This all started as a Sunday afternoon project, but it turned out to take a bit longer mostly because I dig using Linux. One of my goals was to reach some degree of compatibility across different OSs and sure enough, the HTML5 visualizations can be placed as a Desktop wallpaper very easily on Windows and macOS. Just install one of the dedicated applications that let you use a web page as a wallpaper, point it to the address and it’s done.

Some of the scenes can palette-cycle through different weather condition, so I added a function that checks the location of the client and matches the scene with the current weather, when available. I also sacrificed a bit the refresh rate of the visualization for the sake of reaching a CPU usage that I could accept. Currently this live wallpaper is costing me between 4 and 8% load of one CPU of my quad core laptop. If you too are interested in sacrificing a few CPU cycles for some top notch 8-bit art, follow the Howto below.

macOS Howto

Install Desktopr. Open it, feel free to remove the placeholder URLs and add a new one: http://www.jamez.it/8bit-wallpaper/ and you’re done.

Windows Howto

Install Wallpaper Engine. Open it, select Open From URL, paste http://www.jamez.it/8bit-wallpaper/ and you’re done.

Linux Howto

There’s a plethora of Window Managers, each with their quirks and strangeness. In order to place a browser window on my Desktop background, I ended up using WebScreensaver, a python script that uses WebKit to create an interfaceless browser window, and XWinWrap, a utility that shows its wrinkles, but still manages to display said window on your desktop under certain conditions.

What are those conditions? You must use MATE window manager which luckily is one of my favorite WM, or accept to face all sort of glitches. I am a Desktop-with-icons kinda guy (I know, GUIs are for wimps anyways) and XWinWrap with Gnome Classic, Gnome3, Xfce and KDE couldn’t deal with the right z-axis (thus hiding my icon layer) or downright refused to remain sticky. The only issue I couldn’t fix yet using MATE is that any icon ending behind the visualization remains hidden there. Luckily I tend to keep my icons close to the edges, forming a canvas of sorts, so this was never a problem. You can wrap everything together with a script that fires on Startup.

#!/bin/bash
#give the script some sleeping time, otherwise the Desktop won't be initialized and the wallpaper will fail to launch
sleep 4; xwinwrap -d "x-caja-desktop" -ov -g 650x530+600+250 -- /usr/lib/xscreensaver/webscreensaver -url "http://www.jamez.it/8bit-wallpaper/" -window-id WID

Bonus points

You can pass some parameters to the address for extra goodies.

http://www.jamez.it/8bit-wallpaper/?view=september

forces to load a specific view. Views for December and March are a bit weak because half the canvas was designed to accommodate for Seize The Day calendar utility, a truly marvelous program from 1994 – way ahead of its time, and timeless still. If you want to skip to a specific month just specify the name, for istance “view=september”. If you don’t want to limit your choice to time-synchronized views, try “view=random”. With that option on, every three hours a new view will be loaded from a special pool of non-time-synchronized views.

http://www.jamez.it/8bit-wallpaper/?zoom=true

Normally the canvas loaded uses the native resolution of 640×480. Force stretch view to full available space with this parameter.

http://www.jamez.it/8bit-wallpaper/?place=Miami,Florida

Forces a specific client location to load current Weather report from. Useful when geolocation fails.

Obviously the parameters can be concatenated:

http://www.jamez.it/8bit-wallpaper/?view=february&place=berlin,germany&zoom=true

Enjoy!

Leave a Reply

Your email address will not be published. Required fields are marked *

Name *