About

You've reached Spectral Doc, the documentation of Spectral.

Use the sidebar on the left to navigate through documents.

Tutorial

This contains the tutorial for setting up Spectral.

Install

These are the official download sources. For a list of unofficial sources, please visit the page unofficial sources.

Install on GNU/Linux

The somewhat stable build of Spectral is available on Flathub.

flatpak install flathub org.eu.encom.spectral

Alternatively, you can fetch the latest Flatpak build here.

Or, you can download the AppImage here.

Fonts

If you have issues with the fonts, please install Google Noto Fonts or Roboto, either from your distribution's repository or download directly.

Arch Linux

pacman -S noto-fonts noto-fonts-emoji

Debian

apt install fonts-noto

Install on Windows

There exist nightly builds from AppVeyor.

Spectral depends on OpenSSL 1.0.2. However, the OpenSSL libraries are not distributed by default due to U.S. cryptographic export restrictions. You need to install them manually from this website.

Install on MacOS

The .dmg app bundle is available here.

Install on FreeBSD

Please follow the instructions in compile page.

Compiling from Source

This documentation is for compiling Spectral from command line. If you have Qt Creator, just clone the repository and import.

Requirements

  • Qt 5.12

    • Qt Core 5.12
    • Qt Widgets 5.12
    • Qt Multimedia 5.12
    • Qt Quick 2.12
    • Qt Quick Controls 2.12
    • Qt SVG 5.12
    • Qt Keychain
  • CMake

  • C++17 compliant compiler (Tested on GCC 9.2/AppleClang 11.0/MSVC 2017)

  • libQuotient

    libQuotient is already included in the repository. Notice that Spectral usually depends on the HEAD version of libQuotient, so linking to a stable version of libQuotient from the system is probably not a good idea.

  • cmark

  • olm 3

Compile on GNU/Linux

git clone --recursive https://gitlab.com/b0/spectral && cd spectral
cmake . -Bbuild
cmake --build build --target install

Compile on FreeBSD

git clone --recursive https://gitlab.com/b0/spectral && cd spectral
cmake . -Bbuild
cmake --build build --target install

Compile on Windows

Make sure you have MSVC2017 installed.

  1. Somehow Install Qt v5.12+

  2. Download Spectral source

git clone --recursive https://gitlab.com/b0/spectral
cd spectral
  1. Install other dependencies
git clone https://gitlab.matrix.org/matrix-org/olm.git
cd olm
cmake -LA -G "NMake Makefiles JOM" -H. -Bbuild -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX="install" -DBUILD_SHARED_LIBS=NO
cmake --build build --target install
cd ..
git clone https://github.com/frankosterfeld/qtkeychain.git
cd qtkeychain
cmake -LA -G "NMake Makefiles JOM" -H. -Bbuild -DCMAKE_CXX_FLAGS="/EHsc /W3" -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX="install" -DQTKEYCHAIN_STATIC=ON
cmake --build build --target install
cd ..
git clone https://github.com/commonmark/cmark.git
cd cmark
cmake -LA -G "NMake Makefiles JOM" -H. -Bbuild -DCMAKE_CXX_FLAGS="/EHsc /W3" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="install" -DCMARK_SHARED=ON -DCMARK_STATIC=OFF -DCMARK_TESTS=OFF
cmake --build build --target install
cd ..
  1. Build Spectral
cmake -LA -G "NMake Makefiles JOM" -H. -Bbuild -DCMAKE_CXX_FLAGS="/EHsc /W3" -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX="install" -DUSE_INTREE_LIBQMC=1 -DQt5Keychain_DIR="qtkeychain/install/lib/cmake/Qt5Keychain" -DOlm_DIR=olm/install/lib/cmake/Olm -DCMARK_LIBRARY=C:/projects/spectral/cmark/install/lib/cmark.lib -DCMARK_INCLUDE_DIR=C:/projects/spectral/cmark/install/include -DDEPLOY_VERBOSITY=%DEPLOY_VERBOSITY%
cmake --build build

Compile on MacOS

  1. Update Qt to v5.12+

In this example Qt 5.13.1 is installed. Make sure to update respective paths if a different version is installed.

brew install qt5
  1. Download Spectral source
git clone --recursive https://gitlab.com/b0/spectral.git && cd spectral
  1. Install other dependencies
brew install cmark
git clone https://gitlab.matrix.org/matrix-org/olm.git
pushd olm
cmake . -Bbuild -LA -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=install -DCMAKE_PREFIX_PATH=/usr/local/Cellar/qt/5.13.1/ -DBUILD_SHARED_LIBS=NO
cmake --build build --target install
popd
git clone https://github.com/frankosterfeld/qtkeychain.git
pushd qtkeychain
cmake . -Bbuild -LA -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=install -DCMAKE_PREFIX_PATH=/usr/local/Cellar/qt/5.13.1/ -DQTKEYCHAIN_STATIC=ON
cmake --build build --target install
popd
  1. Build Spectral
