[HN Gopher] GTK4 Matrix Client
       ___________________________________________________________________
        
       GTK4 Matrix Client
        
       Author : ushakov
       Score  : 87 points
       Date   : 2022-04-10 16:34 UTC (6 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | unicornporn wrote:
       | Like almost every client out there it has no support for e2ee. I
       | was happy to find https://nheko-reborn.github.io (Qt based).
        
         | Arathorn wrote:
         | Off the top of my head, Matrix clients with full support for
         | E2EE include:
         | 
         | * 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.
        
       | JCWasmx86 wrote:
       | Or an alternative GTK4 Matrix client:
       | https://gitlab.gnome.org/GNOME/fractal written in Rust, although
       | a bit of WIP
        
         | ushakov wrote:
         | thanks for sharing, i know fractal but didn't knew they
         | upgraded to GTK4
        
           | smoldesu wrote:
           | Doesn't look like they've added any features with the GTK4
           | build, just from scrolling through the recent commit history.
           | Much like a lot of these recent GTK4/Libadwaita apps, it
           | looks like they're just maintaining feature parity with the
           | old version while removing the flexibility the older versions
           | had (eg. more packaging options, better customization, none
           | of the reviled "flat button" nonsense, more accessibility
           | options for people with vision impairments, etc).
           | 
           | Kinda annoying, but at least the writing is on the wall that
           | I need to find a new Matrix client.
        
             | CameronNemo wrote:
             | The new version was completely rewritten from scratch to
             | use the new matrix rust SDK. As a result it supports E2EE,
             | while the old version does not support that.
        
           | JCWasmx86 wrote:
           | The client fractal was rewritten for GTK4 (Called fractal-
           | next) and some days ago, the GTK3 Fractal is now the legacy
           | one and Fractal-Next is the new Fractal
        
         | CameronNemo wrote:
         | The featured go gtk4 client also seems wip. Doesn't even
         | support e2ee, which fractal does support.
        
       | torstenvl wrote:
       | I'm curious as to what the purpose is of making a network
       | _client_ AGPL? I don 't quite understand how the author wants
       | this license to apply to this software.
        
         | megous wrote:
         | gtk apps can be run on the server via broadway.
        
         | karmanyaahm wrote:
         | With remote computing (running the OS and even webapps remotely
         | https://www.cloudflare.com/products/zero-trust/browser-
         | isola...) becoming more and more popular, I'd imagine it's a
         | case of better safe than sorry.
        
         | Arathorn wrote:
         | Making client code AGPL normally means the author is making an
         | ideological statement that "even if any of this _could_ be run
         | serverside, you must still release your changes". (Or they are
         | cargoculting a restrictive license from elsewhere :)
        
       | k8sToGo wrote:
       | I looked at setting up a matrix server. It looks way too
       | complicated. There is an Ansible script but it has a list of
       | billion optional items. Too much choice is overwhelming.
        
       | IceWreck wrote:
       | This still needs some dev (lacks E2EE and Notifications) but
       | looks good otherwise.
       | 
       | Its written in Go and it looks like the author generates their
       | own gtk4 to go bindings. https://github.com/diamondburned/gotk4
        
         | Arathorn wrote:
         | This looks really promising. I'd love to know why the author
         | wrote their own SDK rather than using gomautrix or similar (and
         | so getting E2EE for free)
        
       | jimmygrapes wrote:
       | I appreciate that there are more clients for matrix being
       | developed, but I really wish there was more effort put into
       | making a better server. Dendrite and Conduit are making progress,
       | but it's excruciatingly slow. Synapse works but feels extremely
       | clunky to set up and maintain, and that's not even counting the
       | resource usage (which is admittedly getting better, but still
       | harsh).
        
         | feanaro wrote:
         | > Synapse works but feels extremely clunky to set up and
         | maintain, and that's not even counting the resource usage
         | (which is admittedly getting better, but still harsh).
         | 
         | 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.
        
           | jimmygrapes wrote:
           | It's hard to put into words, which is why I said "feels"
           | rather than "is" ;)
           | 
           | 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.
        
           | stevenicr wrote:
           | no op, but just went through my 6th synapse / element
           | install..
           | 
           | 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.
        
         | Arathorn wrote:
         | Dendrite development is literally going faster than ever, with
         | major releases every 2 weeks, and 0.8 out last Friday
         | (https://github.com/matrix-org/dendrite/releases), and 83% CS
         | API compliance and 95% SS API. (Edit: see also the commit
         | graph: https://github.com/matrix-
         | org/dendrite/graphs/contributors) The core team is depending on
         | it to power the reference P2P matrix implementation as per
         | https://arewep2pyet.com, plus we currently have dedicated
         | funding for Dendrite, avoiding the team getting sidetracked by
         | other stuff as they have been in the past.
         | 
         | 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 :)
        
         | ccakes wrote:
         | Something I feel like is missing with both Synapse and Dendrite
         | is some kind of tuning guide or config generator based resource
         | availability/usage.
         | 
         | 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.
        
       | CameronNemo wrote:
       | Doesn't support e2ee, so why would I use it over fractal?
        
       | GekkePrutser wrote:
       | I wish there was a good high density client for matrix. Like an
       | IRC client.
       | 
       | 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.
        
         | JCWasmx86 wrote:
         | Element has an IRC mode, at least for the messages
        
           | GekkePrutser wrote:
           | Yeah I know but the messages are exactly the part where I
           | don't really need it. It's the channel list that becomes a
           | mess.
           | 
           | 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.
        
             | viccuad wrote:
             | I already achieve that by creating my own private spaces,
             | where I distribute the rooms I am in as I see fit. Plus, I
             | join the spaces of whatever topic I want to, too.
        
             | the_duke wrote:
             | You can sort of create or your own threaded channel list by
             | using spaces.
             | 
             | That use case was actually mentioned in the spaces
             | announcements.
             | 
             | Of course the UX for spaces isn't exactly great either atm.
        
               | GekkePrutser wrote:
               | Yeah I looked at spaces but it didn't seem to work for
               | me. I couldn't set it up with my local bridges the way I
               | want. And I don't want to micromanage everything.
               | 
               | 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.
        
               | feanaro wrote:
               | I'm curious, why don't spaces work for you?
        
         | foresto wrote:
         | Desktop Element's interface is also awkward for some of us who
         | don't use many channels but simply need our screen space for
         | other things.
         | 
         | 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.
        
         | akselmo wrote:
         | Quaternion might be something you like:
         | https://matrix.org/docs/projects/client/quaternion
        
           | GekkePrutser wrote:
           | Thanks I'll try that!
        
             | unicornporn wrote:
             | Have they implemented e2ee yet? https://nheko-
             | reborn.github.io has.
        
               | ognarb wrote:
               | A PR was merged recently to make reading encrypted
               | messages in libquotient (the lib used by both Quatermion
               | and NeoChat). Another one is in the work to send
               | encrypted messages.
               | 
               | Oblivious some help would be welcome. Here is the guthub
               | repo https://github.com/quotient-im/libquotient/
        
               | unicornporn wrote:
               | Very good news, thanks for the update.
        
         | throwmeariver1 wrote:
         | It goes for nearly every team/chat application nowadays the
         | information density is just too low. Webex is the worst
         | offender if you have a thread in a channel it's basically
         | unusable.
        
         | reayn wrote:
         | Terminal clients like weechat[1] might catch your attention,
         | but I'm pretty sure what you're looking for just doesn't match
         | up with modern UI conventions.
         | 
         | I can also personally vouch for weechat, it's extremely
         | customizable and fun to use.
         | 
         | 1. https://matrix.org/docs/projects/client/weechat-matrix
        
           | GekkePrutser wrote:
           | I don't think it's a matter of ui convention. Doing things
           | the Whatsapp way does not work for such large amounts of chat
           | channels. They're just doing it because people are used to
           | it..
           | 
           | 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.
        
             | jszymborski wrote:
             | I could be wrong because I never used them myself, but
             | isn't that Spaces feature supposed to address this at least
             | in part?
        
         | WhatIsDukkha wrote:
         | So yes this is a big issue.
         | 
         | 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.
        
           | feanaro wrote:
           | Just for everyone else reading, the modern Matrix Rust stack
           | referred to here is the matrix-rust-sdk:
           | https://github.com/matrix-org/matrix-rust-sdk
        
         | BlueTemplar wrote:
         | Wouldn't Thunderbird be pretty dense ?
        
         | jimmygrapes wrote:
         | One of the things I miss most in modern chat clients is the old
         | MDI style interface where each channel could have its own sub
         | window, allowing for tiling and repositioning of multiple chat
         | contexts at once. I know weechat and some others have similar
         | capabilities, but I'm thinking more like mIRC. This complaint
         | extends to a lot of modern software, tbh.
        
           | ognarb wrote:
           | NeoChat support this. You can right click on a room in the
           | list to open it in a new window.
        
       ___________________________________________________________________
       (page generated 2022-04-10 23:00 UTC)