I recently published some new work to Hokusai Pocket, which is a cross-platform binary made on top of raylib and MRuby that runs GUIs from ruby scripts.
License?
MIT!
How does it work?
The binary is available on the GitHub releases page: https://github.com/skinnyjames/hokusai-pocket/releases/tag/0...
You can download the binary on x86 Windows, OSX, or Linux, and run your GUI application with
hokusai-pocket run:target="<your_hokusai_app.rb>"
For a little bit of a hello world, I started a photoshop clone
https://github.com/skinnyjames/hokusai_demo_paint
Also a little game
https://github.com/skinnyjames/pocket-squares
Docs / Help?
The docs are in progress, but the old docs for the CRuby version express some of the basic ideas around the project. https://hokusai.skinnyjames.net/docs/intro
(I'm also available to answer questions in between slinging pizza)
Deps?
Hokusai pocket currently uses
* libuv for offloading cpu intensive tasks to a worker pool to prevent blocking the UI thread, and I plan to integrate some libuv networking as well.
* raylib for backend graphics / I've also built with SDL on arm64 to run applications on my pinephone
* NativeFileDialog for the lovely integration into filesystem.
* MRuby for running or embedding the scripts
* tree-sitter for the custom template grammar (Although templates can be built with ruby)
Anyway, I hope you get a chance to try it. If you make something cool AND have docker installed, you can also publish your work as single binary
`hokusai-pocket publish:target=<your cool program.rb>`
Would love feedback, apps, and help with documentation and more build targets.
urs truly,
@ ᴗ @
apitman•3h ago
ux266478•2h ago
zero-st4rs•8m ago
It also integrates some helpful libraries, like libuv for cpu intensive tasks and I'm currently working on adding networking/HTTP and builds for android (it already runs on a pinephone).
The thing I think that is cool is that you don't need to compile your apps, you can just run them with the binary.
xattt•1h ago
zero-st4rs•14m ago
The motivation came from building desktop applications and working with awesome but cumbersome GUI toolkits like Nuklear.
I built a graphics backend-agnostic GUI library in CRuby called Hokusai, but Hokusai uses FFI, isn't portable, and is hard to distribute. (Need a Ruby interpreter on the target)
I ported the library to MRuby, developed some build tools, and now have a portable binary for different platforms that can run a dynamic desktop application/game that is written in Ruby.
You can try it yourself by downloading the latest release and running an app like: https://github.com/skinnyjames/hokusai_demo_paint
If you notice the paint repository, there is nothing to build, just ruby scripts and assets.
The tool also has commands to build your application for different platforms as standalone binary, but I'm currently working in that space for other reasons.
There are of course constraints to using MRuby vs CRuby, but I hope I speak to how this library addresses those.