A Python implementation of the classic pipes.sh. Watch colorful pipes grow and spread across your terminal in mesmerizing patterns.
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.
pip install pipes-pyBuild 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.whlpipes-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-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.
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
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 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.
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 buildCode is in src/pipes/:
types.py- enums/dataclassesconfig.py- file I/Orenderer.py- drawingpipes.py- state__main__.py- CLI
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.
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