# 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](./assets/screenshotDark.png) | ![The same screenshot as above, but in light mode](./assets/screenshotLight.png) | ## Progress - [x] Platform Support - [x] Linux - [x] Notifications through UnifiedPush - [x] Windows - [ ] Background notifications - [x] Android - [x] Notifications through UnifiedPush - [x] Notifications through FCM - [x] MacOS - [x] Unsigned .ipa - [ ] App Store - [ ] Background notifications - [x] iOS - [x] Unsigned .ipa - [ ] App Store - [ ] Background notifications - [ ] Web (may not be possible) - [x] Login (via OAuth) - [x] Rooms / Spaces - [x] Displaying and choosing - [x] Reading, showing unread - [x] Mark as read button on rooms and spaces - [ ] Searching - [ ] Creating (Rooms, Spaces, and DMs) - [x] Joining - [x] Parse vias - [x] Using a text/uri/link - [x] Plain text - [x] `matrix:` Uri - [x] Matrix.to link - [ ] From space - [ ] From directory - [x] Leaving - [x] Subspaces - [x] Messages - [x] Encryption - [x] Restoring crypto identity from a recovery passphrase/key - [x] Sending - [x] Plain text - [x] HTML/Markdown - [x] Replies - [x] Choose ping on/off - [x] Per message profiles - [x] Attachments - [ ] Commands with [MSC4391](https://github.com/matrix-org/matrix-spec-proposals/pull/4391) - [x] Tags - [x] Users - [x] Rooms - [x] Emojis - [ ] Custom emojis/stickers - [ ] GIFs using Gomuks' GIF proxies - [x] Receiving - [x] Plain text - [x] Per message profiles - [x] HTML - [x] URL Previews - [x] Replies - [x] Viewing - [x] Jump to original message - [x] Edits - [x] Attachments - [x] Unencrypted - [x] Encrypted - [x] Blurhashing - [ ] Downloading attachments - [x] Opening attachments in their own view - [ ] Polls - [x] Mentions - [x] Users - [x] Clickable - [x] Rooms - [x] Clickable - [x] Matrix URIs - [x] Matrix.to links - [x] Events - [x] Custom emojis/stickers - [x] History loading - [x] Editing - [x] Deleting - [x] Reactions - [x] Pins - [x] Displaying - [x] Pinning/Unpinning - [ ] Threads - [x] Profile popouts - [x] Working actions - [x] Copy link to: - [x] Room - [x] Space - [x] Message - [ ] Reporting - [x] Events - [ ] Rooms - [x] Member list - [x] Sort by power level - [ ] Colors based off of power level - [x] Notifications using UnifiedPush ([#35](https://git.federated.nexus/Nexus/nexus/issues/35)) - [x] Notifications page - [ ] Group calls using [MSC4195](https://github.com/matrix-org/matrix-spec-proposals/pull/4195) - [ ] Invites - [x] Settings ## Try it out If you want to try out Nexus, grab one of the following artifacts from CI: - [Android APK](https://nightly.link/Henry-Hiles/nexus/workflows/android/main/APK.zip) - [Unsigned iOS IPA](https://nightly.link/Henry-Hiles/nexus/workflows/ios/main/Nexus.ipa.zip) - [Unsigned MacOS DMG](https://nightly.link/Henry-Hiles/nexus/workflows/macos/main/nexus.dmg.zip) - [Windows EXE](https://nightly.link/Henry-Hiles/nexus/workflows/windows/main/windows-installer.zip) Or, use one of the below methods: ### Flatpak Make sure Flatpak is set up on your system, then run: ```bash 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: ```nix nexus = { url = "git+https://git.federated.nexus/Nexus/nexus"; inputs.nixpkgs.follows = "nixpkgs"; }; ``` Then import the module and enable it in your NixOS configuration: ```nix { 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: - Flutter - Git - Libass - MPV - Go - Visual Studio 2022 (Desktop development with C++) - [MSYS2/MinGW-w64 GCC](https://www.msys2.org/) (for CGO) - [LLVM/Clang + libclang](https://clang.llvm.org/get_started.html) (for `ffigen`) 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: ```powershell $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: ```sh git clone --recurse-submodules https://git.federated.nexus/Nexus/nexus cd nexus ``` ### Set up Flutter Get dependencies: ```sh flutter pub get ``` Generate Gomuks bindings: ```sh dart scripts/generate.dart ``` > [!NOTE] > If you are having issues with `stddef.h` not being found, try setting CPATH manually: > > ```sh > export CPATH="$(clang -v 2>&1 | grep "Selected GCC installation" | rev | cut -d' ' -f1 | rev)/include" > ``` Build webcrypto: ```sh flutter pub run webcrypto:setup ``` Build generated files, and watch for new changes: ```sh flutter pub run build_runner watch ``` Run the app: ```sh flutter run ``` Development instructions can be found in [DEVELOPMENT.md](./DEVELOPMENT.md). ## Community Join the [Nexus Client Matrix room](https://matrix.to/#/#nexus:federated.nexus) 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](https://github.com/gomuks/gomuks), and helping us integrate it into Nexus!