A Clojure library and DSL for building user interfaces on top of Swing, making Swing development friendly and accessible.
Seesaw is a Clojure library that provides a functional, declarative interface for building graphical user interfaces on top of Java Swing. It solves the problem of Swing's verbose and object-oriented API by offering Clojure-friendly abstractions that make desktop application development more accessible to Clojure developers.
Clojure developers who need to build cross-platform desktop applications or want to create GUI tools without dealing directly with Swing's complexity.
Developers choose Seesaw because it provides a complete, well-documented DSL that makes Swing development feel native to Clojure, with features like widget binding, CSS-style selectors, and a unified event system that reduce boilerplate and improve productivity.
Seesaw turns the Horror of Swing into a friendly, well-documented, Clojure library
Provides simple functions for widget creation, such as `(listbox :model (range 100))`, eliminating Swing boilerplate and making GUI development accessible without deep Swing knowledge.
Uses Enlive-compatible syntax for easy widget targeting and manipulation, similar to web development, allowing for declarative UI updates.
Offers an extensible event handling system that integrates seamlessly with Clojure's functional programming style, simplifying interaction patterns.
Enables functional data binding with Clojure's reference types, allowing reactive updates between widgets and reducing manual state management.
Built on Java Swing, which has an outdated look and feel, limiting modern UI design possibilities and potentially alienating users accustomed to contemporary interfaces.
As a niche library for Clojure, it has fewer resources, tutorials, and third-party extensions compared to mainstream frameworks, which can slow down problem-solving and innovation.
Using bleeding-edge versions requires manual cloning and installation from source, as noted in the README, adding friction for developers wanting the newest features.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.