twang(6)

πŸ“¦
version 6.15 Β· 2 versions
, in alpine 3.24, arch rolling, nixpkgs unstable

πŸ’… twang(6) β€” like, the plucking-your-screen situation

okay bestie, welcome to twang, straight out of the XScreenSaver manual ✨ this is a little program that divides your screen into tiles and then, yeah, plucks them. it's giving string-instrument energy on a grid. iykyk πŸ’…


✨ NAME ✨

twang β€” pluck pieces of the screen 🎸


πŸ¦‹ SYNOPSIS πŸ¦‹

twang [--display host:display.screen] [--foreground color] [--background
color] [--window] [--root] [--window-id number] [--mono] [--install]
[--visual visual] [--shm] [--no-shm] [--delay usecs] [--duration secs]
[--border-color color] [--border-width integer] [--event-chance
fraction] [--friction fraction] [--springiness fraction] [--tile-size
integer] [--transference fraction] [--fps]

🌸 DESCRIPTION 🌸

So here's the whole vibe: twang takes the screen and chops it into equal-sized tiles, and then it plucks them in various ways 🫢. The tiles are affected by their neighbors, which means waves of motion literally flow through the grid β€” it's giving ripple-on-a-jumprope, and honestly? iconic 🌊✨

Little housekeeping note before we go any further: this manpage describes v1.3 of the program, fr fr.


πŸ’… OPTIONS πŸ’…

twang accepts the following options, and there are a lot of them, so buckle up buttercup:

  • --window β€” Draw on a newly-created window. This is the default, so if you don't say anything, this is what you get πŸ‘‘
  • --root β€” Draw on the root window.
  • --window-id number β€” Draw on the specified window, like, this exact one.
  • --mono β€” If on a color display, pretend we're on a monochrome display πŸ™ˆ (yes, pretend. it's a bit delulu but it slays on purpose)
  • --install β€” Install a private colormap for the window.
  • --visual visual β€” Which visual to use. Legal values are the name of a visual class, or the id number (decimal or hex) of a specific visual.
  • --shm, --no-shm β€” Use the shared memory extension (or not, respectively), if available. This may speed things up a bit, but probably won't make that much difference. If available, defaults to true, resource useSHM.
  • --delay microseconds β€” The interframe delay, in microseconds. Defaults to 10000, resource delay. ⏱️
  • --duration seconds β€” How long to run before loading a new image. Default 120 seconds.
  • --border-color color β€” Color of the border surrounding each tile. Defaults to blue, resource borderColor. πŸ”΅
  • --border-width integer β€” Width of the border surrounding each tile. Defaults to 3, resource borderWidth.
  • --event-chance fraction β€” The chance, per iteration, for an event to occur (such as tweaking the orientation of a tile), in the range 0..1. Defaults to 0.01, resource eventChance. 🎲
  • --friction fraction β€” How much friction there is in the system, in the range 0..1. This is the amount by which velocities are damped per iteration. Defaults to 0.05, resource friction.
  • --springiness fraction β€” How springy the tiles are, in the range 0..1. This is the fraction of an orientation that gets turned into a velocity towards the center (resting point). Defaults to 0.1, resource springiness. 🌱
  • --tile-size integer β€” Size (width and height) of each tile, not including the outer edge of the border. Defaults to 120, resource tileSize.
  • --transference fraction β€” How much a tile's neighbors affect it, in the range 0..1. This is the fraction of an orientation of a neighbor that gets turned into a velocity in the same direction. Defaults to 0.025, resource transference. 🫢
  • --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.

πŸŽ€ X RESOURCES πŸŽ€

There are resource equivalents for each option, noted above. yes, each one. we told you already, but we're telling you again because consistency is cute ✨


πŸ’€ BUGS πŸ’€

  • twang should have more interesting events. (lowkey true, no cap)
  • Ways of speeding it up need to be investigated. It's kinda sluggish, especially on hugeass displays. 😭
okay but like, fair warning, that second one is not me being cute, that's a real performance note. hugeass displays = pain. 🫠

πŸ”₯ SEE ALSO πŸ”₯


Copyright Β© 2002 by Dan Bornstein. All rights reserved.

Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. No representations are made about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty.

that's the legal bit verbatim, bestie β€” don't let me paraphrase the fine print πŸ’œ

🧚 AUTHOR 🧚

Dan Bornstein <danfuzz@milk.com>. πŸ“


and that's the whole thing!! this page came to you courtesy of X Version 11, version 6.15 (30-Mar-2026) β€” mwah, go pluck some tiles πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from