Clojure Desktop UI Framework
Humble UI is a Clojure-based desktop UI framework designed for cross-platform application development, featuring a user-friendly API, ongoing development, and resources like a Slack community and sample applications.
Read original articleHumble UI is a desktop UI framework specifically designed for Clojure, aiming to facilitate the development of high-quality desktop applications without the use of Electron or JavaScript. The framework focuses on leveraging JVM and native code to build better cross-platform applications while enhancing development speed. It addresses the limitations of existing solutions, such as Electron, by providing a native-like experience across different operating systems. Key features include a declarative UI API that is user-friendly and compatible with functional programming, as well as both low-level and high-level APIs that offer flexibility for developers. Humble UI utilizes Skia for GPU-accelerated graphics and JWM for OS integration, ensuring performance. Currently, the project is still in development, with ongoing changes and no official documentation available. Resources for users include a Slack community, blog posts discussing the framework, and sample applications to explore. Developers can run the REPL server and reload demo applications using specific commands. An example code snippet demonstrates how to create a simple UI with Humble UI, showcasing its ease of use.
- Humble UI is designed for Clojure to create desktop applications without Electron or JavaScript.
- The framework aims to improve cross-platform application development and speed.
- It features a declarative UI API and both low-level and high-level APIs for flexibility.
- The project is still in progress, lacking official documentation.
- Resources include a Slack community and sample applications for exploration.
Related
Writing GUI apps for Windows is painful
Samuel Tulach discusses challenges in writing Windows GUI apps in C++, emphasizing requirements like Windows support, styling, and efficiency. He evaluates various frameworks, recommending Dear ImGui for its simplicity and lightweight design.
Writing GUI apps doesn't have to be painful
The author discusses challenges in developing Windows GUI apps, opting for Go with Fyne library for a smart card reader project. Despite minor drawbacks, Go+Fyne proved efficient, attracting users and contributors.
Tonsky: Don't go crazy with Clojure unless it makes you happy
The author shares their journey using Clojure macros for Humble UI's component library, emphasizing the language's flexibility in enabling unconventional solutions like reading source files and fetching code seamlessly.
Clojure macros continue to surprise me
The author shares their journey using Clojure macros for Humble UI's component library, creating a macro to display running code alongside its source. Despite challenges, they find Clojure's flexibility rewarding for experimentation.
WelsonJS: Build a Windows app on the Windows built-in JavaScript engine
WelsonJS is a framework for building Windows desktop applications using JavaScript and other languages, featuring built-in transpilers, compatibility with web standards, and integration with Windows services and development tools.
- Some users express disappointment that the framework aims for a "web look" rather than a native desktop experience.
- Concerns are raised about the readability and complexity of Clojure code, especially for those accustomed to imperative programming.
- There is a call for better documentation, including API links, to help users evaluate the framework.
- Discussion around the perception of native vs. non-native app aesthetics, with some questioning the necessity of native looks for certain applications.
- Users express hope for the project's success, drawing comparisons to other successful Clojure GUI projects.
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)
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.
> 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
Per the other comment, might do less dunking
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.
Related
Writing GUI apps for Windows is painful
Samuel Tulach discusses challenges in writing Windows GUI apps in C++, emphasizing requirements like Windows support, styling, and efficiency. He evaluates various frameworks, recommending Dear ImGui for its simplicity and lightweight design.
Writing GUI apps doesn't have to be painful
The author discusses challenges in developing Windows GUI apps, opting for Go with Fyne library for a smart card reader project. Despite minor drawbacks, Go+Fyne proved efficient, attracting users and contributors.
Tonsky: Don't go crazy with Clojure unless it makes you happy
The author shares their journey using Clojure macros for Humble UI's component library, emphasizing the language's flexibility in enabling unconventional solutions like reading source files and fetching code seamlessly.
Clojure macros continue to surprise me
The author shares their journey using Clojure macros for Humble UI's component library, creating a macro to display running code alongside its source. Despite challenges, they find Clojure's flexibility rewarding for experimentation.
WelsonJS: Build a Windows app on the Windows built-in JavaScript engine
WelsonJS is a framework for building Windows desktop applications using JavaScript and other languages, featuring built-in transpilers, compatibility with web standards, and integration with Windows services and development tools.