{"id":26578814,"url":"https://github.com/pprunty/manim-interactive","last_synced_at":"2026-04-27T12:35:21.221Z","repository":{"id":273855641,"uuid":"921079172","full_name":"pprunty/manim-interactive","owner":"pprunty","description":"A wrapper for the Manim Animation Library; enabling interactive animation workflows. Used for my YouTube channel, Pixel Projects.","archived":false,"fork":false,"pushed_at":"2025-02-28T10:47:07.000Z","size":17737,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-28T17:21:16.254Z","etag":null,"topics":["animation","manim","python"],"latest_commit_sha":null,"homepage":"https://www.youtube.com/@pixelprojects1","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pprunty.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-23T09:49:49.000Z","updated_at":"2025-02-28T10:47:11.000Z","dependencies_parsed_at":"2025-02-28T11:47:42.105Z","dependency_job_id":null,"html_url":"https://github.com/pprunty/manim-interactive","commit_stats":null,"previous_names":["pprunty/manim-interactive"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pprunty%2Fmanim-interactive","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pprunty%2Fmanim-interactive/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pprunty%2Fmanim-interactive/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pprunty%2Fmanim-interactive/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pprunty","download_url":"https://codeload.github.com/pprunty/manim-interactive/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245056902,"owners_count":20553856,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["animation","manim","python"],"created_at":"2025-03-23T05:17:07.664Z","updated_at":"2026-04-27T12:35:16.180Z","avatar_url":"https://github.com/pprunty.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Manim Interactive\n\n\u003e **Version:** v1.0.0  \n\u003e **Supported Platform:** macOS (currently)\n\nManim Interactive is an enhanced interactive development environment built on top of [Manim](https://github.com/3b1b/manim). It provides a streamlined workflow for creating mathematical animations using an interactive window, a convenient Makefile, and integrated support for Sublime Text Editor.\n\n\u003e [!IMPORTANT]  \n\u003e I'm exploring the possibility of creating an Electron app for Manim Interactive. This would allow users to run Manim natively \n\u003e on desktop platforms, leveraging the local system's resources for faster rendering (web application rendering does not make sense here due to resource requirements). If you're interested in this project, \n\u003e please contact me via [X](https://twitter.com/pprunty_) or [E-mail](mailto:patrickprunty.business@gmail.com).\n \n\n\n\nhttps://github.com/user-attachments/assets/b5b6ae7f-8412-4660-bcaa-9e88a33b19b6\n\n\n\n---\n\n## Table of Contents\n- [Overview](#overview)\n- [Why Manim](#why-manim)\n- [Pre-Requisites](#pre-requisites)\n- [Installation](#installation)\n    - [Step 1: Clone the Repository](#step-1-clone-the-repository)\n    - [Step 2: Install Dependencies](#step-2-install-dependencies)\n    - [Step 3: Verify Installation](#step-3-verify-installation)\n- [Using the Makefile](#using-the-makefile)\n- [Running Animations](#running-animations)\n  - [Keyboard Controls](#keyboard-controls)\n- [Running Interactive Animations with Sublime Text Editor](#running-interactive-animations-with-sublime-text-editor)\n  - [Using Manim Key Bindings](#using-manim-key-bindings)\n- [Exporting Animations](#exporting-animations)\n- [Resolution Shortcuts](#resolution-shortcuts)\n- [Upgrading Manim](#upgrading-manim)\n- [Hacking the Manim Library](#hacking-the-manim-library)\n- [Troubleshooting](#troubleshooting)\n- [Contributing](#contributing)\n- [License](#license)\n\n---\n\n## Overview\nManim Interactive is designed to make it easier to create animations using Manim; the animation software developed by \nGrant Sanderson for his YouTube channel [3blue1brown](https://www.youtube.com/channel/UCYO_jab_esuFRV4b17AJtAw). With an interactive setup, a simple Makefile, and integration with Sublime Text, you can rapidly prototype and render mathematical animations in high quality.\n\nBy the end of this guide, you’ll know how to:\n- Create and run animations interactively.\n- Configure and export high-resolution videos.\n- Customize your workflow using keyboard shortcuts and Sublime Text integrations.\n\nThis is also the project I use to create videos for my YouTube channel, [Pixel Projects](https://www.youtube.com/channel/UC5OToaksgWe-pjkgqPkUZkw?sub_confirmation=1). To see the animations in action, check out the channel and the \ncorresponding code in this repository, under `projects/2025/`.\n\n---\n\n## Why Manim\nManim is a powerful Python library originally designed for mathematical animations. It offers:\n- **Ease of Use:** Lower learning curve compared to commercial tools.\n- **Flexibility:** Full control over animation elements with Python.\n- **Open-Source Freedom:** Modify and extend the code to fit your needs.\n\n\u003e [!NOTE] \n\u003e This project currently supports macOS only.\n\n---\n\n## Pre-Requisites\nBefore proceeding, ensure you have:\n1. [Sublime Text Editor](https://www.sublimetext.com/)\n2. [Homebrew](https://brew.sh/)\n3. A [GitHub account](https://github.com/)\n4. [Rectangle](#) (optional, for window management)\n5. A [MacBook](#) (required for macOS support)\n\n---\n\n## Installation\n\n## Step 1\n\n### Step 1: Clone the Repository\n\n```bash\ngit clone https://github.com/pprunty/manim-interactive.git\n```\n\n### Step 2: Install Dependencies\n\nThe repository includes a `Makefile` that automates setup. Run:\n\n```bash\nmake install\n```\n\nThis command will:\n\n1. Install `ffmpeg` and `mactex` using Homebrew.\n2. Set up Manim in editable mode using Python's `pip`.\n3. Install `setuptools` (required for manimgl).\n4. Update the `custom_config.yml` with your local paths.\n\n## Step 3: Verify Installation\n\nConfirm the `manimgl` command is available:\n\n```bash\nmanimgl --help\n```\n\n---\n\n# Using the Makefile\n\nThe Makefile provides shortcuts for common tasks. To see available commands, run:\n\n```bash\nmake --help\n```\n\nOutput:\n\n```txt\nUsage: make [target]\n\nTargets:\n  help            Display this help message\n  install         Install dependencies and set up Manim in editable mode\n  config          Configure custom settings for Manim\n  upgrade         Upgrade the Manim library to the latest version\n  interactive     Run an interactive animation\n  run             Run an animation (make run f=\u003cfile\u003e [s=\u003cscene\u003e])\n  export          Export an animation as a video (make export f=\u003cfile\u003e s=\u003cscene\u003e)\n  sublime         Configure Sublime Text with custom Manim commands\n  short           Update resolution for short-form videos (2160x3840)\n  video           Update resolution for standard videos (3840x2160)\n\nInteractive Target Usage:\n  make interactive f=\u003cfile\u003e [s=\u003cscene\u003e]\n    f=\u003cfile\u003e      Path to the Python file containing the animation\n    s=\u003cscene\u003e     Name of the scene to render\n```\n\nCommon targets include:\n\n* `install` – Set up dependencies.\n* `run` – Run an animation.\n* `interactive` – Launch an interactive animation session.\n* `export` – Export an animation to a video file.\n* `short/video` – Switch between short-form and long-form video resolutions.\n\n\u003e [!NOTE] \n\u003e The `make-interactive` command is used to run animations interactively in an animation window. Wherein you can\n\u003e copy and paste code into your terminal to run that animation interactively. However, this\n\u003e command and workflow will later be replaced by a keyboard shortcut in Sublime Text Editor.\n\n---\n\n# Running Animations\n\nManim uses a `custom_config.yml` file for configuration. The project structure includes:\n\n```\n.\n├── Makefile\n├── custom_config.yml       # Default Manim configuration\n├── manim_imports_ext.py\n├── media\n│   ├── images              # Image assets\n│   └── vectors             # SVG references\n├── projects\n│   ├── 2025                # New animation projects\n│   └── guides              # Guide animations\n│       ├── 3d.py\n│       ├── README.md\n│       ├── custom_config.yml\n│       ├── equation.py\n│       ├── graph.py\n│       ├── grouping.py\n│       ├── image.py\n│       └── text.py\n├── stage_scenes.py\n├── sublime_custom_commands # For Sublime Text configuration\n└── videos                  # Exported videos\n```\n\nTo run an animation:\n\n```bash\nmake run f=projects/guides/text.py s=TextScene\n```\n\nThis will open an interactive window with the example animation.\n\nThe animations provided in `projects/guides/*.py`.\nListed:\n\n* `projects/guides/text.py`\n* `projects/guides/image.py`\n* `projects/guides/equation.py`\n* `projects/guides/graph.py`\n* `projects/guides/grouping.py`\n* `projects/guides/3d.py`\n\nshowcase isolated animations that can be used and referenced when creating complex\nanimations later.\n\nFor example, to run animations from `image.py`. Run:\n\n```bash\nmake run f=projects/guide/image.py s=MovingImageScene\n```\n\nTo instead, interactively select the scene to run, use:\n\n```bash\nmake run f=projects/guide/image.py\n``` \n\nand proceed to select the scene you wish to run.\n\n## Keyboard Controls:\n\nOnce the animation is open in a window, you can use the following keyboard controls \nto interact with the animation:\n\n* Scroll: Move the view vertically.\n* Hold z and scroll: Zoom in/out.\n* Hold d and move: Adjust the 3D perspective.\n* Press r: Reset scroll position.\n* Press ⌘ + q: Quit the window.\n\n---\n\n# Running Interactive Animations with Sublime Text Editor\n\nSublime Text Editor is used to create keyboard shortcuts that interact with Manim's animation\nscenes.\n\nTo configure Sublime Text:\n\n1. Open the project in Sublime Text.\n2. Install the Terminus package:\n* Press `cmd + shift + p`, select “Install Package”, and search for “Terminus.”\n4. Set up key bindings: Open Preferences: Terminus Key Bindings and paste:\n```json\n[\n    {\n        \"keys\": [\"super+1\"],\n        \"command\": \"terminus_open\",\n        \"args\": {\n            \"cmd\": [\"bash\", \"-i\", \"-l\"],\n            \"cwd\": \"${file_path:${folder}}\",\n            \"panel_name\": \"Terminus\"\n        }\n    },\n    { \"keys\": [\"shift+super+r\"], \"command\": \"manim_run_scene\" },\n    { \"keys\": [\"super+r\"], \"command\": \"manim_checkpoint_paste\" },\n    { \"keys\": [\"super+alt+r\"], \"command\": \"manim_recorded_checkpoint_paste\" },\n    { \"keys\": [\"super+ctrl+r\"], \"command\": \"manim_skipped_checkpoint_paste\" },\n    { \"keys\": [\"super+e\"], \"command\": \"manim_exit\" },\n    { \"keys\": [\"super+option+/\"], \"command\": \"comment_fold\" }\n]\n```\n5. Copy the contents of the `sublime_custom_commands/*` folder into Sublime Text by running:\n```bash\nmake sublime\n```\n6. Restart Sublime Text to finalize the setup.\n\n## Using Manim Key Bindings:\n\nNow, when you open Sublime Text Editor, you can open a terminal using `cmd + 1`.\n\nAdditionally, you can use the following Manim key bindings:\n\n* `cmd+shift+r` – Run the current scene by highlighting `def construct(self):` constructor in that scene `class`. This will run the scene interactively in an animation window.\n* `cmd+r` – Run a block of code by highlighting the full block you wish to animate (including consistent indentation) and pressing these keys together. Ensure the block is part of the scene you are working on and that \nit includes consistent indentation. The constructor block should not be included.\n* `cmd+e` – Exit the interactive animation.\n\n---\n\n# Exporting Animations\n\nTo export an animation in high 4K resolution:\n\n```bash\nmake export f=projects/guide/text.py s=TextScene\n```\n\nBy default, the mp4 file will be saved at:\n\n```text\nvideos/projects/guide/text/TextScene.mp4\n```\n\n\u003e [!NOTE] \n\u003e Exports default to 4K 60fps. To change resolution, modify the --uhd or --fps flag in the Makefile and update custom_config.yml accordingly.\n\n---\n\n# Resolution Shortcuts\n\nSwitch between video resolutions using:\n\n* Short Video (Vertical short-form 4K (2160,3840))\n```bash\nmake short\n```\n* Standard Video (Horizontal long-form 4K (3840,2160))\n```bash\nmake video\n```\n\n\u003e [!WARNING] \n\u003e Running these commands also copies the `custom_config.yml` from `projects/guides` to the project root. This file is used by Manim key bindings in Sublime Text Editor for interactive workflows.\n\nAfter running these commands, you can export animations in the new resolution by running:\n\n```bash\nmake export f=\u003cpath_to_file\u003e s=\u003cSceneName\u003e\n``` \n\n---\n\n# Upgrading Manim\n\nManim Interactive uses a static version of the `3b1b/manim` repository, namely (#). To upgrade:\n\n```bash\nmake upgrade\n```\n\n\u003e [!CAUTION]\n\u003e Upgrading may effect existing projects. Please use with caution.\n\nThis command:\n\n1. Clone the latest `3b1b/manim` repository.\n2. Replace the current library, at `_manimlib`.\n3. Re-installs the upgraded library.\n\n---\n\n# Hacking the Manim Library\n\nFor advanced users:\n\n* Refer to additional documentation on modifying Manim’s internals.\n* Be cautious—changes here may break your animations.\n\n\u003e [!CAUTION]\n\u003e Hacking the `_manimlib` may effect existing projects. Please hack with caution.\n\n---\n\n# Troubleshooting\n\nIf you encounter issues:\n\n* Verify that all installation steps completed successfully.\n* Ensure that Homebrew and pip installations worked as expected.\n* Consult the FAQ or search online for common issues.\n* Check the project’s GitHub issues page for similar problems.\n\n---\n\n# Contributing\n\nContributions are welcome! Please contact me directly for guidelines on reporting bugs, submitting pull requests, and adhering to our code style.\n\n---\n\n# License\n\nThis project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpprunty%2Fmanim-interactive","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpprunty%2Fmanim-interactive","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpprunty%2Fmanim-interactive/lists"}