- Dart 79.9%
- C++ 9.7%
- CMake 7.1%
- Nix 1.7%
- Ruby 0.8%
- Other 0.7%
Closes #25, as "Explain how to send messages using a certain PMP" is now added to the progress list. |
||
|---|---|---|
| .github/workflows | ||
| .vscode | ||
| android | ||
| assets | ||
| gomuks@fbe6fdbaab | ||
| hook | ||
| ios | ||
| lib | ||
| linux | ||
| scripts | ||
| windows | ||
| .envrc | ||
| .gitignore | ||
| .gitmodules | ||
| .metadata | ||
| analysis_options.yaml | ||
| build.yaml | ||
| DEVELOPMENT.md | ||
| devtools_options.yaml | ||
| flake.lock | ||
| flake.nix | ||
| LICENSE | ||
| pubspec.lock | ||
| pubspec.yaml | ||
| README.md | ||
Nexus Client
Warning
Nexus Client is still in development, and doesn't support everything needed for daily use.
Description
A simple and user-friendly Matrix client made with Flutter and a Gomuks backend.
Screenshots
| Dark Mode | Light Mode |
|---|---|
![]() |
![]() |
Progress
- New logo
- Move from the Dart SDK to the Gomuks Backend with Dart bindings: #2
- Allow using remote Gomuks over websocket
- Platform Support
- Linux
- Windows (WIP)
- MacOS
- Android
- iOS
- Web (may not be possible)
- Login
- Username / password auth
- OAuth / OIDC
- Improve initial sync experience
- Rooms / Spaces
- Displaying and choosing
- Reading, showing unread
- Mark as read button on rooms and spaces
- Searching
- Creating (Rooms, Spaces, and DMs)
- Joining
- Parse vias
- Using a text/uri/link
- Plain text
matrix:Uri- Matrix.to link
- From space
- Exploring
- Leaving
- Subspaces
- Messages
- Encryption
- Restoring crypto identity from a recovery passphrase/key
- Sending
- Plain text
- HTML/Markdown
- Replies
- Choose ping on/off
- Per message profiles
- Attachments
- Commands with MSC4391
- Mentions
- Users
- Rooms
- Inline emoji picker (Putting this here since it'll be implemented the same way as mentions)
- Custom emojis/stickers
- GIFs using Gomuks' GIF proxies
- Receiving
- Plain text
- Per message profiles
- HTML
- URL Previews
- Replies
- Viewing
- Jump to original message
- In loaded timeline
- Out of loaded timeline
- Edits
- Attachments
- Unencrypted
- Encrypted
- Blurhashing
- Downloading attachments
- Opening attachments in their own view
- Polls
- Mentions
- Users
- Clickable
- Rooms
- Clickable
- Matrix URIs
- Matrix.to links
- Events
- Render more nicely
- Clickable
- Users
- Custom emojis/stickers
- History loading
- Backwards
- Forwards
- Editing
- Deleting
- Encryption
- Reactions
- Pins
- Displaying
- Creating
- Threads
- Profile popouts
- Working actions
- Copy link to:
- Room
- Space
- Message
- Reporting
- Events
- Rooms
- Notifications using UnifiedPush
- Group calls using MSC4195
- Invites
- Settings
- Matrix: URIs vs Matrix.to links
- Light/Dark mode
- SSD or CSD
- Align your message bubbles to left or right
- Show media by default
- Dynamic Theming
- Personas
- Setting per-message profiles for users (MSC4461)
- Explain how to send messages using a certain PMP
- Devices
- Viewing devices
- Verifying devices
- URL preview: Server / Sending Client (Beeper spec) / None
- Account changes
- Display name
- Profile picture
- Timezone
- Pronouns
- Password
- About
- Log Out
Try it out
If you want to try out Nexus, grab one of the following artifacts from CI:
- Android APK
- Windows
- Flatpak
Or, try the Nix package: nix run git+https://git.federated.nexus/Nexus/nexus
Build it yourself
Prerequisites
Linux
- With Nix: Either use direnv and
direnv allow, ornix flake develop - Without Nix: Install Flutter, Go, Git, Libclang, and Glibc. Do not use any Snap packages, they cause various compilation issues.
Windows
You will need:
- Flutter
- Android SDK + NDK
- Git
- Go
- Visual Studio 2022 (Desktop development with C++)
- MSYS2/MinGW-w64 GCC (for CGO)
- LLVM/Clang + libclang (for
ffigen)
On Windows, make sure these are available in your shell PATH:
C:\msys64\ucrt64\bin(or your MinGW bin path containingx86_64-w64-mingw32-gcc.exe)C:\Program Files\LLVM\bin(containsclang.exeandlibclang.dll)
For dart scripts/generate.dart, you may also need:
$env:CPATH = "C:\msys64\ucrt64\include"
MacOS
Similar prerequisites apply (Flutter, Git, Go, C toolchain, LLVM/libclang), but exact setup has not been fully documented yet.
Clone repo
First, clone and open the repo:
git clone --recurse-submodules https://git.federated.nexus/Nexus/nexus
cd nexus
Set up Flutter
Get dependencies:
flutter pub get
Generate Gomuks bindings:
dart scripts/generate.dart
Build generated files, and watch for new changes:
flutter pub run build_runner watch --delete-conflicting-outputs
Run the app:
flutter run
Development instructions can be found in DEVELOPMENT.md.
Community
Join the Nexus Client Matrix Room for questions or help with developing or using Nexus Client.
Credits
Thank you Hylke Bons (https://planetpeanut.studio) for making the amazing icon for Nexus! Thank you Tulir Asokan for making Gomuks, and helping us integrate it into Nexus!

