A simple and user-friendly Matrix client made with Flutter and a Gomuks backend.
  • Dart 79.9%
  • C++ 9.7%
  • CMake 7.1%
  • Nix 1.7%
  • Ruby 0.8%
  • Other 0.7%
Find a file
Henry-Hiles bd1d5ea745
fixup bugs related to PMP
Closes #25, as "Explain how to send messages using a certain PMP" is now added to the progress list.
2026-05-09 21:42:51 -04:00
.github/workflows fix windows build 2026-05-08 21:41:33 -04:00
.vscode fix spellchecker complaining 2026-04-12 14:20:26 -04:00
android fix Android icon 2026-05-06 19:13:23 -04:00
assets fix Android icon 2026-05-06 19:13:23 -04:00
gomuks@fbe6fdbaab update submodule 2026-05-09 20:57:47 -04:00
hook fix Windows CI, though native windows devel may not work 2026-03-27 22:59:09 -04:00
ios improve android app icon 2026-05-06 18:07:25 -04:00
lib fixup bugs related to PMP 2026-05-09 21:42:51 -04:00
linux fix gomuks vendor hash 2026-05-09 21:01:08 -04:00
scripts WIP nix builds 2026-03-24 21:02:23 -04:00
windows fix android build by overriding path_provider_android back to an earlier version 2026-05-08 22:17:11 -04:00
.envrc first commit 2025-11-10 14:50:58 -05:00
.gitignore add nix package 2026-03-25 11:40:31 -04:00
.gitmodules update submodule remote 2026-04-12 13:05:08 -04:00
.metadata add windows dir 2025-11-29 12:04:39 -05:00
analysis_options.yaml wip go 2026-01-30 18:45:30 +01:00
build.yaml wip go 2 2026-01-30 18:45:30 +01:00
DEVELOPMENT.md Add development instructions 2026-05-09 18:24:35 -04:00
devtools_options.yaml fix display name metadata 2026-02-13 17:55:39 -05:00
flake.lock bump deps 2026-05-08 21:34:22 -04:00
flake.nix add some more info to the flatpak 2026-03-25 23:31:57 -04:00
LICENSE add gpl 3 2026-03-19 19:58:29 -04:00
pubspec.lock fix android build by overriding path_provider_android back to an earlier version 2026-05-08 22:17:11 -04:00
pubspec.yaml fix android build by overriding path_provider_android back to an earlier version 2026-05-08 22:17:11 -04:00
README.md fixup bugs related to PMP 2026-05-09 21:42:51 -04:00

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
Screenshot of Nexus Client in dark mode, showing users talking, with a sidebar showing rooms and spaces, and another sidebar showing members The same screenshot as above, but in 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
      • Custom emojis/stickers
      • History loading
        • Backwards
        • Forwards
    • Editing
    • Deleting
  • 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:

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, or nix 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:

On Windows, make sure these are available in your shell PATH:

  • C:\msys64\ucrt64\bin (or your MinGW bin path containing x86_64-w64-mingw32-gcc.exe)
  • C:\Program Files\LLVM\bin (contains clang.exe and libclang.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!