My laptop is getting old and i can’t have Element eat up half of my RAM. There are many more clients out there but which one is good? aka "the best? ;-)
My requirements: lightweight, encryption 100% supported, active development/community. runs neatly 24/7 in the background.
Should also support the latest features, let me customize when to get notifications: priorities / muted chatrooms. And ideally also look clean and run on the Pinephone. But that’s optional.
I don’t care which desktop environment or cli.
What do you use?
Have you tried Nheko? I switched to XMPP some time ago, but when I used matrix Nheko was my goto. Also gomuks is another choice, runs in terminal
Why the switch to XMPP btw?
Better native client support for the most part, but xmpp servers also show themselves better (faster, more stable…) than matrix.org I think more matrix users should consider using smaller instances tbh
Thanks for sharing, I’ll check out XMPP too - last time I checked was 10 years ago :D probably a lot has changed
I think more matrix users should consider using smaller instances tbh
Matrix on smaller instances suck because of how bad the protocol is. It “re-plays” the entire history of the channel on first join because channels need to be consistent between all instances because Matrix isn’t just a mediocre chat protocol but a generic data protocol that’s been beaten into the shape of a mediocre chat protocol.
It tries contacting every instance in a channel for their keys. Even the dead ones. And yes it takes exactly as long as you think it does for them to time out. Dendrite solves this by asking matrix.org for everyone else’s keys by default.
But because channels are completely synchronized at least you get to easily migrate channels between instances just by assigning an alias and telling people use the alias to join instead.
Woah, didn’t know that! I remember searching for older messages in Matrix be really bad. I only use IM software for 1to1 conversations, so I probably don’t know the worst of the protocol.
Dendrite solves this by asking matrix.org for everyone else’s keys by default.
Sounds a bit too centralized for me
Sounds a bit too centralized for me
You can turn it off however that makes join times to any channel with history (say… the dendrite release announcements channel for example) unbearably slow to join.
I look forward to the day that Synapse is deprecated in favor of Dendrite or Conduit.
i am currently testing https://iamb.chat/ it’s a bit unique in how it does things but promising of you’re into TUI and vim
If you are an Emacs user, then I suggest you try out Ement.el!
Emacs is such a weird Texteditor i must say.
At this point, it would be insane to classify it as a text editor only. I personally refer to it as the “Emacs distribution”; a distribution that happens to have its own integrated text editor and other useful tools. But a more accurate description is, Emacs is an e-lisp interpreter and because of this it’s a very extensible tool!
neochat has been my go to
I was using NeoChat for a while, but IIRC it doesn’t support encrypted historical messages, so you’d have to get it set up and keep element around for searching history…
NeoChat has the benefit of supporting OIDC which my server uses exclusively, otherwise I would have given Fractal a look as well.
Try gomuks. It’s cli written in go. Highly configurable and if your terminal supports images, it’ll show them too.
This client is cool! Thanks for the suggestion!
Thanks. I’m halfway through installing all of you people’s recommendations. I’m a bit disappointed in the way encryption is handled in matrix. I’m again running into issues. gomuks gives me its fingerprint but element doesn’t do that kind of verification any more. Guess I have to try more client until I find one that combines all kinds of verifications and I can get encryption set up and connected between them.
There is a desktop Fluffychat client written in Flutter I believe.
Don’t know about the options you need, I just use it on my laptop because it isn’t element.
I don’t think it will meet all your requirements (besides being light-weight), but I’ve been using weechat-matrix for a week and it’s been fine. Without this, I wouldn’t use matrix at all.
There’s matrix-cli, but i don’t know anything about it.
Cinny on the desktop.
for the curious, how much RAM do you have?
8GB on my laptop but shared with a modern browser with 500 tabs open, an editor(/IDE), mail-client and whatever gnome likes to waste resources on (gnome-shell, gnome-software in the background etc). that accumulates to a bit less than 5GB. Plus whatever i currently need open to work on. And a computer needs a bit spare to buffer/cache things.
The pinephone has 3GB of RAM.
It’s not nothing. But also not enough to have every other application written in Flutter.
Sounds like matrix client should be the least of your concerns actually. My RAM usage rarely goes beyond 2gb with xfce and firefox. Switching to NetSurf like above comment pointed out is a bit of overreaction actually, Firefox with Ublock Origin and a handful of tabs open will do just well
Did gou look into what takes up the most memory? You could downgrade from the modern browser with 500 tabs to netsurf with 500 bookmarks, perhaps, or similar. Many modern websites don’t work there, though.
Instead of Gnome, I’m using Sway, at the moment it’s taking up 236MB resident.
Do you need that mail client to run 24x7? It’s better for mental health to check mail when you decide (once in the morning), not when some rando wants to sell you cannabis oil (best cure for any ailment!) - or you might find something tiny that checks for email and shows a desktop notification, so you know to launch your mail client.
Alacritty likes to munch memory, Foot takes up much less, but Foot doesn’t render some colors correctly, for whatever reason.
Shop around, there are more options than just changing the Matrix client.
Yeah, I know. And I’m scaling down with all of those, too (eventually). It’s just … I have to start somewhere. And I’ve decided Element is the first to go. Gnome is kind of nice. And works well on a touchscreen. And I sometimes need WebRTC, mic/camera and video in my browser.
I can use a more lightweight browser for my daily use and maybe get organized and close tabs and use bookmarks. I like the concept of tiling window managers, so maybe I’m going for something like Sway next. I’ve had used Xfce for a bit, but that also uses quite a lot of RAM (for something that claims to be lightweight?). And changing from KDE/Gnome comes with quite a lot of choices for alternative programs and new little helpers to get accustomed to. From the little thing that shows me the time in the US and the weather in front of my own door to the calculator to the default mail client. It’s a bit more complicated and just takes a bit of time.
Using mail 24/7 was a bit of an exaggeration. I’m using it in a healthy way. But It is useful to get for example the notification that a parcel is getting delivered today, to talk to companies and people who don’t own a proper messenger. At least I’m okay with the 5 spam mails while everybody around me is getting constant notifications because some friend sent some deep motivational quote on WhatsApp.
Thank you all for the suggestions. Now I have to have a closer look at each of them. It’s just, I’ve been annoyed a bit lately. I think 8GB should be plenty and enough to not worry about RAM and just use any application and open as much as you like.
An easy start would be Firefox + tree style tabs + auto tab discard, that way you can have your 500 tabs and keep only N loaded (you choose N).
Only using Android for socials and only tried element. I want something different. Element has a settings overload, but no way to remove the status bar icon. I hate that so much I just leave it disabled in settings unless I need to use it.
what do you mean by status bar icon? if you mean the persistent notification, it’s so element isn’t killed by android and can receive push notifications without google play services
Yeah. I like my home screen like Gnome’s DE; nothing on it whatsoever. I only want my 3 button navigation, clock, WiFi status and battery. Absolute fine grain control over my notifications is very important to me. I’m extremely burned out on notifications used for user attention manipulation on the google framework. I an on Graphene with no google services. I only want notifications if they can be default opt-in and primarily peer to peer for things like DM. I don’t want any visual indicator for such background services. Basically, I expect SMS like functionality; out of sight, out of mind until needed.
I think the way to handle this is to long-press on that notification and turn it off. This way the notification is there in theory so your app doesn’t get killed in the background and you don’t get a notification shown either. I did that with all the persistent notifications from several apps (including Element) and my phone looks clean. But don’t disable all the notification categories. Just the persistent background one so that you’ll still get notified of messages and so on.
Interesting. Thanks for the info. I turned off the listening notification. Hopefully this is the one you meant. I hadn’t thought about settings for the device itself.
I don’t entirely understand the verification notice and all. I don’t understand the context of verification. I generally avoid making any external internet connections (finger printing) between my phone and other hardware. They are on separate VPNs and firewalls. I get the message about no verification every time I open element. I don’t know what it is trying to verify exactly. I imagine it is a copy of the keys and hashes, but like, I don’t want to connect social across devices and I am given no options or context details. I don’t mind backing up or storing keys, but I’m not installing the software on my workstation or punching holes in that firewall.
Anyone with access to your homeserver can change your password and log into your account. That’s why by default, when someone logs into account, their session is unverified and doesn’t have access to encryption keys. To verify it and sync encryption keys, you have to mark it as trusted from another device you own (which sends the encryption keys from the old device), or if it’s the first session it becomes the only trusted device (and generates new encryption keys).
Note that the homeserver owner can always reset all of your sessions and encryption keys, then log in as the first session. They won’t be able to read your past encrypted messages obviously, but they will be able to impersonate you. To prevent that, you can additionally perform the same verification process for the devices of those you chat with - that way they will also know which devices you marked as trusted.
Yeah. That’s the correct one. You can also do that with other apps that rely on a background connection to some server. I also don’t use google and their cloud messaging. So that’s the way around it.
Regarding the verification: It’s an additional layer of security for you. To make sure all the devices logged in into your account actually belong to you. Otherwise someone with access to your computer or password (or matrix-server(?)) could in theory read your messages. To prevent that, they make you verify it’s actually you who registered that additional device. I think Element has an option to not sync encryption keys with unverified devices. So you could end up with malfunctioning encryption. But in case it’s working fine for you, you can skip the verification. You’re just missing out on the extra security this way.
thing is what you want is impossible (background services with no notification). However, Android has per-app notification settings where you can toggle notification categories, so the app can request to not be killed by showing a persistent notification, and you won’t see it because you’ve hidden it
so turn off notifications??
Yes, for social type stuff. I’m disabled. Interruptions are very counter productive for me. If I have the strength to work on something, the last thing I need is some excuse for distraction. It will only be a short time before I will need to take a break, and will inevitably see whatever pending dot notifications I am interested in checking. Or I’ll just check them manually if I care. I don’t mind when notifications are from individuals sending direct messages. I don’t want any other form of notifications by default. I’m fine with something like a dot notification on the app only, like if there is a direct comment reply to something I posted on a general thread, but this is not a phone call, sms or equivalent type of priority to me. It is peripheral, and something that has limited import. It shouldn’t demand my attention with a sound in the real analog world, or shove itself in my face the moment I view a device. Like a student in a classroom, it should quietly raise its hand and wait for its turn if time allows.
The matrix website has an extensive list of matrix clients out there. Idk why this question is still asked when the answer is very easily found.
Two of the top answers here are missing from that list and, to be frank, that list does not really contain any useful information. For example, where do I see on that list which clients can display images?
You just click on the links and go to their pages… This is literally such little effort dude.
I was specifically asking for recommendations by actual humans. I didn’t write a lengthy essay about all of my previous life but I’m pretty aware of that list and even tried several clients but never found anything I fell in love with.
You sometimes simply (and politely) ask other people. And you learn. The main benefits are: You get real-world info. There are several clients out there that are only good ‘in theory’ but are lacking in every day use. And second, if you get the answer that everyone is happy with something and you’re the only one with a certain problem, you get to learn that you do something wrong or have a weird use-case.
You don’t get that info from that list. And how would I even do this? Start a spreadsheet with the 19 mentioned clients, have 20 features I need and go through the source code to see what’s implemented for every client that hasn’t a proper list on their github Readme? How long would that take me? And then install all the 20 clients and measure their resource usage or infer it from the programming language/framework? No, no. Sometimes asking people is just the way. And word-of-mouth is exceptionally good when you’re directly speaking with people and recommending them some distro or good piece of software out of the hundreds of possible choices.
I’m sorry for being a bit rude myself. My main point was just to explain myself.