Skip to main content

A utility library for interacting with JAnim GUI via standard input/output

Project description

JAnim Stdio Interact

> English < | 简体中文

A utility library for interacting with JAnim GUI and managing windows via standard input/output

Basic Usage

Interact with the JAnim GUI by passing JSON commands via stdio to open and close specific instances.

First, start the janim-stdio-i program:

janim-stdio-i host

For example, to compile a code snippet and build the Timeline within it for display in a preview window, send the following to stdin:

{"type": "execute", "key": "id1", "source": "from janim.examples import *\nclass A(HelloJAnimExample): pass"}

You will see a preview window open displaying the classic HelloJAnimExample.

[!WARNING] All commands sent to stdin must be on a single line. Multi-line commands will be truncated.

Here, "key": "id1" is used for window reuse. If you send an execute command with the same key, the Timeline in the existing window will be replaced without opening a new window.

{"type": "execute", "key": "id1", "source": "from janim.examples import *\nclass A(RotatingPieExample): ..."}

Sending the command above replaces the HelloJAnimExample in the original window with RotatingPieExample.

[!NOTE] If a code snippet contains multiple Timelines, the first one is used for the initial build.

On subsequent rebuilds (replacements), it attempts to find a Timeline with the same name as the previous one; if not found, it defaults to the first one.

If we use a different key, for example:

{"type": "execute", "key": "id2", "source": "from janim.examples import *\nclass A(ArrowPointingExample): ..."}

A new window will open. Essentially, one key corresponds to one window.

In addition to compiling and building Timelines via stdin, information generated by the GUI is returned via stdout. See below for details.

API Reference

stdin

  • "type": "execute"

    Required parameters:

    • "key": Unique identifier for the window.
    • "source": Source code for compilation.

    Compiles and builds the Timeline to display in the preview window.

    If the window corresponding to key already exists, the original Timeline in that window is replaced with the new one.

    Example:

    {"type": "execute", "key": "id1", "source": "from janim.examples import *\nclass A(HelloJAnimExample): pass"}
    
  • "type": "close"

    Required parameters:

    • "key": Unique identifier for the window.

    Closes the window corresponding to key.

    Example:

    {"type": "close", "key": "id1"}
    

stdout

{"type": "viewer-msg", "key": "...", "from": "...", "janim": { ... }}
Field Type Description
type string Fixed as "viewer-msg", identifying the message category
key string Corresponds to the identifier key used during creation
from string Sender source. Possible values: "execute", "close", "gui"
janim object The specific event payload, containing the event type and data

When "from": "execute", it represents the result of the execute command sent to stdin:

  • When the source code contains no usable Timeline, the payload is:

    "janim": {"type": "error", "reason": "no-timeline"}
    
  • When the Timeline build fails, the payload is:

    "janim": {"type": "error", "reason": "build-failed"}
    
  • When execution is successful, the payload is:

    "janim": {"type": "success"}
    

When "from": "close", it represents the result of the close command sent to stdin:

  • When no preview interface is found for the identifier, the payload is:

    "janim": {"type": "error", "reason": "not-found"}
    
  • When executed successfully, the payload is:

    "janim": {"type": "success"}
    

When "from": "gui", it represents information generated by the GUI:

  • When the interface is created, the payload is:

    "janim": {"type": "created"}
    
  • When the interface content is replaced, the payload is:

    "janim": {"type": "rebuilt"}
    
  • When the preview progress changes, the payload is:

    "janim": {"type": "lineno", "data": <current_line_number>}
    
  • When the interface is closed, the payload is:

    "janim": {"type": "close_event"}
    

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

janim_stdio_interact-0.1.0.tar.gz (8.8 kB view details)

Uploaded Source

Built Distribution

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

janim_stdio_interact-0.1.0-py3-none-any.whl (10.8 kB view details)

Uploaded Python 3

File details

Details for the file janim_stdio_interact-0.1.0.tar.gz.

File metadata

  • Download URL: janim_stdio_interact-0.1.0.tar.gz
  • Upload date:
  • Size: 8.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for janim_stdio_interact-0.1.0.tar.gz
Algorithm Hash digest
SHA256 cb310dda2c71290bda4e66aece55e7940bba8251540d86243e05e3f4867a1908
MD5 07931059488b0b2739bd2b83bb55ab32
BLAKE2b-256 103b85878fda9ee9d8d9e894712f33435a6d04ac39a6fadf0645f65a1cc739c9

See more details on using hashes here.

File details

Details for the file janim_stdio_interact-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: janim_stdio_interact-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 10.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for janim_stdio_interact-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 64c7c922014e37f645d66ad8fdf6e7a1c8a00d2325ac7e8679678b7b2b5c7b95
MD5 158712977e9c45cfd17aabdfc01b8c28
BLAKE2b-256 a9b46da74a81a943edf850ffb39e76892c8d6caeba59af854ba45b815f8dc0bd

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