nexus/README.md
2026-03-19 12:14:23 -04:00

5.4 KiB

Nexus Client

Warning

Nexus Client is still heavily in development, and is not ready for use!

Description

A simple and user-friendly Matrix client made with Flutter and the Matrix Dart SDK.

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
  • Make context menus appear as bottom sheets on mobile
  • Move from the Dart SDK to the Gomuks SDK with Dart bindings: Henry-Hiles/nexus#2
    • Allow using remote gomuks over websocket
  • Platform Support
    • Linux
    • Windows
    • 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
      • 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
    • Recieving
      • Plain text
      • HTML
      • 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: Waiting on https://github.com/SwanFlutter/dynamic_polls/issues/1
      • Mentions
        • Users
        • Rooms
          • Plain text (not sure if I want to add this or not, I probably won't unless there's interest)
          • Matrix URIs
          • Matrix.to links
        • Do some fancy fetching to get nice names
        • Make clickable
      • Custom emojis/stickers
      • History loading
        • Backwards
        • Forwards
    • Editing
    • Deleting
  • Reactions: Waiting on https://github.com/flyerhq/flutter_chat_ui/pull/838 or me doing a custom impl
  • Pins
    • Displaying
    • Creating
  • Threads
  • Profile popouts
  • Copy link to [room, space]
  • Reporting
    • Events
    • Rooms
  • Notifications using UnifiedPush
  • Group calls using MSC4195
  • Invites
  • Settings
    • Light/Dark mode
    • SSD or CSD
    • Show media by default
    • Dynamic Theming
    • Devices
      • Viewing devices
      • Verifying devices
    • URL preview: Server / Client / None
    • Account changes
      • Display name
      • Profile picture
      • Timezone
      • Pronouns
      • Password
    • About
    • Log Out

Build Instructions

First, clone and open the repo:

git clone https://git.federated.nexus/Henry-Hiles/nexus
cd nexus

Prerequisites

Linux

  • With Nix: Either use direnv, or nix flake develop
  • Without Nix: Install Flutter, Go, Olm, Git, Clang, and GLibc.

Windows / MacOS

I don't really know. You will need Flutter, Git, Olm, Go, and Visual Studio tools, and otherwise I guess just keep installing stuff until there aren't any errors. I will look into this sometimeTM.

Set up Flutter

Get dependencies:

flutter pub get

Get dependencies:

flutter pub get

Clone Gomuks and generate bindings:

scripts/generate.sh

Build generated files, and watch for new changes:

flutter pub run build_runner watch --delete-conflicting-outputs

Run the app:

flutter run

Community

Join the Nexus Client Matrix Room for questions or help with developing or using Nexus Client.