cmake . -Bbuild -LA -DUSE_INTREE_LIBQMC=1 -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_PREFIX_PATH=/usr/local/Cellar/qt/5.13.1/ -DOlm_DIR=olm/install/lib/cmake/Olm -DQt5Keychain_DIR="qtkeychain/install/lib/cmake/Qt5Keychain"
cmake --build build --target all

Debug

This documentation is for debugging Spectral from command line. If you have Qt Creator, just run in debug mode.

Requirements

  • Qt 5.12
    • Qt Core 5.12
    • Qt Widgets 5.12
    • Qt Multimedia 5.12
    • Qt Quick 2.12
    • Qt Quick Controls 2.12
  • QMake 3.1
  • C++14 compliant compiler
  • (Optional) libQMatrixClient
  • (Optional) Hoedown

Debug on GNU/Linux

git clone --recursive https://gitlab.com/b0/spectral
mkdir build && cd build
qmake CONFIG+=debug CONFIG+=qml_debug ../spectral.pro
make -j4

Then, run the binary in GDB.

gdb run spectral

Unofficial Sources

Arch Linux

AUR: spectral-git

Gentoo

Matrix-overlay: spectral

What's the difference between Spectral and ...

For a detailed comparison please visit here

...Riot Web/Desktop?

  • Riot is the most feature-rich Matrix client, supporting integrations, custom widgets, VoIP, etc.
  • Spectral does not support E2EE yet. Riot has the best E2EE support in all clients.
  • Spectral uses Qt and is a native Matrix client. Riot is a web application.
  • Spectral uses far less RAM.
  • Riot is designed as an IRC/Slack alternative. Spectral is designed as a WhatsApp/Telegram/Google Hangouts alternative.

...Nheko?

  • Spectral uses libQuotient as SDK, a generic library maintained by Quotient for developing Matrix applications; Nheko uses mtxclient written by Nheko's original author(mujx).
  • Although both Spectral and Nheko use Qt, Spectral's backend uses Qt, while Nheko's backend uses Boost.
  • Spectral does not have E2EE support yet. Nheko has experimental E2EE support.
  • Spectral's UI uses QtQuick Controls. Nheko's UI uses Qt Widgets.
  • Nheko supports communities.

...Fractal?

  • Fractal uses Rust and GTK. Spectral uses C++ and Qt. So codes are nowhere close.
  • Fractal is GNOME's de facto Matrix client. Spectral has a KDE incubation plan, though it is being worked on.
  • Fractal targets GNU/Linux. Spectral targets Windows, macOS and GNU/Linux.
  • Spectral is intended to look beautiful on all platforms. Fractal's look fits GNOME environments better.
  • Fractal is considered to be a bit more stable than Spectral.

...Quaternion?

  • Quaternion and Spectral use the same SDK, controller logic, list model with only a few modifications. There are only minor differences between these codes.
  • Spectral's UI uses only QtQuick Controls. Quaternion's UI uses Qt Widgets and QtQuick Controls.
  • Spectral never has a native look and feel. Quaternion looks native on Qt-based environments.

...FluffyChat?

  • Spectral uses libQuotient as SDK, a generic library maintained by Quotient for developing Matrix applications; FluffyChat does not use any Matrix SDK.
  • Spectral's backend is written in C++. FluffyChat's backend is written in JavaScript.
  • FluffyChat targets Ubuntu Touch. Spectral targets Windows, macOS and GNU/Linux.

Frequently Asked Questions

Q: What is the Matrix?

A: Nobody can be told what the matrix is, you have to see it for yourself.

Q: What is Spectral?

A: It is a Matrix client.

Q: What system can I run Spectral on?

A: Modern GNU/Linux, Windows and macOS.

Q: Is there a Flatpak package or AppImage?

A: Yes and using them is recommended.

Q: There's no Snap package?

A: Yes. If you want to maintain a Snap package please contact the developer.

Q: The fonts are incorrect/missing/ugly.

A: Install Google Noto Fonts or Roboto, or set custom fonts in settings.

Q: Clicking on links does not open web browser.

A: Install xdg-desktop-portal-gtk/xdg-desktop-portal-kde, reinstall Spectral and reboot.

Q: DPI issues.

A: Unfortunately Qt Quick's HiDPI is broken for fraction scales such as 125%. This is an upstream bug.

Q: Does Spectral support E2EE?

A: No.

Q: Will Spectral support E2EE in 2019?

A: Probably.

Q: What SDK does Spectral use?

A: libQuotient.

Q: Does Spectral use Electron or is Spectral native?

A: Spectral is a native application and does not use Electron.

Q: Is Spectral lightweight?

A: Yes since it does not use Electron.

Q: What can I do to help this project?

A: If you are not familiar with Qt, you can fire bug reports, suggest features and help translation(coming soon). If you are familiar with Qt programming, you can help by fixing bugs or review for unsafe and inefficient code. Moreover, you can buy me some coffee by sending some BTC(1AmNvttxJ6zne8f2GEH8zMAMQuT4cMdnDN) or BCH(bitcoincash:qz8d8ksn6d4uhh2r45cu6ewxy4hvlkq085845hqhds)!