GTK4 Matrix Client
github.com
github.com
All the ones I've seen emulate Whatsapp and signal. Big avatars, lots of spacing everywhere. This doesn't work well if you bridge lots of other networks with many channels. Discord, slacks etc.
For now I still bridge that kind of network to IRC, and I use matrix just for my personal chats. Because there's just no good client that doesn't become a huge mess with that many channels open.
It could really do with threaded channel lists too, so I can have my slack groups and discord servers with their channels underneath without bunching them all together without any organization.
That use case was actually mentioned in the spaces announcements.
Of course the UX for spaces isn't exactly great either atm.
The old tags worked very well for this but the problem is that element shows each tag as its own independently scrolling list. So if you have many of them you have lots of tiny scroll zones. That doesn't work at all. Also they seem to be wanting to deprecate tags, most of the management features have been removed from element.
This is on a modern desktop CPU with plenty of memory headroom. It never happened so far on a profile with less chats.
Tbh tags were fine, it was just the whole UI around it in Element that was just totally screwy. But the concept itself works ok (though I missed the ability to auto assign them based on the bridge).
Oblivious some help would be welcome. Here is the guthub repo https://github.com/quotient-im/libquotient/
I think Nheko suffers from low-density UI the same as Element. Especially the room list. But unlike Element it does support tags properly which is indeed great.
I can also personally vouch for weechat, it's extremely customizable and fun to use.
I think there's 2 kinds of usecases for matrix. One tries to just replace Whatsapp etc as a person to person chat network. It aims mainly at novice users. The other usecase tries to bridge as many chats into it as possible to have a central place of interaction. This is obviously for more advanced users. Still, the element team seems to aim for this usecase too with their Element One service.
The ui of element and the other high profile clients works great for the former but poorly for the latter.
I use gomuks by the way but I would like to see images (with a click if needed). Gomuks actually shows them but very low res.
I should give it another try though. I'd kind of forgotten about it because after the first try I've hidden the entire vertical bar for it, to reclaim some screen space. So I haven't given it any thought lately.
What we are actually waiting for the fix?
Right now its really hard for alternative clients to support E2E because they are forced to build the whole encryption stack up.
As a consequence the alternative clients have just not matured and have mostly lost steam.
The next gen of matrix mainline will be moving to a Rust based library stack that has an explicit goal of making straight forward bindings for 3rd party clients via a mostly standard C library interface (so yay for elisp, python, c++ etc) and of course the Rust libraries can be deployed to wasm for web and javascript.
I think we'll get a lot more mature clients that will be more useful, because yeah... the current matrix mainline client has "modern" disease pretty bad.
Even in compact layout, with small fonts, with one sidebar hidden and the other in icons-only mode, it manages to make a 600-pixel-wide window feel cramped. About half of that width is filled with icons and empty space. The settings panel doesn't even fit in that size.
The jabber clients I used in the past were comfortable at a fraction of that size. I think part of that was because they didn't force everything (e.g. contact lists and conversations) into a single window, and part of it was that they didn't flood the display area with margins, oversized (often repeating) icons, and space reserved for unimportant things that in some rooms will never appear.
I tolerate the interface because I love what the network is accomplishing and I haven't found an alternative client that seems better overall. I might try Nheko if/when its e2ee matures.
Meanwhile Synapse is continuously getting more resource efficient too, with Fast Joins landing shortly - and Conduit looks to be making decent progress as well.
In other words, i think we’re about to enter a golden age of Matrix servers :)
What's clunky about Synapse setup? I can perhaps see setting up a worker (sharded) setup is a bit complicated, but a basic monolithic instance is pretty straightforward.
Also, how much resource usage are you seeing? My monolithic Synapse instance uses about 300-500M of memory usage and 5-15% CPU isn't at all bad and it's in a lot of rooms.
It might just be my own lack of skill, but I found myself initially getting overwhelmed at trying to hunt down which settings to change to ensure no federation or third party calls were made, since that was my usage scenario. Even then, a rogue "allow vector.im" snuck in here and there at first. My second go around a year or two later was much easier since I already knew what to look for, and had a better grasp of how to handle the ACME/DNS aspect of it all (which isn't the fault of the Matrix team at all, but was still a pain point). Some other pain points for me were grasping identity servers and trusted certificate providers and STUN/TURN and integrations, since there was a whole lot of learning necessary for me before I was comfortable just following the installation steps as-written.
I did try the Ansible playbook during another attempt, and while it worked pretty well there was still the same sense of "wow that's a lot of configuration". I also foolishly tried to apply it to a pre-existing server running nginx, which, while possible, adds some extra complexity to avoid breaking existing configs. YMMV, I am just not the brightest of fellas.
As far as resources go, a $5 VPS covered more than enough to handle even the older versions of Synapse for my use case, since I wasn't federating and have a fairly small number of users (under 100). I couldn't tell you whether federation or more usage would change that, but community reports (at the time) were that Synapse struggled. Much of that seems to have been addressed since then.
Overall I think if I were to start over, I'd stick to the Ansible playbook on a fresh server.
A lot of the clunky is stuff like postgres settings - is the hbaconfig thing right? why is my default install of postgres oin deb 11 listening to public ips - why does it take 36 hours of chat replies to figure out that broken part..
why does certbot muck up my nginx - it's not matrix fault, or certbot's fault or nginx's fault - I just followed different parts of different tutorials for different pieces of the needed things and things broke.
I wish support / QnA was moved out of the chat rooms and into a QnA wordpress theme so people didn't get ignored at whatever hour and issues missed.
I tried ansible a bunch of times over times - some support happened, but I had to abandon it, even though it seemed to do 99% of the things..
I still can't get my element to allow 'explore rooms' guest joins - even though I had it working on my second install - and I double checked the settings - and I've asked for help 3 times in the room -
and then there's the maintenance things in need - I'm shredding my first successful one since I can't get postgres to vacuum a 350GB DB on the droplet I'm paying too much for, and to find that out was a joyous long process of lots to learn.
Anyway, I love it. It's the best. It's just clunky because there are so many other things that aren't easy, that aren't matrix.
and the maintenance and other addin things are not easy - like I wish adding sticker picker was like adding a wordpress plugin - I could never get that working with ,y 1.2.6 install - but that's not matrix fault - it's just a thing that was tried and not easy for me, and the support help was a little - so cool - but not enough - so never worked.
things like that.
I really need to get ahead of the maintenance thing to remove old stuff and stuff - hope that works okay. fingers crossed - or I'll just be shredding a chat server every 6 months and starting a fresh one - haha.
Because it isn't. I cannot comment on the other stuff but this simply isn't true. PostgreSQL on Debian (and upstream) only listens to 127.0.0.1 by default. If it listens to more it is likely something the you or the Matrix devs have done.
This was part of the clunky / multiple tutorial thing - I think to get it up and running I had 150 tabs open - 30 tabs for different "how to's" for nginx and certbot, 50 tabs open for postgres, 50 tabs open for ufw and iptables - 20 tabs with stack overflows and such on minor things. (This may be a slight exageration but not far off I'm thinking)
I think I was using 4 different matrix tutorials from different places to do the different things. So having non-default things happening and conflicts and all that - no surprise.
Some were tutorials for ubuntu or other OS's, many were made for Deb 9 or 10 - but that's just what I needed to get through all the hoops.
I'm considering exporting a list of the history / bookmarks I've gone through this last couple of installs to show the madness.
I've also (pretty sure) saved all the command line stuff from putty - obviously there are many mistakes, and not every command will be exported - but it's a rough guide to get started )and easier to search for commands in there like how to stop / restart synapse - which varies depending on OS and such I think - and this is without the maintain things, the mojinor thing, the sticker picker and other addins (yet) that should be a thing.
not doing the ngninx and certbot stuff in the right order led me to days of troubleshooting only to finally give up and use a completely different domain name in order to get it working for the element part - haha - good times.
I've learned a lot about little things, but still feel all the moving parts are clunky - and it's not matrix per se - but dang it's not a one-click install and config everything like a softalicious doing wordpress either.. of course it's better (postgres va mysql) - and nginx vs apache and all that.
There are a ton of values to tweak which impact the server and room sizes you can federate with, I’ve never been able to figure out how to come up with sane values to set those that also allow joining common, larger community rooms like #matrix:matrix.org
I haven’t tried in a while so it’s possible that I missed something but for someone trying to set up a homeserver, even someone technical, it can be confusing and intimidating.
I mean, element is fine as a reference client, but I would so much prefer something that looks and behaves more like Quassel (and preferably not electron-based but I'm not judging if the RAM usage was fine).
But every other client I tried either a) doesn't look like what I want b) is Linux only c) doesn't even reliably work.
Kinda annoying, but at least the writing is on the wall that I need to find a new Matrix client.
Its written in Go and it looks like the author generates their own gtk4 to go bindings. https://github.com/diamondburned/gotk4
I recently made a simple app in Go with GTK and it was quite pleasant:
* Element Web (via matrix-js-sdk)
* Element iOS (via matrix-ios-sdk)
* Element Android (via matrix-android-sdk2)
* ElementX iOS (via matrix-rust-sdk)
* Fluffychat (via Dart Matrix SDK)
* Fractal (via matrix-rust-sdk)
* Hydrogen (via hydrogen-sdk)
* Syphon (built into its Dart codebase)
* Thunderbird (via matrix-js-sdk)
* Cinny (via matrix-js-sdk)
* weechat-matrix (matrix-nio)
* weechat-matrix-rs (matrix-rust-sdk)
* nheko-reborn (mtxclient)
* mirage (matrix-nio)
* gomuks (gomautrix)
* ocrcc-chatbox (matrix-js-sdk)
...and a bunch of abandoned ones too, like Riot Android (matrix-android-sdk), Seaglass (matrix-ios-sdk) and Daydream (matrix-rust-sdk).
Meanwhile any Matrix client can speak E2EE if you connect it via the pantalaimon E2EE proxy (powered by matrix-nio).
In other words, the whole "almost every Matrix client out there has no support for E2EE" is really not true - there are loads of them, spanning many different platforms, built using different independent SDKs.
Not yet. The next major release of fractal will be based on matrix-rust-sdk (and presumably will have E2E encryption).
Additionally, having the same license in the whole server/client ecosystem makes things simpler.