https://github.com/inunix3/rxpipes
2D recreation of the ancient Pipes screensaver for terminals.
https://github.com/inunix3/rxpipes
just-for-fun pipes rust screensaver terminal termwiz tui
Last synced: about 1 year ago
JSON representation
2D recreation of the ancient Pipes screensaver for terminals.
- Host: GitHub
- URL: https://github.com/inunix3/rxpipes
- Owner: inunix3
- License: mit
- Created: 2024-04-24T18:10:52.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-09-07T12:57:40.000Z (almost 2 years ago)
- Last Synced: 2025-04-10T15:04:42.993Z (about 1 year ago)
- Topics: just-for-fun, pipes, rust, screensaver, terminal, termwiz, tui
- Language: Rust
- Homepage: https://crates.io/crates/rxpipes
- Size: 173 KB
- Stars: 11
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
- awesome-tuis - rxpipes
README
# rxpipes
This program is a 2D screensaver which recreates the Pipes screensaver from old MS Windows versions.
## Features
- 6 available piece sets (see the [Piece Sets](#piece-sets) section to see them).
- Custom piece sets are supported.
- **Depth mode** - in this mode several layers of pipes are drawn, and when a new layer is created,
old pipes are made darker which gives a sense of depth. Usable only with RGB palette.
- Background color setting (by default transparent).
- Each pipe has its own color; available palettes are: none (colorless), base colors (16 colors
defined by your terminal) and RGB.
- There is a gradient mode for use with RGB palette.
- Stats widget - decoration that shows various pipe/piece/layer counters and the current pipe color.
- Changeable FPS (frames per second).
- The minimal and maximal length of pipes can be specified.
- The maximal number of drawn characters can be also specified. To ignore this setting specify 0
via CLI. The screen will be cleared when this number is reached.
- The probability of turning pipes is changeable, it's given as a percentage in decimal form (0 .. 1).
- It enters an alternate screen so it won't mess up your previous output (if your terminal does not
support alternate screen, see [Installation](#installation)).
## Screenshots
## Installation
You'll need the Rust toolchain ([rustup](https://rustup.rs/) or from system package repo) and make
sure it's up to date.
When the toolchain will be prepared, type `cargo install rxpipes`. If you want to disable the
alternate screen feature, add `--no-default-features` (currently, cargo does not support disabling
of individual features).
If you have installed successfully rxpipes, you can now run the it simply by typing `rxpipes`. If
the shell says that the command does not exists, make sure that `$HOME/.cargo/bin` (or whatever the
default cargo dir will be) is in the `PATH` environment variable.
To see all available options, pass `-h` or `--help`.
## Controls
| Key | Action |
|---------------------------------|-----------------------------|
| `q` / `Q` / `Escape` / `Ctrl-C` | Quit |
| `Space` | Pause |
| `c` | Clear screen |
| `s` | Show stats widget |
| `l` | Clear and redraw everything |
| `,` | Change speed by -1 |
| `.` | Change speed by +1 |
| `<` | Change speed by -10 |
| `>` | Change speed by +10 |
## Piece Sets
You can select a set by passing `-P ` to rxpipes.
| ID | Description | Image |
|----|---------------------------------|-----------------------------------|
| 0 | ASCII pipes |  |
| 1 | Thin dots |  |
| 2 | Bold dots |  |
| 3 | Thin pipes |  |
| 4 | Thin pipes with rounded corners |  |
| 5 | Double pipes |  |
| 6 | Bold pipes (default) |  |
*The look of the selected set may differ from the screenshots as it depends on the font that you use.*
To set your own piece set see the `-c`/`--custom-piece-set` flag in the help message (`-h`).
## Contribution
If you have found a problem or have a suggestion, feel free to open an issue or send a pull request.
I'd appreciate it.
## License
The rxpipes project is licensed under the [MIT license](LICENSE.md).