# Processing URI Schema Definition The Processing URI schema defines a custom protocol for launching and interacting with the Processing Development Environment (PDE) via specially formatted `pde://` links. These links can be used to open sketches, create new ones, load hosted or base64-encoded files, and set preferences, all through a simple URI-based interface. This feature is primarily intended for integration with web platforms, tutorials, documentation, or third-party tools that want to streamline the experience of launching sketches in Processing from a web page. Because these links can be generated dynamically, they support a range of interactive use cases. For example, an online editor could generate a unique link for each sketch, or a forum could create links based on user-submitted code snippets. >[!WARNING] > Be cautious when opening `pde://` links from unknown sources. Always review the contents of a sketch before running it, especially if it was shared by someone you don’t know. To protect your system, Processing runs downloaded sketches in a temporary folder, but you should still treat untrusted code with care. ## Local File Schema ``` pde:///path/to/sketch.pde ``` Attention: The 3rd slash is import to trigger local files. ## Sketch Operations ### Create New Sketch ``` pde://sketch/new ``` ### Load Base64 Encoded Sketch ``` pde://sketch/base64/ ``` Optional query parameters: - `data`: Comma-separated {File} that should be placed in the data folder - `code`: Comma-separated {File} that should be placed in the code folder - `pde`: Comma-separated {File} that should be placed in the sketch folder - `mode`: Processing mode identifier, e.g. `processing.mode.android.AndroidMode` You can find this in the sketch.properties file when switching modes on a sketch ### Load Sketch from URL ``` pde://sketch/url/github.com/processing/processing-examples/raw/refs/heads/main/Basics/Arrays/Array/Array.pde ``` [Click to here to test](pde://sketch/url/github.com/processing/processing-examples/raw/refs/heads/main/Basics/Arrays/Array/Array.pde) Supports the same query parameters as base64 endpoint. Optional query parameters: - `data`: Comma-separated {File} that should be placed in the data folder - `code`: Comma-separated {File} that should be placed in the code folder - `pde`: Comma-separated {File} that should be placed in the sketch folder - `mode`: Processing mode identifier, e.g. `processing.mode.android.AndroidMode` You can find this in the sketch.properties file when switching modes on a sketch Example with query parameters: ``` pde://sketch/url/github.com/processing/processing-examples/raw/refs/heads/main/Basics/Image/Alphamask/Alphamask.pde?data=data/moonwalk.jpg,data/mask.jpg,processing.org/img/processing-web.png ``` [Click to here to test](pde://sketch/url/github.com/processing/processing-examples/raw/refs/heads/main/Basics/Image/Alphamask/Alphamask.pde?data=data/moonwalk.jpg,data/mask.jpg,processing.org/img/processing-web.png) #### A {File} A {File} is a string that represents a file in the sketch and has a couple of options, it always starts with the filename followed by a colon, e.g. `file.pde:example.com/path/to/file.pde`. The following options are available: - `example.com/path/to/file.pde`: A remote file that should be downloaded - `file.pde`: A remote file that should be downloaded with a path relative to the sketch (only available in loading the sketch from url) - a base64 encoded file: A base64 encoded file ## Preferences ``` pde://preferences?key1=value1&key2=value2 ``` Sets and saves multiple preferences in a single operation. ## Security Considerations - URL-based operations automatically prepend https:// if no scheme is provided - All URLs and query parameters are decoded using UTF-8 - File downloads occur asynchronously in a separate thread - Base64 and remote sketches are saved to temporary folders