#Relm4

2025-03-19

i've been using relm4 for a while and i'm really happy with it. i love the #elm architecture - your app's state is a struct (or object), your user interface is rendered by a function that takes your state and returns a tree of widgets (or similar), widgets emit messages, messages modify state. i find it so much cleaner and easier to wrap my head around than traditional imperative methods or MVVM.

what are some other nice cross-platform #desktop app frameworks that use this architecture? i'm mainly familiar with #relm4 and #iced in #rust. :boost_requested:

#programming #gui #linux

2025-01-08

📢 An update for Exercise Timer was released today! With a number of visual improvements that I hope to pave the road for GNOME Circle adoption.

Additionally, translations for Tamil, Portuguese and Estonian has been added by the members of the community.

The new version is available on Flathub!

A screenshot of the updated Exercise Timer user interface
chfkch :nixos: :rust:chfkch@ruhr.social
2024-09-19

Question about #Phosh and OSK:
I have a #Relm4 (GTK4+adwaita) application. I recently migrated from gtk::Dialog to adw::Dialog and now i have the following behavior:
I open the app and open a dialog, which itself renders for about 45% of my screen height, with the Confirm button being at around 20% of the screen height. If i pop up the OSK, the dialog gets moved 5% upwards and the Confirm button is now covered by the OSK.
The app itself is not resized (for example GNOME software is).
1/2

2024-07-30

@n1 did you try #relm4? It is GTK but idiomatic

chfkch :nixos: :rust:chfkch@ruhr.social
2024-05-28

My fellow fedizens, i have done it.
I have applied #BitRitter to nlnet.nl/propose/ in the category "Open Call". Well at least 2 features i want to implement.
Wish me luck.

If you have an awesome Mobile FOSS Project, maybe you want to apply too? Deadline is 2024-06-01 so this friday. Application process took me about half an hour, so that's doable.

@NGIZero

#LinuxMobile #Relm4 #gtk
#rbw #BitWarden #Vaultkwarden

chfkch :nixos: :rust:chfkch@ruhr.social
2024-04-10

News from #BitRitter:
codeberg.org/Chfkch/bitritter
Account creation is now possible via the app, no need to store credentials on disk.
This was a huge step towards the release of the first beta.
Basic usage is covered in my eyes, now i have to polish things up a bit and test integration in distros and on devices.
Got a lot of help from the community and the #Relm4 channel.
If you want to try now, hit me up if you have problems.
#LinuxMobile #MobileLinux #RustLang

chfkch :nixos: :rust:chfkch@ruhr.social
2024-03-28

Again, a litte progress on #BitRitter. The Vault Item Detail Page - where passwords, URIs etc. are shown - is coming together nicely. Though i had some initial problems with the 4 different Item Types and their atttibutes, i found a non-elegant working solution.
Merging the changes to main as soon as it is polished a little more.
#LinuxMobile #MobileLinux #Relm4 #RustLang

chfkch :nixos: :rust:chfkch@ruhr.social
2024-03-26

Making progress with #BitRitter. Slow, but steady.
Today i implemented a password input to unlock the #BitWarden / #VaultWarden vault, so we can soon remove a part of the credentials.toml (which was just a workaround for faster testing) and make the app safer.
#Relm4 feels nicer the more i get to work with it.

Sadly my ARM CI did not work as nicely as the x86, so i can't package for my phone easily.

#MobileLinux #LinuxMobile

chfkch :nixos: :rust:chfkch@ruhr.social
2024-03-22

In the next iteration of my app i want to have proper test and CI for x86_64 and arm64.
So the next steps will be:
- try out #testcontainers to provide a #VaultWarden instance
- maybe send a PR with said container definition upstream
- get the CI running according to the #Relm4 documentation. That said i need to convert the actions used in the example to #ForgejoActions since i am hosting on #CodeBerg.

Then i will work on more features like the password dialog and the detail page.

chfkch :nixos: :rust:chfkch@ruhr.social
2024-03-21

My first (very incomplete and WIP) iteration of my #MobileLinux #BitWarden client. It ia usually not ready for others to use, but i need to publish it to stay motivated.
Works with #VaultWarden aswell. You have to build it fron source though, for the time being.

codeberg.org/Chfkch/bitritter
#LinuxMobile #Relm4 #GTK

chfkch :nixos: :rust:chfkch@ruhr.social
2024-02-01

