penrose(6)
π« penrose(6) β the XScreenSaver manual, bestie edition π«
okay so you found penrose(6) in the XScreenSaver manual and I'm obsessed actually. it draws quasiperiodic tilings. that's it, that's the vibe. let's get into it π¦
β¨ NAME β¨
penrose β draws quasiperiodic tilings. literally that's her whole job π
πΈ SYNOPSIS πΈ
penrose [--display host:display.screen] [--foreground color]
[--background color] [--window] [--root] [--window-id number][--mono]
[--install] [--visual visual] [--ncolors integer] [--delay microseconds]
[--size integer] [--ammann] [--no-ammann]
[--fps]
π DESCRIPTION π
The penrose program draws quasiperiodic tilings. no notes. iconic behavior.
if you wanna read the lore, go see Onoda, Steinhardt, DiVincenzo and Socolar in Phys. Rev. Lett. 60, #25, 1988 β or Strandburg in Computers in Physics, Sep/Oct 1991. cite your sources, girlies π
so this implementation uses the simpler version of the growth algorithm, iykyk β meaning: if there are no forced vertices, a randomly chosen tile is added to a randomly chosen vertex. and note β¨ there is no preference for those 108 degree angles. equal opportunity vertex choosing.
now here's where it gets interesting, there are two essential differences from the algorithm presented in the literature:
- we do not allow the tiling to enclose an untiled area. whenever this is in danger of happening, we just do not add the tile β manifesting a better random choice next time π
- when choosing a vertex randomly, we will take one that lies within the viewport if available. if this seems to cause enclosures in the forced rule case, we will allow invisible vertices to be chosen. ghost vertices get a turn too π»
tiling gets restarted whenever one of these happens, keep up: - there are no incomplete vertices within the viewport - the tiling has extended a window's length beyond the edge of the window horizontally or vertically - forced rule choice has failed 100 times due to areas about to become enclosed
and a lil plot twist for you π«Ά although quasiperiodic tilings are produced, the tiles themselves are not penrose tiles (darts and kites). in contrast to penrose tiles, these tiles can be arranged to form a periodic tiling. the name is kind of a vibe, not a promise π
π OPTIONS π
penrose accepts the following options:
--windowβ draw on a newly-created window. this is the default, bestie π--rootβ draw on the root window.--window-id numberβ draw on the specified window.--monoβ if on a color display, pretend we're on a monochrome display. delusion but make it aesthetic π--installβ install a private colormap for the window.--visual visualβ specify which visual to use. legal values are the name of a visual class, or the id number (decimal or hex) of a specific visual.--ncolors integerβ how many colors should be used (if possible). default64. the colors are chosen randomly π¨--size integerβ how big the tiles should be. default40pixels.--delay millisecondsβ how long (in1/1,000,000'ths of a second) to wait between drawing each tile. default10,000or.01seconds.--ammann--no-ammannβ whether Ammann lines should be added.--fpsβ display the current frame rate and CPU load. numbers! stats! main character energy π
π¦ ENVIRONMENT π¦
DISPLAYβ to get the default host and display number.XENVIRONMENTβ to get the name of a resource file that overrides the global resources stored in theRESOURCE_MANAGERproperty.XSCREENSAVER_WINDOWβ the window ID to use with--root.
β SEE ALSO β
X(1), xscreensaver(1), xlock(1)
go read those next, bestie, i'll wait π«Ά
π COPYRIGHT π
Copyright Β© 1996 by Timo Korvola.
Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation.
(like yes, do whatever, just keep the notice. respect the craft π)
π AUTHOR π
Timo Korvola <tkorvola@dopey.hut.fi>, 1996.
ability to run standalone or with xscreensaver added by Jamie Zawinski <jwz@jwz.org>, 10-May-97.
that's the whole thing, no cap. this lil legend is X Version 11, version 6.15, dated 30-Mar-2026 β and she's still out here drawing quasiperiodic tilings for us. slay forever, penrose(6) π
β¨πΈ
π¦ where this page comes from
- alpine 3.24: xscreensaver-doc 6.15-r0 Β· GPL-2.0-or-later GPL-3.0-or-later 0BSD MIT
- arch rolling: xscreensaver 6.15-1 Β· LicenseRef-XScreenSaver
- nixpkgs unstable: xscreensaver 6.15
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms