XScreenSaver

Last updated

XScreenSaver
Original author(s) Jamie Zawinski
Developer(s) Jamie Zawinski
Initial release17 August 1992;32 years ago (1992-08-17)
Stable release
6.08 / October 10, 2023;10 months ago (2023-10-10) [1]
Written in ANSI C, X11, OpenGL
Operating system Unix, macOS, iOS, Android
Type Screensaver
License MIT License [2]
Website jwz.org/xscreensaver/
Xscreensaver "GLMatrix" Screensaver

XScreenSaver is a free and open-source collection of 240+ [3] screensavers for Unix, macOS, iOS and Android operating systems. It was created by Jamie Zawinski in 1992 and is still maintained by him, with new releases coming out several times a year. [4]

Contents

Platforms

The free software and open-source Unix-like operating systems running the X Window System (such as Linux and FreeBSD) use XScreenSaver almost exclusively.[ citation needed ] On those systems, there are several packages: one for the screen-saving and locking framework, and two or more for the display modes, divided somewhat arbitrarily. [5]

On Macintosh systems, XScreenSaver works with the built-in macOS screen saver.

On iOS systems, XScreenSaver is a stand-alone app that can run any of the hacks full-screen.

On Android systems, the XScreenSaver display modes work either as normal screen savers (which Android sometimes refers to as "Daydreams") or as live wallpapers.

There is no official version for Microsoft Windows, and the developer discourages anyone from porting it. The author considers Microsoft to be "a company with vicious, predatory, anti-competitive business practices" [6] and says that, as one of the original authors of Netscape Navigator, he holds a "personal grudge" against Microsoft because of its behavior during the First Browser War.

Software Architecture

The XScreenSaver daemon is responsible for detecting idle-ness, blanking and locking the screen, and launching the display modes. The display modes (termed "hacks" from the historical usage "display hack") are each stand-alone programs.

This is an important security feature, in that the display modes are sandboxed into a separate process from the screen locking framework. This means that a programming error in one of the graphical display modes cannot compromise the screen locker itself (e.g., a crash in a display mode will not unlock the screen).

It also means that a third-party screen saver can be written in any language or with any graphics library, so long as it is capable of rendering onto an externally provided window.

For historical and portability reasons, the included hacks are all written in ANSI C. About half of them use the X11 API, and about half use the OpenGL 1.3 API.

Rather than forking the code-base and re-writing the hacks to target different platforms, XScreenSaver contains a number of compatibility layers.

Security

In addition to sandboxing the display modes, the XScreenSaver daemon links with as few libraries as possible. In particular, it does not link against GUI frameworks like GTK or KDE, but uses only raw Xlib for rendering the unlock dialog box.

In recent years, some Linux distributions have begun using the gnome-screensaver or kscreensaver screen-blanking frameworks by default instead of the framework included with XScreenSaver. [9] In 2011, gnome-screensaver was forked as both mate-screensaver and cinnamon-screensaver. Earlier versions of these frameworks still depended upon the XScreenSaver collection of screen savers, which is over 90% of the package. [10] However, in 2011, gnome-screensaver version 3 dropped support for screensavers completely, supporting only simple screen blanking, [11] and as of 2018, Linux Mint's cinnamon-screensaver 4.0.8 no longer supports the XScreenSaver hacks. [12]

Those Linux distributions that have replaced XScreenSaver with other screen-locking frameworks have suffered notable security problems. Those other frameworks have a history of security bugs that allow the screen to be un-locked without a password, e.g., by simply holding a key down until the locker crashes. [13] [14] [15] [16] [17] [18] [19]

In 2004, Zawinski had written about the architectural decisions made in XScreenSaver with the goal of avoiding this very class of bug, [20] leading him to quip in 2015, "If you are not running XScreenSaver on Linux, then it is safe to assume that your screen does not lock." [21]

Display Modes

The included hacks are highly varied, ranging from simple 2D psychedelia, to 3D demonstrations of complex mathematical principles, to simulations of other computer systems, to re-creations of artifacts and effects from movies.

Though many of the newer hacks take full advantage of the power of modern computers, the age of the project means that some of the older hacks may look dated to modern eyes, as they were originally written for much less powerful computers.

Examples of hacks include: [3]

Some of the included hacks are very similar to demo effects created by the demoscene:

See also

