xmatic

Rating: 
5
Your rating: None Average: 5 (4 votes)

Native Matrix client built on matrix-rust-sdk with a Silica UI.

FEATURES

- Sliding sync, end-to-end encryption, cross-signing, device verification (both directions), key backup and recovery
- Rooms, spaces (nested), direct chats, threads, room directory search
- Create rooms, invite, leave; member list and member profiles with moderation
- Send, edit, delete, reply, react, pagination in encrypted rooms
- Reactions are shown grouped with a count; tapping one sets or takes back your own
- Formatted messages: bold, italic, code, quotes, lists and links render as themselves
- A room opens where you stopped reading; it counts as read while you read it, and can be marked read from the list without opening it
- Matrix links open in the app: a permalink or a plain #room:server leads to the room, or offers to join it
- Pinned messages, favourites, low priority, per-room mute, ignored users
- Pictures with captions, files, sharing (also as share target from Gallery / file manager)
- Voice messages; voice and video calls (classic 1:1 VoIP; MatrixRTC-only clients cannot be called)
- Notifications, offline send queue, encrypted local storage
- Tapping a notification opens the room it is about
- A message that could not be sent can be sent again or discarded
- OAuth (MAS) login, device-code login, password login
- 29 interface languages, switchable in the app

LANGUAGES

The interface is available in the 24 official languages of the European Union
plus Russian, Norwegian, Icelandic, Simplified Chinese and Hindi. Norwegian was
contributed by a Norwegian speaker and German is the project language; the rest
are machine translations, usable but unchecked. Account has a language setting
of its own, English included, so there is always a way back out of one. A
change applies at the next start.

Corrections are welcome at the GitHub repository below - the file to edit is
translations/harbour-xmatic-<language>.ts, and translations/STATUS.md says
which languages have been read by a native speaker.

REACTIONS AND EMOJI

A reaction in Matrix is a character, not an icon, so whatever another client
sent is drawn as it came. On this Qt that means monochrome: the colour emoji
font on the device uses a format Qt 5.6 cannot draw. Whoever wants colour can
put picture files of their own into the app's data directory and switch it on
under Appearance - nothing is shipped and nothing is downloaded, and the
setting says what it costs, because a picture file is opened by an image
decoder.

LOCAL STORAGE

Session tokens and the message database are encrypted with a key from Sailfish
Secrets. Where the system's secure storage hands out no key, the app keeps
working with unencrypted storage rather than refusing to start - and says so on
the encryption page instead of only in the log. Where a database simply
predates the key, that page offers to re-create it encrypted.

WHY IS THE PACKAGE SO BIG?

The app ships the complete Matrix stack statically: matrix-rust-sdk, E2EE
(vodozemac), sliding sync, rustls, its own HTTP runtime and a bundled SQLite.
None of that exists as a system library on Sailfish OS, and Qt 5.6 is too old
for the C++ alternatives - which is exactly why the protocol core is written in
Rust. Installed size ~51 MB (Element X, same SDK: ~100 MB), RPM ~16 MB.

NO BACKGROUND DAEMON

Messages arrive while the app is running (the cover is enough). Like other
daemonless messengers on this platform, a closed app does not receive.

ARCHITECTURES

aarch64 (Sailfish OS 5.0+), armv7hl (Sailfish OS 4.6+).

REQUIREMENTS

xmatic syncs over simplified sliding sync (MSC4186), the same mechanism
Element X uses. Your homeserver must support it. If it does not, sign-in
works but no rooms load and the app keeps showing "Offline".

How to check your server: open this address in a browser

https://YOUR-SERVER/_matrix/client/versions

and look for this line:

"org.matrix.simplified_msc3575": true

If it is missing, xmatic cannot load your rooms from that server.

Sign-in methods supported: OAuth 2.0 / Matrix Authentication Service,
device code ("Sign in on another device"), and username plus password on
servers without OAuth.

