An interactive GTK3 fractal explorer for Linux, written in C with Cairo rendering. Pan, zoom, and tweak parameters live in a multithreaded preview, then export a 4K (3840×2160) PNG render with one click. Includes a built-in Customize Fractal workshop for building your own iterative maps, 2D attractors, and IFS (Iterated Function System) fractals from scratch.
Repository: https://github.com/igor101964/fractal_explorer
Mandelbrot z²+c — Fire palette | z·sin(z)+c — Psychedelic palette
Julia z²+c — Psychedelic palette, dark theme | Custom workshop — IFS: Barnsley Fern
Custom workshop — Attractor: Hopalong | Custom workshop — Iterative: |z|·z + c
More screenshots in screenshots/.
- 58 built-in fractal formulas across 8 families (Mandelbrot powers, Burning Ship variants, Julia sets, trigonometric/hyperbolic maps, Newton fractals, magnetic/Phoenix maps, polynomials, and quasi-fractals).
- A Customize Fractal workshop with 3 generator types (Iterative, 2D Attractors, IFS) and 17 starter templates, each with up to 4 free parameters.
- 16 color palettes, light/dark theme toggle.
- Live preview rendering on a background thread (UI stays responsive).
- One-click 4K PNG export ("Save 4K", 3840×2160).
- Pure C, GTK3 + Cairo — no external runtime dependencies beyond GTK3.
| # | Category | Formulas |
|---|---|---|
| 1–10 | Mandelbrot Powers | Mandelbrot z²+c, z³+c, z⁴+c, z⁵+c, z⁶+c, z⁸+c, z¹⁰+c, z¹²+c, z¹⁵+c, z²⁰+c |
| 11–14 | Burning Ship Family | Burning Ship, Buffalo, Celtic, Mandelbar (Tricorn) |
| 15–23 | Julia Sets | Julia z²+c, z³+c, z⁴+c, z⁵+c, Julia Burning Ship, Julia Buffalo, Julia Celtic, Julia Mandelbar, Julia Phoenix |
| 24–41 | Trigonometric / Hyperbolic | sin(z)+c, cos(z)+c, tan(z)+c, sinh(z)+c, cosh(z)+c, exp(z)+c, z·sin(z)+c, z·cos(z)+c, z²·sin(z)+c, z²·cos(z)+c, sin(z²)+c, cos(z²)+c, exp(sin(z))+c, sin(exp(z))+c, z·exp(z)+c, sinh(z²)+c, cosh(z²)+c, tanh(z)+c |
| 42–46 | Newton Methods | Newton z³−1, z⁴−1, z⁵−1, z⁶−1, z⁸−1 |
| 47–51 | Magnetic / Phoenix | Magnet Type 1, Magnet Type 2, Phoenix λ=−0.5, Manowar, Lambda z·(1−z)+c |
| 52–56 | Polynomials | z³+z²+c, z⁴+z²+c, z⁵+z³+c, z²+z+c, (z²+c)² |
| 57–58 | Quasi-Fractals | Wavy z²+c·sin, Fish z²+c/(1+z) |
| Generator type | Templates |
|---|---|
| Iterative (Mandelbrot-type) | z²+c·sin(z), z²+c·cos(z), z·sin(z)+c, |z|·z+c, z²/(z+1)+c, z²−|z|+c, (z²+c)·sin(z) |
| Attractor (2D systems) | Clifford (a=−1.4, b=1.6), De Jong (a=1.4, b=−2.3), Hopalong (a=0.4, b=1.0), Gingerbread, Tinkerbell (a=0.9, b=−0.6) |
| IFS (Iterated Function Systems) | Barnsley Fern, Sierpinski Triangle, Sierpinski Carpet, Tree, Dragon Curve |
Rainbow, Fire, Ocean, Psychedelic, Sunset, Matrix, Ice&Fire, Purple, Neon, Forest, Copper, Electric, Hot, Cool, Gray, Pastel.
- GCC (or another C11 compiler) and GNU Make
- pkg-config
- GTK3 development headers (
libgtk-3-dev) — this also pulls in Cairo, GLib, Pango and GdkPixbuf development headers - POSIX threads (
pthread, part of glibc) and libm (part of glibc)
No other third-party libraries are required.
Clone the repository:
git clone https://github.com/igor101964/fractal_explorer.git
cd fractal_explorerchmod +x install_deps.sh
./install_deps.sh
make
./fractal_explorerchmod +x install_deps_arm.sh
./install_deps_arm.sh
make
./fractal_explorerRendering at 4K is CPU-bound. On a Raspberry Pi 4B, expect noticeably slower previews and exports than on a desktop x86_64 machine, especially with high iteration counts.
sudo apt-get update
sudo apt-get install -y build-essential pkg-config libgtk-3-dev libcairo2-devThe project uses a single Makefile in the repository root.
make # build the release binary -> ./fractal_explorer
make debug # build with -g -O0 for debugging
make run # build (if needed) and launch the program
make clean # remove build artifactssudo make install # installs the binary + .desktop menu entry to /usr/local
make PREFIX=$HOME/.local install # or install to a user-writable prefix
make uninstall # remove the installed binary and menu entryAfter make install, the program also appears in your desktop's application
menu as Fractal Explorer (via fractal_explorer.desktop), in addition to
being runnable from the terminal as fractal_explorer.
Build options can be overridden on the command line, e.g. make CC=clang
or make DESTDIR=/tmp/pkgroot install for staged/packaged builds.
- Launch
./fractal_explorer. - Pick a Fractal from the library dropdown, or click 🎨 Customize Fractal to open the workshop and build your own from an Iterative / Attractor / IFS template.
- Adjust Iterations, Zoom, Center X/Y, and the Julia/parameter sliders — the preview re-renders live on a background thread.
- Pick a Palette and toggle Dark Theme to taste.
- Click 💾 Save 4K to export the current view as a 3840×2160 PNG.
- 🔄 Reset restores the default parameters for the current fractal.
fractal_explorer/
├── .github/
│ └── workflows/
│ └── build.yml # CI: build on Ubuntu 24.04/26.04 (x86_64) and arm64, lint
├── src/
│ └── fractal_explorer_v2.c # full application source (single file)
├── screenshots/ # example renders used in this README
├── Makefile # build / install / uninstall / debug / run
├── install_deps.sh # dependency installer — Ubuntu 24.04/26.04 LTS (x86_64)
├── install_deps_arm.sh # dependency installer — Raspberry Pi 4B (arm64)
├── fractal_explorer.desktop # application menu entry, installed by `make install`
├── .gitattributes # language detection (C / Shell / Makefile) for GitHub
├── .gitignore
├── CHANGELOG.md
├── LICENSE # MIT License
└── README.md
Released under the MIT License.
See CHANGELOG.md for release history.
Igor Lukyanov — Art2Dec SoftLab, June 2026 Repository: https://github.com/igor101964/fractal_explorer