XScreenSaver was featured in Sleep Mode: The Art of the Screensaver, [22] a gallery exhibition curated by Rafaël Rozendaal at Rotterdam's Het Nieuwe Instituut in 2017.

Related Research Articles

<span class="mw-page-title-main">X Window System</span> Windowing system for bitmap displays on UNIX-like systems

The X Window System is a windowing system for bitmap displays, common on Unix-like operating systems.

Jamie Werner Zawinski, commonly known as jwz, is an American computer programmer, blogger, and impresario. He is best known for his role in the creation of Netscape Navigator, Netscape Mail, Lucid Emacs, Mozilla.org, and XScreenSaver. He is also the proprietor of DNA Lounge, a nightclub and live music venue in San Francisco.

<span class="mw-page-title-main">Xfce</span> Desktop environment

Xfce or XFCE is a free and open-source desktop environment for Linux and other Unix-like operating systems.

In computing, cross-platform software is computer software that is designed to work in several computing platforms. Some cross-platform software requires a separate build for each platform, but some can be directly run on any platform without special preparation, being written in an interpreted language or compiled to portable bytecode for which the interpreters or run-time packages are common or standard components of all supported platforms.

<span class="mw-page-title-main">Screensaver</span> Computer program that blanks the screen or fills it with moving images

A screensaver is a computer program that blanks the display screen or fills it with moving images or patterns when the computer has been idle for a designated time. The original purpose of screensavers was to prevent phosphor burn-in on CRT or plasma computer monitors. Though most modern monitors are not susceptible to this issue, screensaver programs are still used for other purposes. Screensavers are often set up to offer a basic layer of security by requiring a password to re-access the device. Some screensaver programs also use otherwise-idle computer resources to do useful work, such as processing for volunteer computing projects.

<span class="mw-page-title-main">Windowing system</span> Software that manages separately different parts of display screens

In computing, a windowing system is a software suite that manages separately different parts of display screens. It is a type of graphical user interface (GUI) which implements the WIMP paradigm for a user interface.

<span class="mw-page-title-main">Xgl</span> Display server implementation

Xgl is an obsolete display server implementation supporting the X Window System protocol designed to take advantage of modern graphics cards via their OpenGL drivers, layered on top of OpenGL. It supports hardware acceleration of all X, OpenGL and XVideo applications and graphical effects by a compositing window manager such as Compiz or Beryl. The project was started by David Reveman of Novell and first released on January 2, 2006. It was removed from the X.org server in favor of AIGLX on June 12, 2008.

A compositing manager, or compositor, is software that provides applications with an off-screen buffer for each window. The compositing manager composites the window buffers into an image representing the screen and writes the result into the display memory. A compositing window manager is a window manager that is also a compositing manager.

Resolution independence is where elements on a computer screen are rendered at sizes independent from the pixel grid, resulting in a graphical user interface that is displayed at a consistent physical size, regardless of the resolution of the screen.

<span class="mw-page-title-main">GNOME Screensaver</span> GNOME projects official screen banking and locking framework

Up until GNOME 3.5, GNOME Screensaver was the GNOME project's official screen blanking and locking framework. With the release of GNOME 3.5.5, screen locking functionality became a function of GDM and GNOME Shell by default.

Clutter is a discontinued GObject-based graphics library for creating hardware-accelerated user interfaces. Clutter is an OpenGL-based 'interactive canvas' library and does not contain any graphical control elements. It relies upon OpenGL (1.4+) or OpenGL ES for rendering,. It also supports media playback using GStreamer and 2D graphics rendering using Cairo.

<span class="mw-page-title-main">Wayland (protocol)</span> Display system intended to replace X11

Wayland is a communication protocol that specifies the communication between a display server and its clients, as well as a C library implementation of that protocol. A display server using the Wayland protocol is called a Wayland compositor, because it additionally performs the task of a compositing window manager.

<span class="mw-page-title-main">Mono (software)</span> Computer software project

Mono is a free and open-source .NET Framework-compatible software framework. Originally by Ximian which was acquired by Novell, it was later developed by Xamarin which was acquired by Microsoft. In August 2024, Microsoft transferred ownership of Mono to WineHQ. Mono can be run on many software systems.

<span class="mw-page-title-main">FireMonkey</span>

FireMonkey is a cross-platform GUI framework developed by Embarcadero Technologies for use in Delphi, C++Builder or Python, using Object Pascal, C++ or Python to build cross-platform applications for Windows, macOS, iOS, and Android. A third-party library, FMX Linux, enables the building of FireMonkey applications on Linux.

