A wrapper for Processing in Clojure.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples Add #'mouse-x, #'mouse-y fns. Update mouse example; fixes #17 Feb 23, 2012
src/processing Make cheatsheet more complete. Mar 4, 2012
.gitignore ignore latex detritus Mar 4, 2012
API.md rename key-pressed -> key-pressed? and mouse-pressed -> mouse-state t… Mar 4, 2012
CPL.TXT Added CPL license file. Sep 8, 2008
README.markdown point to quil project in README Mar 18, 2012
project.clj Add deps required for PDF support Feb 28, 2012



In March 2012 clj-processing project changed its home and name to Quil. You can find the new project here:


This repository is no longer developed or maintained.

Processing for Clojure

This lib is a wrapper for the Processing project. Mixture of Clojure and Processing enables you to do live-coding and experiment easily.

Most of the function are covered; some have a slightly different name than in Java (partly because Clojure is confused by methods of the same arity but different argument types). Most of the constants are accessible.

How To Use It?

NOTE: project is currently going through some cleanups when it comes to lein/maven compatibility. Untill that's finished, you pretty much have to setup your project manually.

If you use mave or leiningn, just add the following to your project.clj:

    [processing-core/processsing.core "0.1.0"]

Manual Setup

Add Processing's core.jar to your classpath along with clj-processing jar and you're ready to go.

To use the OpenGL features, you also have to add gluegen-rt.jar, jogl.jar and opengl.jar from the $PROCESSING_DIR/libraries/opengl/library. You also need to pass the argument:


to the JVM.

Then, create a JAR by running ant and also add the resulting file to your CLASSPATH.


The examples directory contains a simple script to get you going.


clj-procesing may not work if you're using add-classpath to put the Processing jars into your CLASSPATH. Please, use a "proper" way to set up your CLASSPATH (eg. with a special script like the clj on Clojure Wiki)

If your're using Clojure's proxy macro, you'll have to define the mouse handling methods to take one argument (which is just an instance of java.awt.event.MouseEvent class) and get all needed information (like mouse position etc) from that object. Also, accessing instance fields of the PApplet class from within proxy doesn't work.


processing.core is distributed under Common Public License Version 1.0. The official Processing.org's core.jar is distributed under LGPG and its code can be found on http://processing.org/


  • docstrings
  • include remaining constants


  • Roland Sadowski
  • Phil Hagelberg
  • Vilson Vieira
  • Marshall T. Vandegrift
  • Ilya Epifanov
  • Sam Aaron