Basically pipes.sh but rewritten in Python
Project description
pipes.py
A Python implementation of the classic pipes.sh. Watch colorful pipes grow and spread across your terminal in mesmerizing patterns.
What's new in v2.0.0 ?!
Major rewrite. Here's what changed:
Tooling:
- Poetry → uv
- Added mypy (strict type checking)
- Added ruff (linter)
- Reorganized from
src/pipes/py/tosrc/pipes/
Code:
- Split into modules instead of one big file
- Full type hints
- Better architecture
Breaking:
- Needs Python 3.10+
- Module path changed (but CLI is same)
All CLI arguments work the same. Config format is backwards compatible.
Install
pip install pipes-py
Build from source:
git clone https://github.com/elliottophellia/pipes.py
cd pipes.py
uv build
pip install dist/pipes_py-2.0.0-py3-none-any.whl
Usage
pipes-py # basic
pipes-py -p 5 -f 60 # 5 pipes at 60 fps
pipes-py -R -P 2 # random start with curved pipes
pipes-py -p 3 -C -B # 3 pipes, no color, no bold
Options
-p, --pipes N number of pipes (default: 1)
-f, --fps N frames per second, 20-100 (default: 75)
-s, --steady N steadiness, 5-15 (default: 13)
-r, --limit N character limit before screen reset
-R, --random start pipes at random positions
-B, --no-bold disable bold characters
-C, --no-color disable colors
-P N pipe style 0-9 (default: 0)
-K, --keep-style keep pipe style when wrapping around screen
-S, --save-config save current settings as default
-v, --version show version
Quit with ? or ESC.
Interactive keys
While running:
O- decrease steadiness (more turns)P- increase steadiness (fewer turns)D- decrease FPS (slower)F- increase FPS (faster)B- toggle boldC- toggle colorK- toggle keep style on wrap
Pipe styles
10 styles available:
0- heavy box-drawing (┃┏┓┛━)1- curved (│╭╮╯─)2- light box-drawing (│┌┐┘─)3- double box-drawing (║╔╗╝═)4- knobby (|+-+)5- angles (|/-)6- dots (.o...)7- dots with o (.ooo.)8- slashes (-/|)9- mixed Unicode (╿┍┑┚╼)
Try them: pipes-py -P 1 -p 3
Config
Config location:
- Linux/macOS:
~/.config/pipes-py/config.json - Windows:
%LOCALAPPDATA%\pipes-py\config.json
{
"pipes": 1,
"fps": 75,
"steady": 13,
"limit": 2000,
"random_start": false,
"bold": true,
"color": true,
"keep_style": false,
"colors": [1, 2, 3, 4, 5, 6, 7, 0],
"pipe_types": [0]
}
Use -S to save current settings or edit the file directly.
Dev
git clone https://github.com/elliottophellia/pipes.py
cd pipes.py
uv sync
uv run python -m pipes
# checks
uv run ruff check src/pipes
uv run mypy src/pipes
# build
uv build
Code is in src/pipes/:
types.py- enums/dataclassesconfig.py- file I/Orenderer.py- drawingpipes.py- state__main__.py- CLI
License
This project is licensed under the Creative Commons Attribution Share Alike 4.0 International (CC-BY-SA-4.0). For more information, please refer to the LICENSE file included in this repository.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Write your amazing code
- Make sure pass
ruff checkandmypyfirst - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pipes_py-2.0.0.tar.gz.
File metadata
- Download URL: pipes_py-2.0.0.tar.gz
- Upload date:
- Size: 25.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4a7c8456e7e4b8781b97cc918e77a61f1c434c03f21fed41f0f5e18f92acd930
|
|
| MD5 |
525044cfd2d792211727cd8c7bcfcf77
|
|
| BLAKE2b-256 |
debb863bb639fbed9cb5e35be1ceaff530cf883769cfae2d4bd7698112757663
|
File details
Details for the file pipes_py-2.0.0-py3-none-any.whl.
File metadata
- Download URL: pipes_py-2.0.0-py3-none-any.whl
- Upload date:
- Size: 15.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dc43e35f566e4a78912868615b5647340fb32b2c5d6a1e0ff7bde56384583868
|
|
| MD5 |
e93f545ab4e43449414b5f2488d2fcb0
|
|
| BLAKE2b-256 |
d9077e4ce2cf3954303e4a6c294df1a91f8e05c3d7c5bdb17d1b1f705b3085e8
|