{"id":35015621,"url":"https://github.com/mdda/manim-interactive","last_synced_at":"2026-05-22T06:03:07.905Z","repository":{"id":321568595,"uuid":"1079186464","full_name":"mdda/manim-interactive","owner":"mdda","description":"manim (community edition) plugin to provide `checkpoint_paste()` functionality ","archived":false,"fork":false,"pushed_at":"2025-10-30T09:20:51.000Z","size":14,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-30T11:30:02.917Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/mdda.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-19T09:45:54.000Z","updated_at":"2025-10-30T09:20:54.000Z","dependencies_parsed_at":"2025-10-30T11:31:26.650Z","dependency_job_id":"1e81275b-9826-4ef1-a1dc-1e945cf2e7c5","html_url":"https://github.com/mdda/manim-interactive","commit_stats":null,"previous_names":["mdda/manim-interactive"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/mdda/manim-interactive","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdda%2Fmanim-interactive","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdda%2Fmanim-interactive/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdda%2Fmanim-interactive/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdda%2Fmanim-interactive/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mdda","download_url":"https://codeload.github.com/mdda/manim-interactive/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdda%2Fmanim-interactive/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28072870,"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","status":"online","status_checked_at":"2025-12-27T02:00:05.897Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2025-12-27T05:19:25.534Z","updated_at":"2025-12-27T05:19:27.152Z","avatar_url":"https://github.com/mdda.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Manim Community Edition 'interactive' plugin\n\n## Getting Started\n\n### Installation\n\nThere are several components that require installation:\n* `manim` (Community edition) - obviously\n* OpenGL for your machine (we use `--renderer=opengl`)\n* `manim_interactive` - this plugin\n* `manimvs` VScode extension\n\n#### Further details\n\nFirst you will want to [install manim](https://docs.manim.community/en/stable/installation.html). Make sure it is the Manim Community edition, and not the original 3Blue1Brown Manim version. \n\nIn addition, we will be using the OpenGL renderer \n(which is not exactly the same as the regular Cairo renderer).  The reason is that the Cairo one renders to video files fine, \nbut isn't really intended for 'realtime/interactive' usage \n(unless you are prepared to wait for lots of video regeneration).\n\nTo install the essentials required for OpenGL (on Fedora), I needed to run (as root):\n```bash\n# For manim (base)\ndnf install pango-devel texlive-dvisvgm texlive-standalone\n# For manim OpenGL backend\ndnf install mesa-libGL libglvnd-devel\n\n# The latter of these packages was discovered by running:\ndnf provides '*/libGL.so'\n```\n\nThen install this plugin `pip install manim_interactive` \n(you can also use `uv pip install manim_interactive`) - or install from source (for debugging, see below).\n\nAlso install the `manimvs` extension in `vscode`.  \nI chose to base this plugin on that that extension, since it does not depend on `3b1t manim` to run.\n\n\n\n### Debugging\n\nThis is only required if you want to debug this `manim` plugin : Normal usage should just require the installation steps above.\n\nInstall `poetry` module, to manage the development environment in a way that is compatible with the `manim` ecosystem.\n\nFor me, using Fedora (during development), I needed to do (as root):\n\n```bash\ndnf install poetry\n```\n\nThen use the Python environment defined through `poetry` (as user):\n```bash\npoetry shell\npoetry install\n```\nThe `manim` file I used during development was the simple `testbed.py` file included here.\n\n\n### Usage / Setting Up a Scene  \n\nRunning this interactive session requires a few steps:\n* import this plugin\n* add a `self.embed()` breakpoint to your scene\n* run `manim` in a VScode terminal window\n* connect `manimvs` extension to the terminal window\n* select the appropriate line(s) in vscode, and press the magic hotkeys\n\n#### Further details\n\nIn the file that you want to interactively edit, please make sure you've included `manim_interactive`:\n\n```py\nfrom manim import * # Already there\n# ... other stuff\nfrom manim_interactive import *\n# ... etc\n```\n\nThis will simply give you the `checkpoint_paste()` command in the interactive session.\n\nThen, in that scene, before a comment starting a segment that you are building out (or refining), insert the following:\n\n```py\nself.embed()\n```\n\n(See the `testbed.py` file here to see how it looks in practice).\n\nThen, you can create a terminal in a separate window in VScode \n(\"Create Terminal New Window = Ctrl-Shift-Alt-`\", or create a Terminal session and right-click in its task bar to \"Move Terminal to New Window\"), and run there (updated for your file/scene):\n```bash\nmanim testbed.py SimpleTest --renderer=opengl -p\n```\nto get an interactive scene.\n\nThen, connect that terminal using the `manimvs` extension command `Manimgl: Select terminal (Python3)`.\n\nThen, go to the line(s) that you want to debug and use the manimvs extension command `Manimgl: On Cursor Checkpoint Paste` (it'll likely be helpful to bind this to a key combo, like `Ctrl-m-Ctrl-p`).\n\nThere are several modes of 'Checkpoint Paste' in the editor:\n* *editor cursor is on a line of code* : This line is executed immediately\n* *editor has lines of code selected* : These lines are executed immediately\n* *editor cursor in on a commented line* : Saves a checkpoint (corresponding to the contents of the line), which you can reset the scene to by redoing this commented-line CheckpointPaste : **This is the key time-saving feature!** and then runs the block up until the next commented line\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmdda%2Fmanim-interactive","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmdda%2Fmanim-interactive","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmdda%2Fmanim-interactive/lists"}