A simple and user-friendly Matrix client made with Flutter and a Gomuks backend.
  • Dart 85.9%
  • C++ 6.7%
  • CMake 4.2%
  • Nix 1.3%
  • Swift 0.8%
  • Other 1.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-29 10:46:15 -04:00
.github/workflows swap msystem to avoid warning on windows build 2026-09-28 23:01:50 -04:00
.vscode use SharedPreferencesAsync to avoid race condition in Sharedprefs 2026-09-20 15:45:32 -04:00
android bump gradle 2026-09-18 13:02:40 -04:00
assets bundle all fonts 2026-09-28 20:43:50 -04:00
gomuks@480938f9e0 Separate out GomuksListenerController from ClientController 2026-09-24 11:03:16 -04:00
hook optimize gomuks build size 2026-08-22 14:16:35 -04:00
ios Push Notifications (#66) 2026-09-10 15:37:05 -04:00
lib only mark as read when fully at bottom 2026-09-29 10:46:15 -04:00
linux fix hash for xdg_desktop_portal 2026-09-28 14:36:27 -04:00
macos Push Notifications (#66) 2026-09-10 15:37:05 -04:00
scripts Better emoji picker (#73) 2026-09-16 14:47:46 -04:00
windows Push Notifications (#66) 2026-09-10 15:37:05 -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 use GomuksConfig 2026-09-22 09:53:00 -04:00
.metadata feat: Add iOS platform support (#60) 2026-08-08 16:35:56 -04:00
altstore-source.json feat: Add iOS platform support (#60) 2026-08-08 16:35:56 -04:00
analysis_options.yaml bump deps, remove unwanted and now un-needed analyzer rule 2026-09-10 15:09:47 -04:00
build.yaml wip go 2 2026-01-30 18:45:30 +01:00
DEVELOPMENT.md small cleanups 2026-09-24 20:50:28 -04:00
devtools_options.yaml fix display name metadata 2026-02-13 17:55:39 -05:00
flake.lock bump deps 2026-09-24 11:47:20 -04:00
flake.nix fixup flatpak build 2026-09-21 17:20:43 -04:00
LICENSE add gpl 3 2026-03-19 19:58:29 -04:00
pubspec.lock up-to-date xdg portals 2026-09-28 14:32:18 -04:00
pubspec.yaml bundle all fonts 2026-09-28 20:43:50 -04:00
README.md small cleanups 2026-09-28 18:20:36 -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

  • Platform Support
    • Linux
    • Windows
      • Currently has some bugs, due to us not having any developers on Windows. If you want to fix these, get in contact with us though the Nexus Client Matrix room.
    • Android
    • MacOS
      • Unsigned .ipa
      • App Store
    • iOS
      • Unsigned .ipa
      • App Store
    • Web (may not be possible)
  • Login (via OAuth)
  • 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
      • From directory
    • 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
      • Tags
        • Users
        • Rooms
        • Emojis
      • Custom emojis/stickers
      • GIFs using Gomuks' GIF proxies
    • Receiving
      • Plain text
      • Per message profiles
      • HTML
      • URL Previews
      • Replies
        • Viewing
        • Jump to original message
      • 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
    • Editing
    • Deleting
  • Reactions
  • Pins
    • Displaying
    • Pinning/Unpinning
  • Threads
  • Profile popouts
    • Working actions
  • Copy link to:
    • Room
    • Space
    • Message
  • Reporting
    • Events
    • Rooms
  • Member list
    • Sort by power level
    • Colors based off of power level
  • Notifications using UnifiedPush (#35)
  • Notifications page
  • Group calls using MSC4195
  • Invites
  • Settings

Try it out

If you want to try out Nexus, grab one of the following artifacts from CI:

Or, use one of the below methods:

Flatpak

Make sure Flatpak is set up on your system, then run:

flatpak install --user https://nexus.federated.nexus/flatpak/nexus.flatpakref

This adds the Nexus remote and installs the app for your user only, so no root access is needed (x86_64 and aarch64 are supported). To install system-wide instead, use --system in place of --user. Updates arrive through flatpak update or your software center.

NixOS Module

Add Nexus as a flake input, following nixpkgs for less fetches:

nexus = {
  url = "git+https://git.federated.nexus/Nexus/nexus";
  inputs.nixpkgs.follows = "nixpkgs";
};

Then import the module and enable it in your NixOS configuration:

{ inputs, ... }:
{
  imports = [ inputs.nexus.nixosModules.default ];

  programs.nexus = {
    enable = true;
    enableNotifications = true; # optional: push notifications via UnifiedPush
  };
}

This installs Nexus system-wide. With enableNotifications, it also installs KUnifiedPush and registers its systemd and D-Bus services so notifications work. The package option lets you override the package if you need to.

Build it yourself

Prerequisites

Linux

  • On NixOS: Either use direnv and direnv allow, or nix develop
  • On other distros: Install Flutter, Go, Git, Libclang, Libass, MPV, 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

Note

If you are having issues with stddef.h not being found, try setting CPATH manually:

export CPATH="$(clang -v 2>&1 | grep "Selected GCC installation" | rev | cut -d' ' -f1 | rev)/include"

Build webcrypto:

flutter pub run webcrypto:setup

Build generated files, and watch for new changes:

flutter pub run build_runner watch

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!