Element | Matrix Chat Client on openSUSE

All the kids have been talking about the wonders of Matrix as the future of decentralized, secure communication. I have known about it, seen bridges being used in the openSUSE discord and Telegram rooms. Most of my experience has not been great, generally there were significant delays. I have used a few clients, Riot.im on a web client, which I didn’t care for and I also used Quaternion a Qt based client but I have had issues with the encrypted messages bit. I found the user experience to be rather… lack-luster at best. Mostly, I found the whole thing quite confusing. Accessing new rooms wasn’t self-evident, understanding what Matrix is and isn’t was confusing and I therefore found it frustrating to use. My experience, has been that I really preferred Telegram for communication.

A revived curiosity came about when I heard of the splendors of Matrix being espoused by the folks on Destination Linux; Noah and Ryan especially. They really pushed the idea that this is the future of communication. I still mostly dismissed it, thinking that my Telegram experience was satisfactory. Then I heard Noah talk about how Matrix has revolutionized his communication workflow. Matrix has opened up functionality of which specifically, he described how he can text message, as in SMS, on Matrix. Now I was truly intrigued and decided that it was time to look into this once again. I could endure the pain of learning this to eliminate my SMS frustrations.

I know I could use the Element web client for Matrix but I don’t like web clients. If I have to have a browser open to use an application, I do not like the experience, it feels disconnected. Now if you wrap that web app in something like electron and make it feel like a part of the system, that changes things. They feel more complete like a real application and give me what is quite important an icon in my system tray that notifies me of activity. The emphasis here is, I want a system tray indicator of messages or activity. Any communication application that doesn’t give me this is immediately on the chopping block with a need to be replaced. Element meets my criteria and the process began again for using it. I checked the openSUSE Software Repositories and Snap Store, but it wasn’t available. It does, however, exist as a Flatpak (at the time of writing).

Setup Flatpak and Flathub Repository

The first step is to set up Flatpak and the main repository Flathub to get access to the Element-Desktop Flatpak. Generally speaking, Flatpak is set up on most distributions. At least, most distributions don’t make it difficult to get going if not already configured for you.

Though I am gearing this towards using openSUSE, there are instructions for other distributions available. You can go here for the Quick Setup for openSUSE or stay here and I’ll provide the quick, down and dirty ways to get it going. For those that prefer the click around and install, navigate here for the click to direct install method.

https://software.opensuse.org/package/flatpak

or you can use the more fun method and install it in terminal

sudo zypper install flatpak

Next, add the Flathub repository, in terminal, as root run this. If the Flathub repository is already set up on your system, it will not add another (see the --if-not-exist bit on the command).

flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

Optional Additional step is to install the Discover graphical application explorer backend so you can graphically explore and install Flatpak applications.

sudo zypper install discover-backend-flatpak

Now you are set with installing Element or any other Flatpak for that matter.

Installation of Element

I am presenting three methods of installing Element on openSUSE. Though, the third method my make the previous instruction of setting up the Flathub repo redundant.

Method One – Terminal

The quick and easy way to install Element is from the command line because the command line is awesome.

sudo flatpak install im.riot.Riot

Unfortunately, Flatpak application names are kind of silly in comparison to Snaps but I am sure for good reason. Read through and agree with the changes.

Method Two – Graphical with Discover

The graphical way may indeed be less confusing. Since Discover, the KDE graphical application explorer has been pretty great as of late, I recommend it for exploring Flatpak applications. It is as simple as searching for “Element” and you will get the green and white logo at or near the top of the list, selecting it and install.

The nice thing about Discover is that you can scroll down and see the source of the package. If there was another source for Element available, you can very easily select the source repository. It’s a real nice feature of Discover.

Method Three – From the Flathub website

Finally, You can also use the install file from the Flathub website where you will be provided a *.flatpakref file that some application managers like Discover can unpack and utilize.

https://flathub.org/apps/details/im.riot.Riot

I didn’t actually test it but it should work… maybe… if it doesn’t, be sure to let me know.

With whatever method you choose, it installs and integrates quite nicely into your menu and is immediately executable. There is no funny business to be had, weird hacks or changes that are necessary to run the thing. It is simply, install and go.

First Run and Impressions

When I started up Element, I was greeted with the login screen. It has a clean and modern feel to it that looks like time was taken to give the right visual appearance.

Since I remembered my Username and Password using my brain-backup, Bitwarden. Next you are going to have to authenticate your session. If you have created a passphrase on your other session of Element, this is where you can enter it. If you haven’t done this, you can verify it later. I skipped this step for now so I can show you a really cool way you can verify your session.

After skipping this, you are presented with your Matrix session. Since I have been using it for a little while now, I have a few contacts and rooms to which I am connected. You are also given a notice that you need to verify this session.

Since I had been using Matrix on Quaternion, I didn’t think much of getting it all set up, but I was quite wrong. So it appears that I have not had any messages encrypted using Quaternion, it was all out there in the open. Since I wanted to ensure that my session is verified and has encryption enabled, I had to go through the process.

