XScreenSaver 5.40

XScreenSaver 5.40 is out now, including iOS and Android.

VFeedback simulates the effect (likely unknown to da yoot of today) of pointing a video camera at an analog television. If you position things just right you can get seething flame spirals. The screen savers does an... adequate... job of this, by randomly zooming and rotating the camera, but it works a lot better when run interactively. Try to get a hard light/dark division kind of near the center of the screen and hold it there.

Running it in a window on Linux, left button pans, other buttons or modifiers rotate. There are also a bunch of keystrokes for twisting the tv knobs. On mobile, you can only pan, because the X11 code can't see multi-touch.

FilmLeader displays a looping countdown based on the SMPTE Universal Film leader, and it never reaches the end, which I am told is super frustrating.

GlitchPEG is perhaps the first screen saver that's excellent at detecting buffer overflow exploits. It loads an image, corrupts it, and then displays the corrupted version, several times a second. It glitches the image by altering random bytes in the compressed image file before de-compressing it. So if this saver crashes, congratulations, you have an exploitable image library!

It looks cool on JPEGs, but doesn't work well on PNG files, since PNG contains checksums that detect simple corruption.

GlitchPEG only works on X11 and MacOS, not iOS and Android, because right now there's no easy access to the un-decoded image data on the mobile platforms. I could add an API for that, but I haven't bothered.

I've already written about the new version of DymaxionMap, but now you can actually run it. It blends day and night maps into a single image that shows what the day/night terminator would look like moving across Flatland. It sort of feels like two spirals turning on opposite directions.

GLPlanet also looks a lot better now, since it also blends the day and night images with a dusk terminator instead of a hard edge.

Also, many more modes have been enabled on Android.

Previously, previously, previously, previously, previously, previously.

Tags: , , , , , ,

27 Responses:

  1. Pavel says:

    Ooh, Teddybears.

  2. TravisD says:

    OK. so what's the background noise on the YT video renderings? Just generic HDD sounds?

  3. Ooooh, this is delightful, thank you!

    Would it be possible at some point to get a black-and-white only option for VFeedback? It's vitally important that we be able to attempt to re-create the original Doctor Who credits with it.

    • jwz says:

      Turn down the color knob (type c/C or use -tv-color).

      For all of the analog TV-based savers:

      -tv-brightness useful range is around -75 to 100.
      -tv-contrast useful range is around 0 - 500.
      -tv-color useful range is around +/- 500.
      -tv-tint is degrees.

      • Doctor Memory says:

        Hm, I did try turning down the color and tint sliders all the way, but the results seemed inconsistent: sometimes more or less B&W but sometimes just extremely muted colors. I'll try fussing with the controls a bit more.

        • jwz says:

          Well, it's all definitely very fussy. That's actually kind of the point!

          • rc says:

            It almost makes me wish the analog TV-based savers would respond to percussive maintenance. Yanno, smacking the side of the device a couple of times to make the fussiness go away... for a few seconds.

            Thanks for this release! Looks great on an iPod touch 6th gen, especially FilmLeader in vertical.

  4. cowmix says:

    blah blah blah github blah blah blah.

  5. Wout says:

    I must say Filmleader triggers mild OCD in me by never reaching 0 ;)

    Who else uses XScreenSaver as live background? My favorites so far are the ones that fill the screen fast and show gentle changes, like Flip Flop and Hex Strut

    • Ian says:

      Real film leaders don't reach 0, they stop at 3 or 2. The idea is that if you switch projectors too soon (if you do this manually that is) the picture will be black instead of showing a leader

      (The numbers are also projected upside down since the leader is there for the projectionist to see in the projector, not the audience)

  6. David Konerding says:

    I originally wrote glplanet while in grad school, I guess around '98, mainly to teach myself about texture mapping on the sphere in OpenGL. I've always been curious about mapping square shapes to curved ones. I got an email from a guy who did Geo for the US Government (three letter agency) letting me know I had got the projection mappings wrong.

    What I learned over the years is that creating a really nice looking visualization is truly hard, especially if you're limited to C (like XScreenSaver). These days, I use Blender. Blender is actually a minimal wrapper over OpenGL, with a physics engine, a physically realistic renderer, and a surprisingly hard to use UI for expressing complex scene graphs filled with complicated interacting objects.

    I managed to apply these same techniques recently to model the solar system, specifically using it to make perspective images of solar eclipses on earth using a realistic solar model and clock. Everything was very smooth, with the exception that I had to divide all the sizes in meters by 10 due to the limited precision of float; using meters means that the earth and moon are close enough that they collapse to the same values.

    I had grand dreams of developing a powerful virtual machine with an embedded scene graph and using that to make many more interesting xscreensavers. However, like many programmers, I use C++ to write complicated modelling software, and xscreensaver is in C. Attempting to write a scene graph and renderer in C is... not fun, so I gave up.

    • jwz says:

      I feel your pain about C, but I also feel like saying that the solution to that pain is C++ is like saying, "If only this hammer came with more thumbs."

      If something like Processing had existed in 1992, things would have gone quite differently indeed.

      However, I will note that on the occasions when someone has mailed me and said, "But I really really want to write this thing in C++" it was often because they had some idea like, "I want to add a dependency on a 50,000 line physics model library" or something, which would have single-handedly dwarfed the size of all of the rest of xscreensaver, and I do still have some possibly-outdated notions of economy in that regard. (Like, I feel like if one saver takes up 10× as many bytes as another, it better be approximately 10× as good. I realize that this probably doesn't actually matter, but won't someone think of the VMS port??)

      In my fever dreams, the thing that will make me tick the major version number from 5 to 6 is adding a port to WebGL that works by cross-compiling the existing C, X11, OpenGL 3.1 code to WASM or something. I keep hoping that elves will come in the night and do this work for me.

      The night terrors continue, telling me that the thing that will make me tick the major version from 6 to 7 is once the ~400k lines of C source has been faithfully and with great fidelity translated to Javascript, such that the JS is the primary and the C can be thrown away.

      I'm not holding my breath on either.

      • David Konerding says:

        I had also considered sending patches that add a tiny JS engine, or some sort of crazy WebAssembly approach, porting most of the existing savers to scripts/config. But ultimately I can't support putting an inner platform in an outer platform (inner platform = browser tech, output platform = native UI libs).

        Ultimately I think the conclusion is that any reasonable program, in addition to having a mail reader, also needs a scene graph, rendering engine, physics library, and scripting language to achieve completeness. Based on some of my programs (which do include all those things except the mail reader), the runtime is about 50K lines/code and 1-2M shared object resident space. And, once you have that, most existing screensavers end up not being code but a bunch of config files. Personally, that seems like a nice software engineering project, but not part of xscreensaver.

  7. YHVH says:

    Not sure if do-able, but I've just come across finite element analysis, which can look pretty cool.


  8. Cat Mara says:

    WebCollage + GlitchPEG + FilmLeader = all your creepypasta/ SCP Wiki entry illustration needs

  9. Andres says:

    GlitchPEG is ignoring the “use desktop image” settings. It seems to always try to load from my pictures folder on OS X.

Leave a Reply

Your email address will not be published. But if you provide a fake email address, I will likely assume that you are a troll, and not publish your comment.

You may use these HTML tags and attributes: <a href="" title=""> <b> <blockquote cite=""> <code> <em> <i> <s> <strike> <strong> <img src="" width="" height="" style=""> <iframe src="" class=""> <video src="" class="" controls="" loop="" muted="" autoplay="" playsinline=""> <div class=""> <blink> <tt> <u>, or *italics*.

  • Previously