by stathissideris

stathissideris / dali

dali is a Clojure library for representing, exporting and manipulating the SVG graphics format.

232 Stars 11 Forks Last release: Not found 401 Commits 12 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:


I do not understand why, when I ask for grilled lobster in a restaurant, I'm never served a cooked telephone. -- Salvador Dalí

dali is a Clojure library for representing the SVG graphics format. It allows the creation and manipulation of SVG files. The syntax used to describe the graphical elements is based on hiccup with a few extensions.

The main advantage of dali is that it provides facilities to perform complex layouts without having to position elements explicitly.

Here's a hello world for dali:

(require '[dali.io :as io])

(def document [:dali/page [:circle {:stroke :indigo :stroke-width 4 :fill :darkorange} [30 30] 20]])

(io/render-svg document "hello-world.svg")

;;you can also rasterize directly using Batik: (io/render-png document "hello-world.png")

Here's a more substantial example of the kind of SVG you can produce with dali without having to specify the exact coordinates to position the elements:

[source for diagram]

Using dali in your project

Before adding dali as a dependency, please consider that it's still alpha quality and the API and syntax can (and very likely will) change. Just add this to the dependencies of your

[dali "1.0.2"]

Or this, to your

dali/dali {:mvn/version "1.0.2"}



Planned for the future:

  • Porting basic functionality to ClojureScript.
  • More pre-fabricated elements.



Copyright © 2014-2020 Stathis Sideris

Distributed under the Eclipse Public License, the same as Clojure.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.