Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Clojure
  3. seesaw

seesaw

Clojure

A Clojure library and DSL for building user interfaces on top of Swing, making Swing development friendly and accessible.

Visit WebsiteGitHubGitHub
1.5k stars143 forks0 contributors

What is seesaw?

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.

Target Audience

Clojure developers who need to build cross-platform desktop applications or want to create GUI tools without dealing directly with Swing's complexity.

Value Proposition

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.

Overview

Seesaw turns the Horror of Swing into a friendly, well-documented, Clojure library

Use Cases

Best For

  • Building cross-platform desktop applications in Clojure
  • Creating internal tools and utilities with graphical interfaces
  • Prototyping GUI applications quickly using Clojure REPL
  • Educational projects teaching GUI programming in functional languages
  • Migrating existing Swing applications to a more maintainable Clojure codebase
  • Developing data visualization tools with custom drawing capabilities

Not Ideal For

  • Projects requiring modern, native-looking user interfaces with sleek animations and transitions
  • Teams developing applications for mobile platforms or web browsers
  • Environments where high-performance, real-time graphics rendering is critical
  • Organizations standardized on non-Clojure JVM languages like Kotlin or Scala for UI development

Pros & Cons

Pros

Clojure-native DSL

Provides simple functions for widget creation, such as `(listbox :model (range 100))`, eliminating Swing boilerplate and making GUI development accessible without deep Swing knowledge.

CSS-style Selectors

Uses Enlive-compatible syntax for easy widget targeting and manipulation, similar to web development, allowing for declarative UI updates.

Unified Event API

Offers an extensible event handling system that integrates seamlessly with Clojure's functional programming style, simplifying interaction patterns.

Widget Binding

Enables functional data binding with Clojure's reference types, allowing reactive updates between widgets and reducing manual state management.

Cons

Dated Underlying Technology

Built on Java Swing, which has an outdated look and feel, limiting modern UI design possibilities and potentially alienating users accustomed to contemporary interfaces.

Limited Community and Ecosystem

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.

Complex Setup for Latest Versions

Using bleeding-edge versions requires manual cloning and installation from source, as noted in the README, adding friction for developers wanting the newest features.

Frequently Asked Questions

Quick Stats

Stars1,485
Forks143
Contributors0
Open Issues59
Last commit2 years ago
CreatedSince 2011

Tags

#java-interop#functional-programming#clojure#gui-framework#cross-platform#desktop-applications

Built With

C
Clojure

Links & Resources

Website

Included in

Clojure2.8k
Auto-fetched 1 day ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub