penrose(6x)

πŸ’– penrose(6x) πŸ’– β€” like, the whole manual, no notes πŸ’…

okay so hi bestie 🌸 this is the manual page for penrose ✨ from the XScreenSaver manual, section 6x, and it's literally just a little program that draws quasiperiodic tilings. that's it. that's the vibe. πŸ”₯


✨ NAME ✨

penrose β€” draws quasiperiodic tilings πŸ¦‹


πŸ’« 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 πŸŽ€

so the penrose program draws quasiperiodic tilings. periodt. πŸ’–

if you want the actual ✨academic✨ receipts, go read Onoda, Steinhardt, DiVincenzo and Socolar in Phys. Rev. Lett. 60, #25, 1988, or Strandburg in Computers in Physics, Sep/Oct 1991. not me citing journals like it's a group project, but here we are πŸ“š

this implementation uses the simpler version of the growth algorithm, i.e., if there are no forced vertices, a randomly chosen tile is added to a randomly chosen vertex (no preference for those 108 degree angles). she's lowkey chaotic but she works ✨

now, there are two essential differences to the algorithm presented in the literature, and you need to know both:

  • First β€” 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, hoping for a better random choice the next time. it's giving "not today" energy πŸ™ˆ
  • Second β€” when choosing a vertex randomly, we will take one that lies within the viewport if available πŸ‘€. and if this seems to cause enclosures in the forced rule case, we will allow invisible vertices to be chosen. she adapts. she's flexible. main character energy fr fr πŸ’…
⚠️ heads up bestie: the tiling gets restarted whenever one of these happens β€” there are no incomplete vertices within the viewport, or the tiling has extended a window's length beyond the edge of the window horizontally or vertically, or forced rule choice has failed 100 times due to areas about to become enclosed. so if it suddenly goes back to the beginning, that's not a bug, that's the algorithm being the algorithm 😭

and here's the part that trips everyone up: 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. iconic behavior honestly, they said "we're not like other tiles" πŸ’€


🌈 OPTIONS 🌈

penrose accepts the following options:

  • --window β€” draw on a newly-created window. this is the default, so if you do nothing, you get this πŸ’–
  • --root β€” draw on the root window πŸ‘‘
  • --window-id number β€” draw on the specified window. specific queen behavior 🎯
  • --mono β€” if you're on a color display, this makes it pretend we're on a monochrome display. monochrome era πŸ–€πŸ€
  • --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). Default 64. the colors are chosen randomly, so it's a surprise every single time 🎲✨
  • --size integer β€” how big the tiles should be. Default 40 pixels πŸ“
  • --delay milliseconds β€” how long (in 1/1,000,000'ths of a second) to wait between drawing each tile. Default 10,000 or .01 seconds ⏱️ (yeah the math is mathing weird there but that's literally what the page says, I'm just the messenger πŸ’…)
  • --ammann
  • --no-ammann β€” whether Ammann lines should be added 🧡
  • --fps β€” display the current frame rate and CPU load πŸ“Š

🫢 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 the RESOURCE_MANAGER property πŸ“
  • XSCREENSAVER_WINDOW β€” the window ID to use with --root πŸͺŸ

πŸ”₯ SEE ALSO πŸ”₯

X(1), xscreensaver(1), xlock(1) β€” go read your other favs, they're all connected iykyk πŸ’«


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. 🫢 (yes bestie, keeping the whole legal bit, no cuts, that's the rule ✨)


πŸ‘‘ 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. 🌟


and that's the whole page bestie, we ate and left no crumbs πŸ“

kisses, this was X Version 11, 6.17-1.fc44, dated 13-Oct-2026 β€” slay, go draw some tilings πŸ’…βœ¨πŸ¦‹

πŸ“¦ where this page comes from