The classic SSO redirect sign-in (SAML, CAS) is not supported.

Written with Claude Code (Anthropic), icons included; the protocol core is upstream matrix-rust-sdk.

Source, issues, releases:
https://github.com/JimKnopfIoT/harbour-xmatic

Application versions: 
AttachmentSizeDate
File harbour-xmatic-0.23.0-1.aarch64.rpm15.68 MB26/08/2026 - 02:12
File harbour-xmatic-0.23.0-1.armv7hl.rpm16.21 MB26/08/2026 - 02:12
Changelog: 

- Privacy has a page of its own under Account: who may call you (everyone,
people you have a direct chat with, or only a list you keep), whether group
rooms may ring at all, whether video is answered as video, and a brake
against repeated calls. A refused call rings nothing and tells the caller
nothing.
- Downloaded pictures, videos and documents are deleted when you sign out.
That is the new default; the other choices are never, on closing the app, or
as soon as the app is not in front. The page says plainly that these files
lie on the device as unencrypted as the ones in the gallery.
- The lists that name people are stored encrypted, like the session and the
keys already were. An older unencrypted list is taken over once and removed.
- Read receipts work in both directions: your own messages say how many people
read them, a long press names them, and sending them is a switch.
- A message with thousands of nested tags no longer takes the app down with
it. It was not a crash that a restart cured - the event stayed in the room
and took the app down again on every visit.
- A call can no longer be redirected by a third party in the room: the peer is
fixed when the call is placed, not by whoever answers first.
- A picture can no longer cost more memory than the device has, whichever side
it is long on, and answering without video now also stops the other side's
video from being decoded.
- The session file is written whole or not at all.
- Error reports keep the server's own words - a rate limit is named as one -
while addresses, hosts and identifiers are removed.
- Room link copy sits in the room's pull-down menu; sign out sits under
Account, and only there.

Comments

kempertom's picture

Such great work. I have an issue: I am using matrix chat with bridges to avoid using android. Voicenotes work with xmatic with mautrix (WhatsApp bridge) and the Telegram bridge, but not for the most important Signal bridge. It says that audio format is not supported for bridging. Maybe ist is possible from xmatic side?

Sharks's picture

Latest 0.22 update is great, very glad to see reaction support added. This now fully replaces Hydrogen for me on SFOS. Thankyou for your work!

The only feature I would still want for is an option to show the message content in notifications like an SMS notification would. Requiring to unlock the phone and open the app to see a message you may not be interested in responding to is a minor annoyance.

stiltskin's picture

seems like there is no read status for messages (sent/read)

windes's picture

Wow, man!! First impression - GREAT!  UI is smooth and nice, all balanced. Did you do UI by yourself, manually, not with AI?

 

Can't open page with user info. There's no this feature for now?

Sailfish 5.1.0.11, armv7hl - all is working)

Nice description, monumental, by the way. All questions gone right after read it. No water, strict and needed, every word.

Do you have a group of xmatic in matrix?

Sharks's picture

Looks promising! Unfortunately while I can login, I just see "Offline - Waiting for the network" glitching and flashing up the top, none of my chats get loaded.

JimKnopfIoT's picture

@Sharks Please read the new REQUIREMENTS section above and try again with the latest Version (> 0.19.0). 

Sharks's picture

It appears I am missing msc4186, thanks. Will have to look into it.

Sharks's picture

Have decomissioned my Dendrite server and spun up a Synapse one. xmatic is now working beautifully! Thanks very much. Keen to see further development, looks like a great app already.

kempertom's picture

Will it be frequently maintained? I have wishes and Ideas...

sourcrowd's picture

Thank you! With this client I'm finally able to login on a homeserver, that requires SSO for which the Firefox 91 WebView that SFOS 5.1 bundles, is too old.

kaulian's picture

Thanks a lot.

Manisak's picture

Damed I Love you ;-)

kempertom's picture

Wow. Wonderful. What are you plan to implement?