Top
Best
New

Posted by mik3y 1 day ago

Rune: A native GPU-rendered Rust UI framework for macOS, Windows, Linux and web(github.com)
176 points | 129 commentspage 2
the__alchemist 1 day ago|
Broadly: In what circumstances, use cases, preferences etc would I use this instead of EGUI or GPUI?

The double-edged sword of choice!

DoesntMatter22 1 day ago|
I'd like to know this too. I'm building a egui app and it's fantastic. I have tons of custom drawing and stuff though
GaronG 1 day ago||
It would be fun to port some apps over to this, I'm worried at the speed it moves, It would be hard to settle on a commit. I'd rather fast updates over slow, but I feel like I'd have very little trust on this between updates, especially how many things could be broken after updating.
ricardobeat 22 hours ago||
Is this related to https://rune.build which was also developing their own rendering layer?
ernestrc 5 hours ago|
It isn’t. Rune is written in Go, and completely unrelated.
mrpotato 1 day ago||
Rune, the rust ui framework, not to be confused with Rune, an embeddable dynamic programming language for Rust
portaltonowhere 1 day ago|
Not to be confused with Rune, the development environment [0].

[0]: https://rune.build/

efficax 1 day ago||
What does "native" mean to these people. Native UI means using the widgets provided by the operating system. This is not that.
eska 1 day ago||
Changing times. Nowadays a lot of software UIs are developed by people with a web UI background. Those people won’t learn the OS-native UIs because that would mean they’d give up on their existing knowledge. Because of that native means “not running in an embedded web browser” to many nowadays.
fishgoesblub 1 day ago|||
I have the same annoyance. It's continually maddening to see "native" plastered everywhere only for it to be some non-native junk. I miss when native meant something like Qt.
foresto 1 day ago||
Qt is an interesting case, because it doesn't use the native platform's widget code*, but does a good job of looking and behaving as though it does. That's usually close enough for me.

Various other toolkits have tried this approach, but unfortunately, I'm not aware of any others that succeed. Common deficiencies include keyboard navigation and text rendering.

*(Except on Qt-based desktops like KDE Plasma, of course.)

factotvm 1 day ago|||
I've been thinking a lot about the term "native" as I come from mobile. When writing a core in Rust (which I like to do), and then layering on the operating system's UI SDK components per platform (which I also like to do), what is native and what isn't, especially when you throw in React Native to the discussion?

I like your definition quite a bit, but I need another word for, "code that doesn't need a runtime to execute."

I ended up using "experience layer" to describe the SDK components.

thayne 1 day ago||
Native often means "not a wrapper around a webview".

If you define it as "using the widgets provided by the operating system", then "native" is by definition incompatible with "cross-platform." And what does that mean on Linux, where the operating system doesn't provide widgets? Are gtk and Qt not native?

foresto 1 day ago||
Adding to this...

When discussing GUI toolkits, "native" should be understood to mean "native to the host's graphical environment".

"Native to the OS" might or might not be equivalent, depending on the OS and what one considers "OS" to mean. (Does it mean a kernel? A desktop distro? Something else?) Because of this ambiguity, it's not a very practical way to approach the discussion. Different people attach different meanings to that phrase.

Some frameworks are native to Qt. Others are native to Gtk. Practically none are native to Linux. ;)

I don't think "cross-platform" is incompatible with "native". It has been achieved more than once using toolkit wrappers, usually selected at build time.

elcritch 21 hours ago||
The dynamic lighting setup is pretty cool. Not sure how practical it is for most applications but cool.

But this syntax – egads man! It literally hurts my brain trying to parse it:

    fn view(s: &State, _: &mut Cx<State>) -> El {
        let t = tok::theme(true);
        let label = text(if s.on { "Lights on" } else { "Lights off" })
        .font(type_::TITLE).color(t.text);
        let knob = el().key("knob").size(18.0, 18.0).radius(9.0).fill(t.knob)
            .absolute(if s.on { 18.0 } else { 2.0 }, 2.0);
        let switch = el().key("switch").role("switch").label("Lights").checked(s.on)
            .focusable(true).size(38.0, 22.0).radius(11.0)
            .fill(if s.on { tok::accent(0, true) } else { t.control_off })
            .motion(motion::SNAPPY)
            .on_press(|s: &mut State| s.on = !s.on)
            .child(knob);
        col().w_full().h_full().center().gap(16.0).fill(t.bg).child(label).child(switch)
    }
Maybe I'm getting too old but I'd prefer good old Perl 5 linenoise.
bovermyer 1 day ago||
So it's a UI framework by agents, for agents?
sarabarasa100 1 day ago||
why are we giving more accessibility to agents than to like disabled human users?
eska 1 day ago|
I wonder whether that results in better accessibility for disabled people in the end because agents can control UIs for them.
esafak 1 day ago||
I was thinking "Builds and tests with a fast-moving Rust code base like this must be painful", then I noticed the total absence of tests: https://github.com/anomalyco/rune/commits/dev/
anentropic 1 day ago|
there are tests, no?

e.g. https://github.com/anomalyco/rune/tree/dev/crates/rune-kit/t...

QuantumNomad_ 1 day ago|||
Indeed. But why not run the tests in CI when merging to master?
efficax 1 day ago||
Where I work, we've moved CI "left", all tests are run on the developers machine before merging
esafak 1 day ago||
You're not shifting left unless you guarantee local tests always run, faithfully to production. That rarely happens. Local testing should be supplementary. We use https://hk.jdx.dev/
efficax 1 day ago||
We do ensure this, requiring signed proof, running in containers that would be identical to github runners (more or less). Now, this could be spoofed by an engineer, but we operate in a high trust environment
esafak 1 day ago||
This is interesting. Are you using an available product for managing these signatures, or did you write your own?
efficax 23 hours ago||
we built workflows using swamp https://swamp-club.com/
esafak 1 day ago|||
They ain't running in CI.
varispeed 22 hours ago|
> and the web,

And no live examples...

More comments...