Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
XScreenSaver
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Screensaver software}} {{Use dmy dates|date=July 2021}} {{primary sources|date=August 2019}} {{Infobox software | name = XScreenSaver | author = [[Jamie Zawinski]] | developer = Jamie Zawinski | screenshot = Xscreensaver xmatrix.png | caption = XScreenSaver-demo and the [[XMatrix]] hack | released = {{Start date and age|1992|08|17|df=yes}} | latest release version = 6.10 | latest release date = {{Start date and age|2025|04|28}}<ref> {{cite web | url = https://www.jwz.org/xscreensaver/changelog.html | title = Changelog | access-date = 15 December 2024 }} </ref> | operating system = [[Unix-like|Unix]], [[macOS]], [[iOS]], [[Android (operating system)|Android]] | programming language = [[ANSI C]], [[X11]], [[OpenGL]] | genre = [[Screensaver]] | license = [[MIT License]]<ref> {{cite web | title = Debian XScreenSaver copyright list | date = 24 December 2020 | url = https://metadata.ftp-master.debian.org/changelogs//main/x/xscreensaver/xscreensaver_5.45+dfsg1-1_copyright | access-date = 24 December 2020 }}</ref> | website = {{URL|https://www.jwz.org/xscreensaver/ | jwz.org/xscreensaver/}} }} [[File:XScreensaver GLMatrix.webm|thumb|Xscreensaver "GLMatrix" Screensaver]] '''XScreenSaver''' is a [[free and open-source]] collection of 240+<ref name=screenshots> {{cite web | title = List of screen savers included in the XScreenSaver collection | date = 8 December 2020 | url = https://www.jwz.org/xscreensaver/screenshots/ | access-date = 24 December 2020 }} </ref> [[screensaver]]s for [[Unix-like|Unix]], [[macOS]], [[iOS]] and [[Android (operating system)|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.<ref> {{cite web | title = XScreenSaver release history | date = 8 December 2020 | url = https://www.jwz.org/xscreensaver/changelog.html | access-date = 24 December 2020 }} </ref> ==Platforms== The [[free software]] and [[open-source software|open-source]] [[Unix-like]] operating systems running the [[X Window System]] (such as [[Linux]] and [[FreeBSD]]) use XScreenSaver almost exclusively.{{citation needed|date=June 2017}} 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.<ref> {{cite web | title = Debian XScreenSaver package list | date = 24 December 2020 | url = https://packages.debian.org/unstable/x11/xscreensaver | access-date = 24 December 2020 }} </ref> On [[Mac (computer)|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 (operating system)|Android]] systems, the XScreenSaver display modes work either as normal screen savers (which Android sometimes refers to as "Daydreams") or as [[Wallpaper (computing)#Android|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"<ref> {{Cite web | url = https://www.jwz.org/xscreensaver/xscreensaver-windows.html | title = XScreenSaver: Windows Version | website = www.jwz.org | access-date = 24 December 2020 }} </ref> 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 (computing)|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 [[Sandbox (computer security)|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 [[X Window System|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. * To allow the X11-based hacks to run natively on [[macOS]] and [[iOS]], XScreenSaver contains a complete implementation of the [[X Window System|X11]] API built on top of [[Cocoa (API)|Cocoa]] ("jwxyz").<ref name=jwxyz> {{cite web | title=jwz.org blog post about the iOS port | date = 19 June 2012 | url = https://www.jwz.org/blog/2012/06/i-have-ported-xscreensaver-to-the-iphone/ | access-date = 24 December 2020 }} </ref> * To allow the OpenGL 1.3-based hacks to run natively on [[iOS]] and [[Android (operating system)|Android]] systems, which only support [[OpenGL ES]], XScreenSaver contains an implementation of the [[OpenGL]] 1.3 API built in top of [[OpenGL ES]] 1.0 ("jwzgles").{{r|jwxyz}} * And to allow the X11-based hacks to run natively on [[iOS]] and [[Android (operating system)|Android]], XScreenSaver also contains an implementation of the X11 API in terms of [[OpenGL ES]] 1.0.<ref> {{cite web | title=jwz.org blog post about the Android port | date = 23 May 2016 | url = https://www.jwz.org/blog/2016/05/xscreensaver-5-35/ | access-date = 24 December 2020 }} </ref> == Security == In addition to [[Sandbox (computer security)|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 [[KDE|kscreensaver]] screen-blanking frameworks by default instead of the framework included with XScreenSaver.<ref> {{cite web | title = XScreenSaver FAQ regarding KDE/Gnome | url = https://www.jwz.org/xscreensaver/faq.html#kde | access-date = 24 December 2020 }} </ref> In 2011, [[gnome-screensaver]] was forked as both [[MATE (software)|mate-screensaver]] and [[Cinnamon (desktop environment)|cinnamon-screensaver]]. Earlier versions of these frameworks still depended upon the XScreenSaver collection of screen savers, which is over 90% of the package.<ref> {{cite web | title = XScreenSaver source code distribution | date = 8 December 2020 | url = https://www.jwz.org/xscreensaver/download.html | access-date = 24 December 2020 }} </ref> However, in 2011, [[gnome-screensaver]] version 3 dropped support for screensavers completely, supporting only simple screen blanking,<ref> {{cite mailing list |url = http://mail.gnome.org/archives/gnome-shell-list/2011-March/msg00340.html |title = Re: What is the status of the screensaver in GNOME3? |first = Giovanni |last = Campagna |date = 21 March 2011 |mailing-list = gnome-shell }} </ref> and as of 2018, [[Linux Mint]]'s [[Cinnamon (software)|cinnamon-screensaver]] 4.0.8 no longer supports the XScreenSaver hacks.<ref> {{cite web | title = Linux Mint 19.1 Announcement | date = 20 December 2018 | url = https://blog.linuxmint.com/?p=3715 | access-date = 24 December 2020 }} </ref> 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.<ref> {{cite web | title = Gnome-Screensaver Key Flood | date = 16 April 2014 | url = https://bugs.launchpad.net/ubuntu/+source/unity/+bug/1308572 | access-date = 24 December 2020 }} </ref><ref> {{cite web | title = Cinnamon-Screensaver Key Flood | website = [[GitHub]] | date = 22 August 2014 | url = https://github.com/linuxmint/Cinnamon/issues/3443 | access-date = 24 December 2020 }} </ref><ref> {{cite web | title = CVE-2014-1949, Cinnamon-Screensaver Lock Bypass | date = 16 January 2015 | url = https://nvd.nist.gov/vuln/detail/CVE-2014-1949 | access-date = 24 December 2020 }} </ref><ref> {{cite web | title = Mandriva Security Advisory MDVSA-2015:162 | date = 29 March 2015 | url = https://www.securityfocus.com/archive/1/535119/30/0/ | access-date = 24 December 2020 }} </ref><ref> {{cite web | title = CVE-2015-7496, Hold ESC to unlock Gnome-session GDM | date = 24 November 2015 | url = https://nvd.nist.gov/vuln/detail/CVE-2015-7496 | access-date = 18 January 2021 }} </ref><ref> {{cite web | title = CVE-2019-3010, Privilege Escalation in Oracle Solaris XScreenSaver fork | date = 23 October 2019 | url = https://nvd.nist.gov/vuln/detail/CVE-2019-3010 | access-date = 24 December 2020 }} </ref><ref> {{cite web | title = Cinnamon-screensaver lock by-pass via the virtual keyboard | website = [[GitHub]] | date = 15 January 2021 | url = https://github.com/linuxmint/cinnamon-screensaver/issues/354 | access-date = 15 January 2021 }} </ref> In 2004, Zawinski had written about the architectural decisions made in XScreenSaver with the goal of avoiding this very class of bug, <ref> {{cite web | title = XScreenSaver: On Toolkit Dialogs | date = 19 October 2004 | url = https://www.jwz.org/xscreensaver/toolkits.html | access-date = 24 December 2020 }} </ref> 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."<ref> {{cite web | title = jwz.org blog post about Gnome security bugs | date = 4 April 2015 | url = https://www.jwz.org/blog/2015/04/i-told-you-so-again/ | access-date = 24 December 2020 }} </ref> == Display modes == The included hacks are highly varied, ranging from simple 2D [[Psychedelic art|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:{{r|screenshots}} *''Atlantis'' – an [[OpenGL]] animation showing whales and dolphins. *''BSOD'' – shows fake fatal [[screen of death]] variants from many computer systems, including [[Microsoft Windows]] [[Blue Screen of Death]], a Linux [[kernel panic]], a [[Darwin (operating system)|Darwin]] crash, an [[Amiga]] "[[Guru Meditation]]" error, a [[sad Mac]], and more. *''Apple2'' – simulates an [[Apple II]] computer, showing a user entering a simple [[BASIC]] program and running it. When run from the command-line, it is a fully functional [[terminal emulator]] (as is ''Phosphor''.) *''Barcode'' – a number of coloured [[barcode]]s scroll across the screen. *''Flow'' – a 3D display of [[strange attractor]]s. *''Flying toasters'' – 3D toasters fly around, inspired by the classic [[After Dark (software)|After Dark]] screensaver. *''Gears'' – an OpenGL animation of inter-meshing [[gear]]s and [[planetary gear]]s. *''GLMatrix'' – an OpenGL animation similar to the "[[Matrix digital rain|digital rain]]" title sequence seen in the [[Matrix trilogy]]. *''Molecule'' – an OpenGL animation showing [[space-filling model|space-filling]] or [[ball-and-stick model|ball-and-stick]] models of a series of common drugs and other molecules, of which thirty-eight (38) are built in. It can also read [[Protein Data Bank|PDB (Protein Data Bank)]] from a file, or files placed in a directory, as input. *''Penrose'' – tiles the screen aperiodically with coloured [[Penrose tile]]s. *''Spotlight'' – puts a moving spotlight across the desktop in the style of the [[James Bond]] film opening sequences. *''Sproingies'' – an animation in the style of the video game ''[[Q*bert]]''. *''Webcollage'' – creates collages out of random images found on the Web. *''XAnalogTV'' – simulates an analog [[cathode-ray tube]] television set, including visual artifacts and reception issues. *''XPlanet'' – draws [[planet]]s and other celestial bodies that update in real time. *''XMatrix'' – animations similar to the "[[Matrix digital rain|digital rain]]" sequence seen in the [[Matrix trilogy]]. Some of the included hacks are very similar to [[demo effect]]s created by the [[demoscene]]: * ''Boing'' – based on the 1984 program regarded as the first [[Amiga demo]] ever, showing the bouncing red and white ball. * ''Bumps'' – an implementation of full-screen 2D [[bump mapping]]. * ''[[Metaballs]]'' – another common demo effect. * ''Moire2'' – moving [[moiré pattern|interference circles]] similar to those common in older Amiga demos. * ''ShadeBobs'' – another effect common in older Amiga demos. * ''XFlame'' – the filter-based fire effect, also known as flame effect. == See also == XScreenSaver was featured in '''Sleep Mode: The Art of the Screensaver''',<ref> {{cite web | title = Sleep Mode: The Art of the Screensaver: Jamie Zawinski Interview | date = 27 January 2017 | url = https://sleepmode.hetnieuweinstituut.nl/en/jamie-zawinski | access-date = 24 December 2020 }} </ref> a gallery exhibition curated by [[Rafaël Rozendaal]] at Rotterdam's [[Het Nieuwe Instituut]] in 2017. == References == {{Reflist}} == External links == * {{Commons category-inline|XScreenSaver}} * {{Official website|https://www.jwz.org/xscreensaver/}} * {{Freshmeat|xscreensaver|XScreenSaver}} {{Portal bar|Linux|Free and open-source software}} [[Category:Screensavers]] [[Category:Utilities for macOS]] [[Category:X Window programs]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Citation needed
(
edit
)
Template:Cite mailing list
(
edit
)
Template:Cite web
(
edit
)
Template:Commons category-inline
(
edit
)
Template:Freshmeat
(
edit
)
Template:Infobox
(
edit
)
Template:Infobox software
(
edit
)
Template:Main other
(
edit
)
Template:Official website
(
edit
)
Template:Portal bar
(
edit
)
Template:Primary sources
(
edit
)
Template:R
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Template other
(
edit
)
Template:Use dmy dates
(
edit
)