How to: use Chromium as a Matrix/Riot client with voice/video

User story: I am an everyday user. I want to use the Matrix chat protocol, so that my communication is secure and I can access it from multiple devices.

Problem: I’ve been using a browser-based website as a client, but I frequently lose keys even though I’m using the same browser on the same device. How can I set up a reliable chat client?

Options: This can be caused by losing browser session data. Also, don’t sign out of your Matrix session! It’s probably easiest to switch from your browser interface to a dedicated client. There is no perfect solution yet. Your options include:

  • Riot Desktop. A Matrix client for the GNU/Linux desktop (see details in second post) with minimal GNOME Shell integration.
  • Revolt. A Matrix client with better GNOME Shell integration. Doesn’t (yet) support WebRTC, which means no voice/video calls.
  • Dedicated GNOME Web app. Visit the site and pick “Install site as a web application…” Doesn’t (yet) support WebRTC.
  • Dedicated PureBrowser profile. Create a new browser profile, configure it to always keep history/cookies, and use it exclusively for Matrix chat. This will “feel” more like a browser than a dedicated client. (Apparently it might be possible to address this with a “kiosk mode”.)
  • Dedicated Chromium app. Create a new browser profile, configure it to keep history/cookies, launch it as an app. Will “feel” more like an application, although it doesn’t have GNOME Shell integration.

In this how-to, we’ll step through the last option.

Steps

  1. Install Chromium through GNOME Software or with apt install chromium
  2. Create an empty profile folder at ~/.config/chromium_matrix
  3. (Optional) Launch chromium --user-data-dir="/home/username/.config/chromium_matrix" and configure Chromium to your liking
  4. Create a new desktop file at ~/.local/share/applications/matrix_chat.desktop (details below)
  5. (Optional) Create a new icon at ~/.local/share/applications/icons/matrix_chat.png
  6. In GNOME Shell, show applications
  7. Launch the new “Matrix Chat” application

matrix_chat.desktop

[Desktop Entry]
Type=Application
Name=Matrix Chat
StartupNotify=true
Icon=polari
Exec=chromium --user-data-dir="/home/username/.config/chromium_matrix" --app="https://riot.im/app/#/home" --class=matrix_chat
Comment=Dedicated client for Matrix chat
Categories=Network;
Terminal=false
StartupWMClass=matrix_chat
Keywords=matrix,riot,chat

Notes:

  • You must give the full path to /home/username/.config/chromium_matrix
  • If you’re using a different homeserver, replace https://riot.im/app/#/home
  • If you make your own icon, change Icon=polari to Icon=matrix_chat
  • The desktop filename, “class” and “StartupWMClass” must match, together these options tell GNOME to treat your application as a standalone window (for example, when alt-tabbing)

If you have any feedback on this how-to, please post comments below!

I’ve since confirmed that the official Riot Desktop client also supports WebRTC/voice/video. You can install it with apt from the riot.im deb repo. On PureOS you can follow the same installation instructions as for Debian stable (currently stretch). See https://riot.im/desktop.html for details.