A lock screen is a computer user interface element used by various operating systems. They regulate immediate access to a device by requiring the user to perform a certain action in order to receive access, such as entering a password, using a certain button combination, or performing a certain gesture using a device's touchscreen. There are various authentication methods to get past the lock screen, with the most popular and common ones being personal identification numbers (PINs), the Android pattern lock, and biometrics.

Besides the Linux distributions designed for general-purpose use on desktops and servers, distributions may be specialized for different purposes including computer architecture support, embedded systems, stability, security, localization to a specific region or language, targeting of specific user groups, support for real-time applications, or commitment to a given desktop environment. Furthermore, some distributions deliberately include only free software. As of 2015, over four hundred Linux distributions are actively developed, with about a dozen distributions being most popular for general-purpose use.

<span class="mw-page-title-main">3D Maze</span> Screensaver for Microsoft Windows

3D Maze is the name given to a screensaver, created in OpenGL, that was present in Microsoft Windows from Windows 95 until it was discontinued after Windows ME.

<span class="mw-page-title-main">Budgie (desktop environment)</span> Desktop environment for Unix-like operating systems

Budgie is an independent, free and open-source desktop environment for Linux and other Unix-like operating systems that targets the desktop metaphor. Budgie is developed by the Buddies of Budgie organization, which is composed of a team of contributors from Linux distributions such as Fedora, Debian, and Arch Linux. Its design emphasizes simplicity, minimalism, and elegance, while providing the means to extend or customize the desktop in various ways. Unlike desktop environments like Cinnamon, Budgie does not have a reference platform, and all distributions that ship Budgie are recommended to set defaults that best fit their desired user experience.

References

  1. "Changelog" . Retrieved 4 March 2024.
  2. "Debian XScreenSaver copyright list". 24 December 2020. Retrieved 24 December 2020.
  3. 1 2 "List of screen savers included in the XScreenSaver collection". 8 December 2020. Retrieved 24 December 2020.
  4. "XScreenSaver release history". 8 December 2020. Retrieved 24 December 2020.
  5. "Debian XScreenSaver package list". 24 December 2020. Retrieved 24 December 2020.
  6. "XScreenSaver: Windows Version". www.jwz.org. Retrieved 24 December 2020.
  7. 1 2 "jwz.org blog post about the iOS port". 19 June 2012. Retrieved 24 December 2020.
  8. "jwz.org blog post about the Android port". 23 May 2016. Retrieved 24 December 2020.
  9. "XScreenSaver FAQ regarding KDE/Gnome" . Retrieved 24 December 2020.
  10. "XScreenSaver source code distribution". 8 December 2020. Retrieved 24 December 2020.
  11. Campagna, Giovanni (21 March 2011). "Re: What is the status of the screensaver in GNOME3?". gnome-shell (Mailing list).
  12. "Linux Mint 19.1 Announcement". 20 December 2018. Retrieved 24 December 2020.
  13. "Gnome-Screensaver Key Flood". 16 April 2014. Retrieved 24 December 2020.
  14. "Cinnamon-Screensaver Key Flood". GitHub . 22 August 2014. Retrieved 24 December 2020.
  15. "CVE-2014-1949, Cinnamon-Screensaver Lock Bypass". 16 January 2015. Retrieved 24 December 2020.
  16. "Mandriva Security Advisory MDVSA-2015:162". 29 March 2015. Retrieved 24 December 2020.
  17. "CVE-2015-7496, Hold ESC to unlock Gnome-session GDM". 24 November 2015. Retrieved 18 January 2021.
  18. "CVE-2019-3010, Privilege Escalation in Oracle Solaris XScreenSaver fork". 23 October 2019. Retrieved 24 December 2020.
  19. "Cinnamon-screensaver lock by-pass via the virtual keyboard". GitHub . 15 January 2021. Retrieved 15 January 2021.
  20. "XScreenSaver: On Toolkit Dialogs". 19 October 2004. Retrieved 24 December 2020.
  21. "jwz.org blog post about Gnome security bugs". 4 April 2015. Retrieved 24 December 2020.
  22. "Sleep Mode: The Art of the Screensaver: Jamie Zawinski Interview". 27 January 2017. Retrieved 24 December 2020.