Skip to main content

An aquarium/sea animation in ASCII art for your terminal

Project description

๐Ÿ  Asciiquarium - Python Edition


๐ŸŒ Website โ€ข ๐Ÿ“ฆ PyPI โ€ข ๐Ÿš€ Quick Start โ€ข ๐Ÿ’ฌ Support



An aquarium/sea animation in ASCII art for your terminal! This is a Python reimplementation of the classic Perl asciiquarium, designed to work cross-platform on Windows, Linux, and macOS.

Asciiquarium

โœจ Features

  • ๐ŸŸ Multiple fish species with different sizes and colors
  • ๐Ÿฆˆ Sharks that hunt small fish
  • ๐Ÿ‹ Whales with animated water spouts
  • ๐Ÿšข Ships sailing on the surface
  • ๐Ÿ™ Sea monsters lurking in the depths
  • ๐ŸŒŠ Animated blue water lines and seaweed
  • ๐Ÿฐ Castle decoration
  • ๐Ÿ’™ Blue bubbles rising from fish
  • ๐Ÿค Feed the fish with F and watch them chase the flakes down
  • ๐ŸŽจ Full color support
  • โŒจ๏ธ Interactive controls
  • ๐ŸŒ Cross-platform (Windows, Linux, macOS)

๐Ÿš€ Installation

Using pip (Standard)

pip install asciiquarium

Using pipx (Isolated)

pipx installs the package in an isolated environment:

pipx install asciiquarium

๐ŸŽฏ Usage

After installation, simply run:

asciiquarium

That's it! Enjoy your ASCII aquarium! ๐Ÿ 

๐ŸŽฎ Controls

  • Q or q - Quit the aquarium
  • P or p - Pause/unpause the animation
  • R or r - Redraw and respawn all entities
  • F or f - Drop a flake of food (up to 10 at a time)
  • I or i - Show/hide info overlay

๐Ÿ“‹ Requirements

  • Python 3.8+ - Works with Python 3.8 through 3.14+
  • Terminal - Any terminal with color support (minimum 40x15, recommended 80x24)
  • Dependencies - Automatically handled:
    • windows-curses - Auto-installed on Windows (Python < 3.13)
    • curses - Built-in on Linux/macOS

Python 3.13+ Support

For Python 3.13+ on Windows, you may need to install windows-curses manually:

pip install windows-curses

If you encounter issues, consider using Python 3.12 or earlier for the most stable experience.

๐ŸŒ Platform Support

Platform Status Notes
๐ŸชŸ Windows โœ… Fully Supported Auto-installs windows-curses
๐Ÿง Linux โœ… Fully Supported Uses built-in curses
๐ŸŽ macOS โœ… Fully Supported Uses built-in curses

๐Ÿ“ฆ What Gets Installed

The package includes:

  • Main application and animation engine
  • All entity types (fish, sharks, whales, ships, etc.)
  • ASCII art designs and color schemes
  • Cross-platform terminal handling

Size: ~50KB (minimal footprint!)

๐Ÿ› ๏ธ Development Installation

If you want to contribute or modify the code:

# Clone the repository
git clone https://github.com/MKAbuMattar/asciiquarium-python.git
cd asciiquarium-python

# Install in editable mode with development dependencies
uv pip install -e ".[dev]"

# Run from source
python -m asciiquarium.main

Development Requirements

Before submitting any changes, run the same three commands CI does. All three are clean on main, so anything they report came from your change:

uvx ruff check asciiquarium tests
uvx mypy --ignore-missing-imports asciiquarium
uvx pytest -q

The tests need no terminal โ€” they cover the geometry, the art invariants and the version arithmetic. They cannot tell you whether the aquarium looks right: for that, run it at 80ร—24 and at the 40ร—15 minimum, with and without --classic, and press r. See .github/CONTRIBUTING.md.

๐ŸŒŸ Features Details

Cross-Platform Support

This implementation uses Python's curses library and automatically installs windows-curses on Windows systems, making it truly cross-platform.

Entity Types

  • Fish: 12 designs with unique ASCII art and swimming patterns (8 ported from the Perl original, 4 new โ€” --classic shows only the original 8)
  • Sharks: Predators that hunt and eat smaller fish with collision detection
  • Whales: Large creatures with animated water spout effects
  • Ships: Sail across the surface of the water
  • Sea Monsters: Mysterious creatures lurking in the depths
  • Big Fish: Large colorful fish with randomized color schemes
  • Environment: Seaweed, castle decorations, and blue water lines
  • Bubbles: Rise from fish in blue color

Animation Features

  • Animation: roughly 10 frames per second, paced by the 100 ms input timeout
  • Z-depth Layering: Proper entity overlapping
  • Color Masking: Detailed multi-color ASCII art
  • Frame Animation: Multi-frame animations for complex entities
  • Collision Detection: Sharks interact with small fish
  • Auto Cleanup: Off-screen entities are automatically removed

๐Ÿ“ Project Structure

asciiquarium-python/
โ”œโ”€โ”€ asciiquarium/
โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”œโ”€โ”€ __version__.py       # Single source of truth for the version
โ”‚   โ”œโ”€โ”€ main.py              # CLI entry point, argparse, --info
โ”‚   โ”œโ”€โ”€ entity.py            # Base entity class
โ”‚   โ”œโ”€โ”€ animation.py         # Animation engine, depth map, draw loop
โ”‚   โ”œโ”€โ”€ version_checker.py   # PyPI update poll
โ”‚   โ””โ”€โ”€ entities/
โ”‚       โ”œโ”€โ”€ __init__.py
โ”‚       โ”œโ”€โ”€ fish.py          # Fish designs, bubbles, feeding behaviour
โ”‚       โ”œโ”€โ”€ food.py          # Food flakes
โ”‚       โ”œโ”€โ”€ environment.py   # Waterlines, castle, seaweed
โ”‚       โ””โ”€โ”€ special.py       # Sharks, whales, ships, monsters, ducks, ...
โ”œโ”€โ”€ tests/                   # No terminal required
โ”œโ”€โ”€ scripts/release_version.py
โ”œโ”€โ”€ .github/workflows/       # validate.yml, release.yml
โ”œโ”€โ”€ AGENTS.md                # How to work in this repo
โ”œโ”€โ”€ ROADMAP.md               # What is queued next
โ”œโ”€โ”€ CHANGELOG.md
โ”œโ”€โ”€ pyproject.toml
โ”œโ”€โ”€ uv.lock
โ””โ”€โ”€ README.md

๐ŸŽจ Customization

You can easily add new entities by creating them in the appropriate module:

from asciiquarium.entity import Entity

def add_my_entity(old_ent, anim):
    anim.new_entity(
        entity_type='my_type',
        shape=my_ascii_art,
        color=my_color_mask,
        position=[x, y, z],
        callback_args=[dx, dy, dz, frame_speed],
        die_offscreen=True,
        death_cb=add_my_entity,
    )

๐Ÿ› Troubleshooting

Command Not Found

If asciiquarium command is not found after installation:

On Windows:

# Add Python Scripts to PATH
python -m asciiquarium.main

On Linux/macOS:

# Make sure ~/.local/bin is in PATH
export PATH="$HOME/.local/bin:$PATH"
asciiquarium

Windows Issues

The windows-curses package is automatically installed on Windows. If you encounter issues:

pip install --upgrade windows-curses

Terminal Size

Minimum terminal size: 80 columns ร— 24 rows

Check your terminal size and resize if needed.

Color Support

Most modern terminals support colors. If colors don't appear:

  • Ensure your terminal emulator supports ANSI colors
  • Try a different terminal (Windows Terminal, iTerm2, GNOME Terminal, etc.)

Python Version

Make sure you're using Python 3.8 or higher:

python --version

๐Ÿ’ก Tips

  • Full Screen: Press F11 in most terminals for fullscreen mode
  • Better Experience: Use a larger terminal window for more entities
  • Dark Theme: Works best with dark terminal backgrounds
  • Font: Use a monospace font for best ASCII art rendering

๐Ÿ“œ License

GPL-3.0-or-later

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

๐Ÿ™ Credits

Original Asciiquarium

Python Port

All ASCII art designs and animation concepts are credited to the original author, Kirk Baucom. This Python port maintains the spirit and fun of the original while providing modern cross-platform compatibility.

๐Ÿ”— Links

๐Ÿค Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Made with โค๏ธ by Mohammad Abu Mattar
Based on the original Perl ASCIIQuarium by Kirk Baucom

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

asciiquarium-2.3.1.tar.gz (37.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

asciiquarium-2.3.1-py3-none-any.whl (40.7 kB view details)

Uploaded Python 3

File details

Details for the file asciiquarium-2.3.1.tar.gz.

File metadata

  • Download URL: asciiquarium-2.3.1.tar.gz
  • Upload date:
  • Size: 37.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for asciiquarium-2.3.1.tar.gz
Algorithm Hash digest
SHA256 51db23ca96aa9993de564524bab04cc6c18b2e4529e955ef82271593e78ddba7
MD5 0c917fc28ebdc303925744a669bd88c8
BLAKE2b-256 be393e4c39e0a14d526394cfa24e8248f8a7c3b63ddf03a9220338bd58ff92be

See more details on using hashes here.

File details

Details for the file asciiquarium-2.3.1-py3-none-any.whl.

File metadata

  • Download URL: asciiquarium-2.3.1-py3-none-any.whl
  • Upload date:
  • Size: 40.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for asciiquarium-2.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a801fa8e4e25c6f5cf223c164df3b362c8c769ea1d3d41ac3562ca5cff0b37f3
MD5 69b2fcbe070b773f81ee93beecdf3261
BLAKE2b-256 cdf45792b5254344f77f87ad17ad7ccccfe2fd71a24c6d9f8251b4875dc6bf18

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page