Terminal Mandelbrot fractal viewer
Python
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
almonds
misc/logo
.gitignore
.travis.yml
readme.md
readme_pypi.rst
setup.py

readme.md

logo

PyPI Codacy Travis-CI Tag



Features

  • Fully fledged Mandelbrot viewer, in your terminal
  • Now compatible with the native Windows console!
  • Julia sets
  • Homemade terminal UI
  • 8 color ANSI mode with dithering
  • 256 color mode
  • Parallelized using multiprocessing
  • Multiple palettes, adaptive mode
  • Save and load capabilities
  • Available in standalone, source compatible with Python 2 & 3
  • Infinite fun from the comfort of your terminal

Running

Using PIP

Just run:

$ pip install almonds
$ almonds

On non-Cygwin Windows, you will still have to install the unofficial curses module (see From source)

From source

Clone the repo:

$ git clone https://github.com/Tenchi2xh/Almonds.git
$ cd Almonds

On OS X, Linux and Cygwin:

$ pip install Pillow
$ python -m almonds.main

(For Cygwin, mintty or babun are recommended)

On Windows, download the curses module from the Unofficial Windows Binaries for Python Extension Packages (a curses implementation for Windows based on PDCurses), then run:

> pip install curses‑2.2‑cp27‑none‑win32.whl
> pip install Pillow
> python -m almonds.main

The font Envy Code R is highly recommended. If your terminal emulator supports it, try to reduce the line spacing so that the box drawing characters touch. When using another font, the appearance of the fractal may seem squashed because the width to height ratio of the character are different; try to adjust it using the argument --ratio (see Usage).

Using PyPy will make the hi-res captures faster, but the terminal navigation slower.

Usage

                                                                             
                ██                                                           
          ██  ██████  ██   .d8b.  db                              db         
            ██████████    d8' `8b 88 .88b  d88. .d88b. .888b  .d8888 .d8888  
      ██  ██████████████  88ooo88 88 88  88  88 8P  Y8 88  88 88  88 `8bo.   
  ████████████████████    88   88 88 88  88  88 8b  d8 88  88 88  8D   `Y8b  
      ██  ██████████████  YP   YP YP YP  YP  YP `Y88P' VP  VP Y888D' `8888Y  
            ██████████                                                       
          ██  ██████  ██    T e r m i n a l   f r a c t a l   v i e w e r    
                ██                                                           
                                                                             
usage: almonds [-h] [-p N] [-r RATIO | -d W H] [-z] [save]

version 1.20b

positional arguments:
  save                          path of a save to load

optional arguments:
  -h, --help                    show this help message and exit
  -p N, --processes N           number of concurrent processes
  -r RATIO, --char-ratio RATIO  width to height ratio of the terminal characters
  -d W H, --dimensions W H      width and height of the terminal characters
  -z, --qwertz                  swap the "z" and "y" keys

Controls

Keys Action
, , , Move around
C, V Adjust move speed
Input manual coordinates
Y, U Zoom / Un-zoom
I, O Increase / Decrase number of iterations
J Enter / Leave Julia set
P Next palette
D Color mode (256 colors / 8 colors ANSI / 8 colors ASCII)
R Reverse palette order
A Palette mode (Normal / Adaptive)
Z Launch palette cycling animation
H Capture current view in a high-resolution PNG file
X Show / Hide crosshairs
T Toggle UI theme (Dark / Light)
S Save all current settings and view
L Load a previous save
ESC, CTRL+C Exit

Screenshots

screen shot 2015-10-28 at 21 51 50

Mandelbrot in your terminal, now in 256 colors!



screen shot 2015-10-28 at 21 56 13

Rendering a capture with the editor's light theme and 8-color dithered ANSI mode.



screen shot 2015-10-28 at 22 06 42

Almonds in Julia mode. The load menu sports a very sophisticated scrollbar.



screen shot 2015-10-28 at 22 02 26

Discovering a mini-brot. At this level of deep zoom, the adaptive palette mode is very handy.



screen shot 2015-10-30 at 13 18 45


Now running in native Windows terminals! (Notice the stretching because the default terminal font for windows is 8 by 12 pixels, try running with `-d 8 12` for a perfect display)


Renders

almonds_2015-10-18_02-11-52

almonds_2015-10-17_16-47-52

almonds_2015-10-28_22-08-20

almonds_2015-10-28_19-49-27

almonds_2015-10-18_01-51-37

TODO

  • Finish documenting
  • Separate options in two tabs ?
  • Press SPACE to hide log
  • New project idea: full-fledged python module for making cursebox UI applications
  • PyPI package