Robrix: a Rust Matrix client built atop Robius
Robrix is a Matrix chat client written in Rust to demonstrate the functionality of Project Robius, a framework for multi-platform application development in Rust.
⚠️ Robrix is a work-in-progress that doesn't yet support all Matrix chat features.Note that only the first "Rooms" tab of the UI is in use.
Check out our most recent talks and presentations for more info:
- Robrix: a Matrix chat client and more (from GOSIM Europe 2024)
- Videos: YouTube link
- Slides: PowerPoint (22MB), PDF version (16MB)
The following table shows which host systems can currently be used to build Robrix for which target platforms.
Host OS | Target Platform | Builds? | Runs? |
---|---|---|---|
macOS | macOS | ✅ | ✅ |
macOS | Android | ✅ | ✅ |
macOS | iOS | ✅ | ✅ |
Linux | Linux | ✅ | ✅ |
Linux | Android | ✅ | ✅ |
Windows | Windows | ✅ | ✅ |
Windows | Android | ✅ | ✅ |
First, install Rust.
Then, install the required native libraries. For example, on Linux:
sudo apt-get install libsqlite3-dev libssl-dev
Then, on a standard desktop platform (macOS, Linux, Windows), simply run:
cargo run -- 'USERNAME' 'PASSWORD' ['HOMESERVER_URL']
- Robrix only supports a standard username + password login currently.
- Note the usage of single quotes (not double quotes), which will prevent your shell from treating certain symbols as globs/regex patterns.
- If you created your Matrix account using a third-party Single Sign On (SSO) like a Google account, you can set a standard password by using Element's password reset form.
- The
HOMESERVER_URL
argument is optional and uses the"https://matrix-client.matrix.org/"
URL by default.
-
Install the
cargo-makepad
build tool:cargo install --force --git https://github.com/makepad/makepad.git --branch rik cargo-makepad
-
Use
cargo-makepad
to install the Android toolchain, with the full NDK:cargo makepad android install-toolchain --full-ndk
-
Build and run Robrix using
cargo-makepad
:- Fill in your username and password in the
login.toml
file. - Then use cargo makepad to build and run:
cargo makepad android run -p robrix --release
- You'll need to connect a physical Android device with developer options enabled, or start up an emulator using Android Studio.
- API version 33 or higher is required, which is Android 13 and up.
- Fill in your username and password in the
These are generally sorted in order of priority. If you're interested in helping out with anything here, please reach out via a GitHub issue or on our Robius matrix channel.
- View list of joined rooms
- View timeline of events in a single room
- Fetch and display room avatars
- Fetch user profiles (displayable names)
- Fetch and display user profile avatars
- Backwards pagination (upon viewing a room timeline)
- Dynamic backwards pagination based on scroll position/movement
- Loading animation while waiting for pagination request
- Stable positioning of events view during timeline update
- Display simple text-only messages
- Display image messages (PNG, JPEG)
- Rich text formatting for message bodies
- Display multimedia (audio/video/gif) message events
- Display reactions (annotations)
- Handle opening links on click
- Linkify plaintext hyperlinks
- Link previews beneath messages: #81
- Reply previews above messages: #82
- Send messages (standalone, no replies)
- Interactive reaction button, send reactions
- Reply button, send reply: #83
- Error display banners: no connection, failure to login, sync timeout.
- Collapsible/expandable view of contiguous "small" events
- E2EE device verification, decrypt message content
- Username/password login screen
- SSO, other 3rd-party auth providers login screen
- Dedicated view of spaces
- Dedicated view of direct messages (DMs)
- Search messages
- Room browser / search
- Room creation
- Room settings/info screen
- Room members pane
- Side panel for info on a user in a room (click on their Avatar)
- Ignore and unignore users (see known issues)
- User settings screen
- Persistence of app state to disk
- URLs do not wrap properly; that is a Makepad-side problem.
- Matrix-specific links are not yet fully handled (https://matrix.to/...)
- Ignoring/unignoring a user clears all timelines and requires an app reboot (see: matrix-org/matrix-rust-sdk#1703)