Clojure Desktop UI Framework

  • I'm sure Clojure is a great language for some tasks...

    But, looking at the examples (picked the Wordle one since I know that game): https://github.com/HumbleUI/HumbleUI/blob/main/dev/examples/...

    I find it extremely hard to read. Even small snippets, say line 56 to 74 which define this "color", "merge-colors" and "colors"... then the "field" one lines 76 to 117 is even harder.

    is it more natural read for people familiar with writing functional programs? (am I permanently "broken" due to my familiarity with imperative programing?)

    I wonder what the same Wordle example would look like in, say pure Flutter.

    Also wonder how would that code look with external dependencies (say hitting a server to get the word of the day), and navigation (with maintaining state in between those pages)

  • Clojure and Flatlaf [1] tick all the boxes for me. If I want declarative-ish UI, I can always throw in Seesaw [2]. Everything else I find cumbersome, pulls tons of unnecessary dependencies and (usually) ends up abandoned in a year or two. With Swing, I know it is well-documented and will work for the next 30 years. But YMMV and I'm hoping that HumbleUI could be an exception.

    [1] https://www.formdev.com/flatlaf/

    [2] https://github.com/clj-commons/seesaw

  • The readme says it is aiming for a “web look”, with no intention to make it look — and, presumably, behave — native. As a user, that’s not what I expect and hope for from a desktop application.

  • Really could use a link to the API docs in the README.md, it is a bit hard to judge when the "documentation" such as they have so far is sparse. But it is nice to see a newish UI project.

    I will say I've found Clojure to be a success story for doing GUI work. Projects like Dave Ray's seesaw (https://github.com/clj-commons/seesaw) are an amazing demo of how one man can rearchitect an API like Swing into something that is deceptively fun to use. High hopes that this project goes somewhere that is similarly enjoyable.

  • Cljfx is also worth a look!

    https://github.com/cljfx/cljfx

  • I found this dimension of the analysis:

    > People prefer native apps to web apps

    > Java has “UI curse”: Looked bad

    to be at odds with this aspect of the design:

    > No goal to look native

    > Leverage Skia

  • I love this. Clojure will be perfect for this.

    Per the other comment, might do less dunking

  • Question about native integration. Does the framework support documents on a native level? Can I define a file type that opens the app when double clicked, maintaining the windows and data, etc?

  • Does anyone close to the project know when/if it will no longer be in "No docs, and everything changes every day" release status?

  • What does it bring that https://github.com/cljfx/cljfx does not?

  • If only Clojure wasn't tied to the fucking JVM

  • where did the myth that people prefer apps that look native to the platform come from?

    There are two types of apps: 1. the ones that professionals use and 2. the ones that consumers use.

    for 1. they don't care if it looks native, as long as it works and is performant e.g. DAWs, Video Editing tools, Trading, etc.

    2. likewise I don't think it matters that much.

    my guess is the myth came from OS makers.

  • [dead]

  • Lol, checking out the readme. Dunking on stuff isn't what makes you an opinionated framework.