The method that I think is rather unique and easy to accomplish is to use the interactive emoji verification. Since I started with Element on the mobile client, for reasons, I begin the process on the mobile client to verify my Desktop session. To get there, go into your Settings > Security & Privacy > Show All Sessions. There you will see the sessions logged into Matrix.

Selecting the session titled “Element Desktop (Linux)” with the adjacent red shield icon will reveal some options. You are given two options to verify the “Not Verified” session. Manually Verify by Text and Interactively Verify by Emoji. The mobile will give you a spinning circle and ask you to “Please wait…”

On the Desktop Client you get a focus stealing Incoming Verification Request pop up in the application. Which is what you want to be able to have trusted end-to-end encrypted messages. A new dialog will display informing you of the incoming verification request.

Once the two devices have made their handshake, you are asked to confirm the emojis are in the same order on both sessions. Easy to do, hold the mobile up adjacent the monitor and observe that they match. I just happen to find this method to be clever and amusing.

That is it, you now have your desktop and mobile Element clients. This makes your security all green and your sessions trusted.

It would be advisable to set a passphrase or generate a security key for you encryption key. I did this in the mobile application and copied it to my Bitwarden for safe keeping. You can also use a Security Phrase as well. This will just help you should you log into Matrix from another Element client.

My original intent was to go into how to set up bridges to other services, and the like, but I am already bumping up against my self-imposed word limit. So, I am going to separate out and make a kind of series of blatherings about Matrix chat using Element. This is enough to get you going with your mobile and desktop machines having properly setup and trusted clients. Now, it’s time to do some searching for rooms to have conversations. I’ll figure out how to bridge my other things another time and get back to that place of a centralized communication client I once enjoyed about a decade ago.

What I Like

The Element client makes using Matrix quite enjoyable. Previously, using Matrix was a bit of a lack-luster, almost a science experiment kind of feel to it. Sure, it worked but it didn’t have the polish and great user experience I have using Telegram. I can say, with much confidence, using Element feels like a real product. It feels just as good as any other messaging client. It is still early days for me so it’s still all new and exciting.

I have previously talked about in on of my noodlings how it would be nice to consolidate all these different messaging services like the good ol days of MSN, Yahoo and AIM rather than have all these different chat clients scattered about. I don’t use MSN, Yahoo or AIM anymore but I do have several others. I find the breadth of available bridges rather astounding.

What immediately interests me most is SMS and Facebook messenger. Those are both services I loath using. I would consider using IRC as I can see the utility of being able to stay on top of chats going on there and possibly Discord and Telegram but I don’t think it likely that I will be replacing Telegram or Discord anytime soon. openSUSE does have Matrix bridges into the Telegram groups and Discord rooms so no more work needed there. I will be playing around with these.

Most importantly, I appreciate that there is a dark theme so that you aren’t forced to stab you eyes with the painfully bright light hues. This is essentially a minimum requirement for me at this point. If I cannot get a dark theme, I don’t want to use it (Ahem, Hangouts).

What I Don’t Like

Understanding how this whole encryption thing works, and how your credentials are stored on the main Matrix server. I understand that your key is encrypted at your end and stored on the Matrix server but what exactly does that mean, I am not sure. I thought the benefit of Matrix is that it is all decentralized.

It took me a bit of time to get my head wrapped around what Matrix was vs Element. I would hear, “Matrix is the protocol not the client” and I didn’t quite grasp it. I also don’t like it that some clients just don’t work that well. Now that Element is here, I can see it as being the main client to be used, maybe even universally. Parts of the setup of Element / Matrix are a bit dubious but much of that has been cleaned up quite nicely.

Next Steps

Where to, from here. Now that I have a client for Matrix that is pretty darn great, I am going to explore the other possibilities. I see a lot of potential in simplifying my life with communication. I loath using Facebook Messenger and the way I am using SMS has not been ideal. Matrix has the possibility of removing two irritations of mine and I look forward to making this happen. I have decided to break out the bridges to their own discovery experiences and will blather about those in the future.

Final Thoughts

Matrix is now a highly polished, accessible experience for secure communication on the Internet. It is a decentralized system but also has a centralized hub for simplicity of connectivity. It really appears as though they have the little papercuts worked out and have really made available a great system to be used by any.

It’s still early days for this Element Client but things are looking pretty good. I don’t expect I will get friends and family on it anytime soon as it is a bit more work than Telegram but for those other tech enthusiast out there and for simplicity of my communication platforms, this looks like the ticket. The real question is going to be, how reliable this and the bridges are to use long term.

Do I recommend Element as a Matrix chat client? Absolutely. I look forward to its continued use.

References

https://flatpak.org/setup/openSUSE/
https://software.opensuse.org/package/flatpak
https://element.io/
https://matrix.org/bridges/