I wish i had more time and energy to get my #Relm4 app compiled for aarch64 om #NixOS. So far no luck and if i do not succeed, i have even less energy to develop my app any further.
Maybe i will take a break and start with fresh thoughts and views.
First time i feel like that.

chfkch :nixos: :rust:chfkch@ruhr.social
2023-12-27

My biggest enemy today in #Rust is the fact, that i cannot implement/extend traits from another crate. So i wanted to use structs from the #rbw crate since i am piggy-backing on their logic, but since i need Debug on those, because i am writing a #Relm4 app, i am screwed. Or am i missing something?
I mean i could just use my own types based on the rbw ones, since they are not likely to change (the crate looks feature-complete), but meh, is there a better way?
:boostRequest: :boost_ok:
#RustLang

chfkch :nixos: :rust:chfkch@ruhr.social
2023-12-20

Today i learned more about iterators, references with my buddy #clippy while working on my side project.
The #Relm4 channel was useful and quick in response as ever.
My #BitWarden #LinuxMobile app is shaping up, though progress is slower than expected. But progress nonetheless.
A first prototype will not reach public this year i think, but should not take so long.
#MobileLinux #VaultWarden

2023-12-07

Exercise Timer is available on #FlatHub for a few days now. I missed a timer app for high intensity interval trainings native to the #GNOME desktop, so I decided to write one.

Famous last words: I though that this is a 1-2 evening project, and maybe it was, if I worked with tech known to me. But instead, and as always, went the more difficult route, going for the opportunity to learn something. Started with #flutter, but I didn't like it that much, especially since #dart didn't seem to be a good investment based on the stuff that I usually do.

Eventually I settled with #rustlang and #gtk4 using the #relm4 library that had approachable documentation and seemed pretty intuitive. Of course there were some bumps down the road, but the community was super helpful, and could aid me, big kudos for that. The whole process took 2 months, but I'm happy with the end result: while it is stupid simple, but it still does what I need, and also has native looks and is aesthetically pleasing. Except the logo.

flathub.org/apps/xyz.safeworld

A screenshot of the Exercise Timer application.
Eduardo Flores :rust:edfloreshz@hachyderm.io
2023-11-27

@alecaddd Once you feel comfortable with gtk-rs, check out #Relm4

github.com/Relm4/Relm4

chfkch :nixos: :rust:chfkch@ruhr.social
2023-10-16

Hhm Leaflet is already deprecated in #LibAdwaita, but #relm4 still uses it. Does anyone know what to do? OverlaySplitView isn't implemented as far as i can see.

chfkch :nixos: :rust:chfkch@ruhr.social
2023-10-15

After some time thinking and tinkering i think i might aswell choose #relm4 for my #BitWarden #MobileLinux Client. This way ibdo not need to reinvent the wheel, since relm is based off GTK. On the other hand, i will get faster development iterations and - more important - cleaner code when using relm compared to bare gtk-rs.

Thoughts?

#LinuxMobile #RustLang #Rust

blake shaw 🇵🇸rml@functional.cafe
2023-10-15

looking around for an example of a #relm4 app in action, I found this video on youtube[1] from a couple weeks ago, where the vlogger asks #github #copilot to generate a #GTK4 file manager in #rust, and the result works (image left), but just so happens to look exactly like eucl.io's "fm" relm4 file manager[2], replicating all of the design decisions except for the color theme.

hmmmm.

[1] youtube.com/watch?v=-Z2emNbadK
[2] github.com/euclio/fm
#copyright #copyleft #aitheft #llm #ai #intellectualproperty

screenshot: left is youtube showing the result of using copilot to generate a relm4 file manager, which looks exactly the same as the fm file manager created with relm4, which is shown on the right
blake shaw 🇵🇸rml@functional.cafe
2023-10-15

#relm4 is pretty damn attractive I must say: #elm style reactive native UI with #gtk4

not just to use, but steal ideas from. gtk is powerful and generic, but its a headache to use in vanilla form.

relm4.org/
#rust

2023-10-14

@sonny I’m currently writing #Spidey (github.com/kdwk/Spidey), an app that lets you open websites in individual windows in #Relm4. It has been an absolute joy to use. With very little boilerplate, almost every single line of code I wrote myself is #UI code or #coreLogic. It is very intuitive and convenient, with many helper functions and macros providing idiomatic wrappers for clunky #GTK methods.

Client Info

Server: https://mastodon.social
Version: 2025.04
Repository: https://github.com/cyevgeniy/lmst