vermiculate-standalone/README.md
File Type: text/plain
Standalone version of Vermiculate, the XScreenSaver hack.
Rescued from the depths of the internet from an old XScreenSaver release, [found here](https://github.com/Zygo/xscreensaver/blob/e4fa2ac140f7bc56571373a7b7eb585fa4500e38/hacks/vermiculate.c).
Added a skeleton of a makefile. Tweaked some defaults. Played around. Put it on the internet. Enjoy.
## Building & Running
1. Get the code
2. `cd` into the code directory
3. `make`
4. `./vermiculate -instring "bmn1111#" -speed 50` (an instring is required until I can figure out why the defaults don't work)
I'm not really interested in adding an `install` target, so just run it from the code directory.
## Key Command / Instring Reference
*This is a work in progress, as I decipher the source code.*
### Main Keys
- `B` - Toggle bounce at border (default is to bounce)
- `C` - Bank Select Mode
- `T/Y/N` - Bank property set mode
- `E` - Toggle erasing of worm trails
- `M` - Make worms mode.
- `G` - Grid (maze) mode.
- `R` - Rotate border (border is only visible when 'bounce at border' is enabled)
- `1-9` - Set mode of all worms
- `P` - Randomize pallette
- `A` - Auto pallette (randomizes pallette when screen is cleared)
- `[` or `]` - Create or destroy worms
- `+` or `-` - Increase or decrease speed
- `*` or `/` - Increase or decrease curviness (affects type 5 worms)
- `[space]` - Clear the screen (useful after turning off 'erase')
- `Esc` - Quit
### Bank Select Mode Keys
- `1-9` - Select worm thread #1-9
- `+` or `-` - Cycle through selected worms
- `T[1-9]` - Select all worms of type 1-9
- `A` - Select all active worms
- `E` - Select all worm threads, including ones not currently active
- `[space]` - Add worms to selection, starting at #1
- `I` - invert current selection
- `#` or `Enter` - Exit select
### Bank Property Set Mode Keys
This mode initiates a bank select like pressing `C`, but will then toggle, set, or unset properties of the selected bank respectively. Instead of pressing enter after the bank select, it accepts one additional key after the bank select, to indicate which property to modify:
- `S` - Self-bounce
- `V` - VHFollow
- `R` - Realbounce
- `L` - Little
- `T` - Tailfollow
- `K` - Killwalls
### Make Worms Mode Keys
- `A` will add worms to the existing
- `N` starts adding them from scratch.
- Follow either `A` or `N` with the mode of each worm, `[1-9]` or `r` for randomly chosen mode. Will keep consuming key presses until you press `#` or enter.
- Example: `Mn1111rrrrr#` creates 4 mode-1 worms and 5 worms with random modes.
### Grid Mode Keys
- `[` or `]` - Increase or decrease grid density
- `+` or `-` - Increase or decrease grid square size
### Worm Modes
- `1` - Basic, straight-but squiggly worms
- `2` - Angular worms that turn based on a set angle
- `3` - Worms that go in a circle of a randomly-chosen size
- `4` - Spirally-worms
- `5` - Basic squiggly worms, but they honor the 'curviness' setting which controls how tightly they turn
- `6` - These seem to alternate between going straight and turning in a circle, making for random-looking spiral shapes
- `7` - Cloverleaf-shape worms
- `8` - Unused (worms just go straight)
- `9` - Unused (worms just go straight)
- `prey` - The above modes are ignored if 'prey' is enabled for a worm. If prey is turned on,
## Feeding the worms a startup sequence
Currently the default settings (i.e. when run with no parameters) don't seem to work right... Fortunately you can feed any of the above keystrokes into the `-instring` command line parameter. When interpreting strings, the `#` character is used in place of pressing enter. For example, the following will start up with 5 randomly-generated worms, and turn off border-bounce:
`./vermiculate -instring "bMnrrrrr#" -speed 50`
## Other startup parameters
You can also supply a window geometry or use the root window by adding `-geometry WIDTHxHEIGHT` or `-root`, respectively. (The latter doesn't seem to work, probably because this uses old Xorg code. Patches welcome.)