Desktop client for Matrix using Qt and C++20.
Find a file
2018-06-17 19:10:48 +03:00
.ci Fix regressions regarding invites & slowness during shutdown 2018-06-17 18:44:04 +03:00
.github Add missing markdown extension 2018-05-14 15:11:24 +03:00
cmake Install missing dependencies in travis-ci/appveyor 2018-06-04 16:07:47 +03:00
deploy/installer Windows icon fix and change the installer to QT Installer Framework on Windows (#85) 2017-11-06 17:17:21 +02:00
deps Fix regressions regarding invites & slowness during shutdown 2018-06-17 18:44:04 +03:00
include Fix regressions regarding invites & slowness during shutdown 2018-06-17 18:44:04 +03:00
resources Use the white for text on the dark theme 2018-05-25 09:30:42 +03:00
scripts Add missing -j flag to the archive script 2018-01-02 11:00:16 +02:00
src Fix regressions regarding invites & slowness during shutdown 2018-06-17 18:44:04 +03:00
.clang-format Use C++11 braced list style (#121) 2017-11-05 23:04:55 +02:00
.gitignore Include mtxclient in the build 2018-06-04 13:54:51 +03:00
.travis.yml Setup BinTray 2018-06-17 16:53:14 +03:00
appveyor.yml Setup BinTray 2018-06-17 16:53:14 +03:00
CMakeLists.txt Update CI instructions 2018-06-17 00:23:49 +03:00
default.nix Fix & cleanup nix files (#240) 2018-02-24 23:46:29 +02:00
Dockerfile Update dockerfiles with the qt-svg dependency 2018-05-18 20:36:12 +03:00
Dockerfile.debian Update dockerfiles with the qt-svg dependency 2018-05-18 20:36:12 +03:00
LICENSE Initial commit 2017-04-06 02:06:42 +03:00
Makefile Update CI instructions 2018-06-17 00:23:49 +03:00
package.nix Bump version to v0.4.3 2018-06-02 10:22:24 +03:00
README.md Update build instructions 2018-06-17 19:10:48 +03:00

nheko

Build Status Build status Latest Release Chat on Matrix AUR: nheko

The motivation behind the project is to provide a native desktop app for Matrix that feels more like a mainstream chat app (Riot, Telegram etc) and less like an IRC client.

Features

Most of the features you would expect from a chat application are missing right now but we are getting close to a more feature complete client. Specifically there is support for:

  • E2EE encryption.
  • User registration.
  • Creating, joining & leaving rooms.
  • Sending & receiving invites.
  • Sending & receiving files and emoji (inline widgets for images, audio and file messages).
  • Typing notifications.
  • Username auto-completion.
  • Message & mention notifications.
  • Redacting messages.
  • Read receipts.
  • Basic communities support.
  • Room switcher (ctrl-K).
  • Light, Dark & System themes.

Installation

Releases

You can find releases for Linux (AppImage), macOS (disk image) & Windows (x64 installer) on the Bintray repo.

Repositories

Arch Linux

pacaur -S nheko # nheko-git

Fedora

sudo dnf install nheko

Gentoo Linux

sudo layman -a matrix
sudo emerge -a nheko

Alpine Linux (and postmarketOS)

Make sure you have the testing repositories from edge enabled. Note that this is not needed on postmarketOS.

sudo apk add nheko

Build Requirements

  • Qt5 (5.7 or greater). Qt 5.7 adds support for color font rendering with Freetype, which is essential to properly support emoji.
  • CMake 3.1 or greater.
  • mtxclient
  • matrix-structs
  • LMDB
  • Boost 1.66 or greater.
  • libolm
  • libsodium
  • spdlog
  • A compiler that supports C++ 14:
    • Clang 5 (tested on Travis CI)
    • GCC 7 (tested on Travis CI)
    • MSVC 19.13 (tested on AppVeyor)

Linux

If you don't want to install any external dependencies, you can generate an AppImage locally using docker.

make docker-app-image

If you're on Debian you should use make docker-debian-appimage instead, which uses Debian as the build host in an attempt to work around this issue.

Arch Linux
sudo pacman -S qt5-base \
    qt5-tools \
    qt5-multimedia \
    qt5-svg \
    cmake \
    gcc \
    fontconfig \
    lmdb \
    boost \
    libsodium
Gentoo Linux
sudo emerge -a ">=dev-qt/qtgui-5.7.1" media-libs/fontconfig
Ubuntu (e.g 14.04)
sudo add-apt-repository ppa:beineri/opt-qt592-trusty
sudo add-apt-repository ppa:george-edison55/cmake-3.x
sudo add-apt-repository ppa:ubuntu-toolchain-r-test
sudo apt-get update
sudo apt-get install -y g++-7 qt59base qt59svg qt59tools qt59multimedia cmake liblmdb-dev libsodium-dev 
macOS (Xcode 8 or later)
brew update
brew install qt5 lmdb cmake llvm libsodium spdlog boost

Building

First we need to install the rest of the dependencies that are not available in our system

cmake -Hdeps -B.deps \
    -DUSE_BUNDLED_BOOST=OFF # if we already have boost & spdlog installed.
    -DUSE_BUNDLED_SPDLOG=OFF
cmake --build .deps

We can now build nheko by pointing it to the path that we installed the dependencies.

cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=.deps/usr
cmake --build build

If the build fails with the following error

Could not find a package configuration file provided by "Qt5Widgets" with
any of the following names:

Qt5WidgetsConfig.cmake
qt5widgets-config.cmake

You might need to pass -DCMAKE_PREFIX_PATH to cmake to point it at your qt5 install.

e.g on macOS

cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=$(brew --prefix qt5)
cmake --build build

The nheko binary will be located in the build directory.

Nix

Download the repo as mentioned above and run

nix-build

in the project folder. This will output a binary to result/bin/nheko.

You can also install nheko by running nix-env -f . -i

Contributing

See CONTRIBUTING

Screens

Here is a screen shot to get a feel for the UI, but things will probably change.

nheko

Third party