logoalt Hacker News

Writing a blatant Telegram clone using Qt, QML and Rust. And C++

124 pointsby tempodoxlast Tuesday at 3:41 PM81 commentsview on HN

Comments

ekjhgkejhgklast Tuesday at 8:07 PM

> I believe they have put the most love into their user interfaces out of all the chat programs I have seen

Absolutely true.

Telegram: Best UI. Signal: Best privacy. WhatsApp: Largest userbase.

It's interesting to think about these three dimensions. I could theoretically pinpoint everything that make Telegram's UI the best, and copy it. I could do the same with Signal's privacy. Both of these are technical problems. There's a process for becoming the best at UI, and there's a process for becoming the best at privacy. I don't know a process for becoming the one with the largest userbase.

Other than the 3 big ones, I recently found Jami [1]

Good UI, though not as good as Telegram. Arguably better privacy than Signal - you don't even need an account if you don't want. Zero userbase. Free software.

[1] https://jami.net/

show 12 replies
solarkraftyesterday at 8:04 AM

I like this and would like it to continue! FOSS chat UX is, in average, not good at all in my opinion. I don’t need an exact copy of Telegram, but something with a similar amount of care put into it (which is a lot!).

> There's currently no Matrix to speak of, but it's the thought that counts.

Welp! I was going to ask about it. I’m curious how that goes because Matrix is the natural thing to support, but I’ve been quite critical of that being too hard to actually do. The Rust SDK supposedly provides a lot of support here, so maybe the experience won’t be too bad. Some inherent protocol stuff may still limit the UX and I‘d love a thorough writeup on it.

scrivanodevlast Tuesday at 9:13 PM

QML is a great language to make GUIs. A few years ago I tried XAML, and it honestly kind of sucked in comparison (the verbosity alone made it painful to work with). I haven't tried Slint UI, but supposedly their DSL is even better since it fully compiles to native Rust code.

show 1 reply
LorenDBlast Tuesday at 8:57 PM

> Qt Creator is actually very good, perhaps unexpectedly so for those who haven’t used it

This. I can't abide VSCode. I instead use Qt Creator for all my C++ development.

show 5 replies
Imustaskforhelpyesterday at 9:50 AM

Fascinating.

I am seeing that you are writing a matrix client UI basically which is nice but I am interested if its possible that you could write it in (agnostic?) UI way if if it makes sense, where I can swap out any other protocol instead of matrix too

I was just interested in something similar once and there are other protocols like session,simplex,signal etc. too which I feel like can definitely benefit from an unified UI perhaps

Personally I am always interested if any messaging app should just create a cli application/api and have someone else create the UI since I feel like the UI bugs and similar can definitely be fixed if its not in house.

I am curious of your opinion regarding it but the project looks cool!

Personally although I can enjoy telegram's UI, nothing beats cinny's UI ever.

Cinny has the best UI of any messaging app I have ever seen personally, there are only very few things I wish to change in that, which can be changed via userstyle and even recent modern element feels good to me personally but cinny is brilliant overall

So I am interested to hear what your thoughts are on cinny too (cinny.in)

show 1 reply
RustSupremacistyesterday at 12:23 AM

The GUI situation in Rust is dreadful: https://www.boringcactus.com/2025/04/13/2025-survey-of-rust-...

Rust is simply not meant for GUI-based data design but I still want Qt in Rust. That's it. Not QML or Slint or egui or Tauri or gpui or Iced. No markup at all. None of the immediate mode things. No double and triple languages like this C++ mess. Definitely not GTK or the other non-imperative subpar things. There is one option. Until there is more than one, Qt is the best. No one else is worried about this missed opportunity.

show 4 replies
p0w3n3dlast Tuesday at 9:13 PM

That's great work. Thanks for sharing. I was wondering is there a good way of mixing rust and Qt but I decided that this wouldn't make sense... But I'm used to generate C++ code from uic, and have little experience in qml.

show 1 reply
alperyesterday at 9:19 AM

Great work on the 20% of making a working chat app. Now somebody has to do the remaining 80% and then the other remaining 80%.

show 1 reply
QuantumNomad_last Tuesday at 9:08 PM

> found out that VS Code was running cargo check one way while in the terminal cargo check was doing some other thing, and effectively blowing the cache every time I switched from one to the other

I have a similar problem with JetBrains RustRover. For example when I do cargo build and cargo clippy in the terminal after RustRover has done build it seems to start over rebuilding more things than when I edit something in vim and only use cargo from the terminal.

show 1 reply
dev_l1x_belast Tuesday at 8:25 PM

It would be great to create a torrent like protocol for chat. People would host for their own circle of friends with some central hosting option for non technicals.

show 2 replies
scuff3dyesterday at 5:08 AM

I think your emoji pop up thing looks better then Telegram's. There's has way too much animation with all the emoji bouncing around. Yours was nice and clean.

show 1 reply
bfdddssslast Tuesday at 9:07 PM

[flagged]