2017-04-06 04:03:46 +03:00
nheko
----
2019-01-16 07:41:59 +03:00
[![Build Status ](https://travis-ci.org/Nheko-Reborn/nheko.svg?branch=master )](https://travis-ci.org/Nheko-Reborn/nheko)
2019-01-13 05:18:01 +03:00
[![Build status ](https://ci.appveyor.com/api/projects/status/07qrqbfylsg4hw2h/branch/master?svg=true )](https://ci.appveyor.com/project/redsky17/nheko/branch/master)
2019-02-08 22:49:53 +03:00
[![Stable Version ](https://img.shields.io/badge/download-stable-green.svg )](https://github.com/Nheko-Reborn/nheko/releases/v0.6.3)
2019-05-16 02:08:13 +03:00
[![Nightly ](https://img.shields.io/badge/download-nightly-green.svg )](https://bintray.com/nheko-reborn/nheko/nheko)
2019-01-13 08:58:16 +03:00
[![#nheko-reborn:matrix.org ](https://img.shields.io/matrix/nheko-reborn:matrix.org.svg?label=%23nheko-reborn:matrix.org )](https://matrix.to/#/#nheko-reborn:matrix.org)
2018-03-12 23:23:26 +03:00
[![AUR: nheko ](https://img.shields.io/badge/AUR-nheko-blue.svg )](https://aur.archlinux.org/packages/nheko)
2019-05-16 02:04:59 +03:00
< a href = 'https://flathub.org/apps/details/io.github.NhekoReborn.Nheko' > < img width = '240' alt = 'Download on Flathub' src = 'https://flathub.org/assets/badges/flathub-badge-en.png' / > < / a >
2017-04-06 04:03:46 +03:00
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.
2018-07-21 21:07:55 +03:00
### Note regarding End-to-End encryption
Currently the implementation is at best a **proof of concept** and it should only be used for
testing purposes.
2018-04-22 15:37:23 +03:00
## Features
2017-04-06 04:03:46 +03:00
2017-10-01 19:24:35 +03:00
Most of the features you would expect from a chat application are missing right now
2017-10-11 17:46:23 +03:00
but we are getting close to a more feature complete client.
Specifically there is support for:
2018-06-27 16:52:11 +03:00
- E2E encryption (text messages only: attachments are currently sent unencrypted).
2018-03-12 23:23:26 +03:00
- User registration.
2017-12-21 16:10:04 +03:00
- Creating, joining & leaving rooms.
- Sending & receiving invites.
- Sending & receiving files and emoji (inline widgets for images, audio and file messages).
2017-11-06 01:51:59 +03:00
- Typing notifications.
2018-03-25 21:50:45 +03:00
- Username auto-completion.
2018-03-04 11:55:07 +03:00
- Message & mention notifications.
2018-03-17 22:32:50 +03:00
- Redacting messages.
2018-03-04 11:55:07 +03:00
- Read receipts.
- Basic communities support.
- Room switcher (ctrl-K).
2017-12-21 16:10:04 +03:00
- Light, Dark & System themes.
2017-04-06 04:03:46 +03:00
2018-04-22 15:37:23 +03:00
## Installation
2017-05-09 22:42:32 +03:00
2018-06-17 19:10:48 +03:00
### Releases
2019-01-13 08:58:16 +03:00
Releases for Linux (AppImage), macOS (disk image) & Windows (x64 installer)
2019-01-16 07:41:59 +03:00
can be found in the [Github releases ](https://github.com/Nheko-Reborn/nheko/releases ).
2018-04-22 15:37:23 +03:00
### Repositories
2017-11-06 01:51:59 +03:00
2017-05-09 22:42:32 +03:00
#### Arch Linux
```bash
2018-06-17 19:10:48 +03:00
pacaur -S nheko # nheko-git
2017-07-09 13:46:50 +03:00
```
2017-10-11 17:46:23 +03:00
#### Fedora
```bash
sudo dnf install nheko
```
2017-07-09 13:46:50 +03:00
#### Gentoo Linux
```bash
2017-07-29 12:23:27 +03:00
sudo layman -a matrix
sudo emerge -a nheko
2017-05-09 22:42:32 +03:00
```
2018-01-02 23:50:19 +03:00
#### Alpine Linux (and postmarketOS)
Make sure you have the testing repositories from `edge` enabled. Note that this is not needed on postmarketOS.
```sh
sudo apk add nheko
```
2018-08-03 10:23:17 +03:00
#### Flatpak
```
2019-05-16 01:59:59 +03:00
flatpak install flathub io.github.NhekoReborn.Nheko
2018-08-03 10:23:17 +03:00
```
2018-07-31 12:15:35 +03:00
#### macOS (10.12 and above)
with [macports ](https://www.macports.org/ ) :
```sh
sudo port install nheko
```
2017-05-09 22:42:32 +03:00
### Build Requirements
2017-04-06 04:03:46 +03:00
2017-04-27 01:31:51 +03:00
- Qt5 (5.7 or greater). Qt 5.7 adds support for color font rendering with
Freetype, which is essential to properly support emoji.
2017-04-10 02:28:06 +03:00
- CMake 3.1 or greater.
2019-01-16 07:41:59 +03:00
- [mtxclient ](https://github.com/Nheko-Reborn/mtxclient )
2018-06-17 19:10:48 +03:00
- [LMDB ](https://symas.com/lightning-memory-mapped-database/ )
2018-09-11 19:02:36 +03:00
- [cmark ](https://github.com/commonmark/cmark )
2018-06-17 19:10:48 +03:00
- Boost 1.66 or greater.
- [libolm ](https://git.matrix.org/git/olm )
- [libsodium ](https://github.com/jedisct1/libsodium )
- [spdlog ](https://github.com/gabime/spdlog )
2018-04-22 15:37:23 +03:00
- A compiler that supports C++ 14:
- Clang 5 (tested on Travis CI)
- GCC 7 (tested on Travis CI)
- MSVC 19.13 (tested on AppVeyor)
2017-04-06 04:03:46 +03:00
2019-01-13 08:58:16 +03:00
#### Linux
2017-12-21 16:10:04 +03:00
If you don't want to install any external dependencies, you can generate an AppImage locally using docker.
```bash
make docker-app-image
```
2017-04-09 03:54:39 +03:00
##### Arch Linux
2017-04-06 04:03:46 +03:00
```bash
2018-06-17 19:10:48 +03:00
sudo pacman -S qt5-base \
qt5-tools \
qt5-multimedia \
qt5-svg \
cmake \
gcc \
fontconfig \
lmdb \
2018-09-11 19:02:36 +03:00
cmark \
2018-06-17 19:10:48 +03:00
boost \
libsodium
2017-04-06 04:03:46 +03:00
```
2017-07-09 13:46:50 +03:00
##### Gentoo Linux
```bash
2017-07-29 12:23:27 +03:00
sudo emerge -a ">=dev-qt/qtgui-5.7.1" media-libs/fontconfig
2017-07-09 13:46:50 +03:00
```
2017-07-29 12:23:27 +03:00
##### Ubuntu (e.g 14.04)
2017-04-10 02:28:06 +03:00
```bash
2017-12-06 10:04:52 +03:00
sudo add-apt-repository ppa:beineri/opt-qt592-trusty
2017-07-29 12:23:27 +03:00
sudo add-apt-repository ppa:george-edison55/cmake-3.x
2018-04-22 15:37:23 +03:00
sudo add-apt-repository ppa:ubuntu-toolchain-r-test
2017-07-29 12:23:27 +03:00
sudo apt-get update
2019-01-13 08:58:16 +03:00
sudo apt-get install -y g++-7 qt59base qt59svg qt59tools qt59multimedia cmake liblmdb-dev libsodium-dev
2017-12-06 19:29:09 +03:00
```
2018-02-05 15:12:07 +03:00
##### macOS (Xcode 8 or later)
2017-04-10 02:28:06 +03:00
```bash
2017-07-29 12:23:27 +03:00
brew update
2018-09-11 19:02:36 +03:00
brew install qt5 lmdb cmake llvm libsodium spdlog boost cmark
2017-04-10 02:28:06 +03:00
```
2018-06-14 02:17:38 +03:00
##### Windows
1. Install Visual Studio 2017's "Desktop Development" and "Linux Development with C++"
(for the CMake integration) workloads.
2. Download the latest Qt for windows installer and install it somewhere.
Make sure to install the `MSVC 2017 64-bit` toolset for at least Qt 5.9
(lower versions does not support VS2017).
2019-02-08 22:49:53 +03:00
3. Install dependencies with `vcpkg` . You can simply clone it into a subfolder
2018-06-14 02:17:38 +03:00
of the root nheko source directory.
```powershell
git clone http:\\github.com\Microsoft\vcpkg
cd vcpkg
.\bootstrap-vcpkg.bat
2018-06-30 22:43:55 +03:00
.\vcpkg install --triplet x64-windows \
boost-asio \
boost-beast \
boost-iostreams \
boost-random \
boost-signals2 \
boost-system \
boost-thread \
2018-09-11 19:02:36 +03:00
cmark \
2018-06-30 22:43:55 +03:00
libsodium \
lmdb \
openssl \
zlib
```
4. Install dependencies not managed by vcpkg. (libolm, libmtxclient, libmatrix_structs)
Inside the project root run the following (replacing the path to vcpkg as necessary).
```bash
cmake -G "Visual Studio 15 2017 Win64" -Hdeps -B.deps
-DCMAKE_TOOLCHAIN_FILE=C:/Users/< your-path > /vcpkg/scripts/buildsystems/vcpkg.cmake
-DUSE_BUNDLED_BOOST=OFF
cmake --build .deps --config Release
cmake --build .deps --config Debug
2018-06-14 02:17:38 +03:00
```
2017-04-10 02:28:06 +03:00
### Building
2017-04-06 19:56:33 +03:00
2018-06-17 19:10:48 +03:00
First we need to install the rest of the dependencies that are not available in our system
2017-07-29 12:23:27 +03:00
2017-04-06 19:56:33 +03:00
```bash
2018-06-17 19:10:48 +03:00
cmake -Hdeps -B.deps \
-DUSE_BUNDLED_BOOST=OFF # if we already have boost & spdlog installed.
-DUSE_BUNDLED_SPDLOG=OFF
cmake --build .deps
2017-04-06 19:56:33 +03:00
```
2018-06-17 19:10:48 +03:00
We can now build nheko by pointing it to the path that we installed the dependencies.
2018-02-05 15:12:07 +03:00
```bash
2018-06-17 19:10:48 +03:00
cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=.deps/usr
2018-02-05 15:12:07 +03:00
cmake --build build
```
2018-02-10 14:46:26 +03:00
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
```
2018-06-17 19:10:48 +03:00
cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=$(brew --prefix qt5)
2018-02-10 14:46:26 +03:00
cmake --build build
```
2018-02-05 15:12:07 +03:00
2017-04-06 19:56:33 +03:00
The `nheko` binary will be located in the `build` directory.
2017-04-06 04:03:46 +03:00
2018-06-14 02:17:38 +03:00
#### Windows
After installing all dependencies, you need to edit the `CMakeSettings.json` to
be able to load and compile nheko within Visual Studio.
You need to fill out the paths for the `CMAKE_TOOLCHAIN_FILE` and the `Qt5_DIR` .
The toolchain file should point to the `vcpkg.cmake` and the Qt5 dir to the `lib\cmake\Qt5` dir.
Examples for the paths are:
2019-02-08 22:49:53 +03:00
- `C:\\vcpkg\\scripts\\buildsystems\\vcpkg.cmake`
- `C:\\Qt\\5.10.1\\msvc2017_64\\lib\\cmake\\Qt5`
Now right click into the root nheko source directory and choose `Open in Visual Studio` .
You can choose the build type Release and Debug in the top toolbar.
After a successful CMake generation you can select the `nheko.exe` as the run target.
Now choose `Build all` in the CMake menu or press `F7` to compile the executable.
2018-06-14 02:17:38 +03:00
To be able to run the application the last step is to install the needed Qt dependencies next to the
nheko binary.
Start the "Qt x.xx.x 64-bit for Desktop (MSVC 2017)" command promt and run `windeployqt` .
```cmd
cd < path-to-nheko > \build-vc\Release\Release
windeployqt nheko.exe
```
The final binary will be located inside `build-vc\Release\Release` for the Release build
and `build-vc\Debug\Debug` for the Debug build.
2017-04-09 03:54:39 +03:00
### Contributing
2017-04-06 04:03:46 +03:00
2018-05-14 15:11:24 +03:00
See [CONTRIBUTING ](.github/CONTRIBUTING.md )
2017-04-06 04:03:46 +03:00
2017-04-09 03:54:39 +03:00
### Screens
2017-04-06 04:03:46 +03:00
2019-02-27 05:43:16 +03:00
Here are some screen shots to get a feel for the UI, but things will probably change.
2017-04-06 04:03:46 +03:00
2019-02-27 05:43:16 +03:00
![nheko start ](https://nheko-reborn.github.io/images/screenshots/Start.png )
![nheko login ](https://nheko-reborn.github.io/images/screenshots/login.png )
![nheko chat ](https://nheko-reborn.github.io/images/screenshots/chat.png )
![nheko settings ](https://nheko-reborn.github.io/images/screenshots/settings.png )
2017-04-06 04:03:46 +03:00
2019-01-26 21:17:08 +03:00
### Third party
- [Emoji One ](http://emojione.com )
- [Font Awesome ](http://fontawesome.io/ )
- [Open Sans ](https://fonts.google.com/specimen/Open+Sans )
2017-04-06 04:03:46 +03:00
[Matrix]:https://matrix.org
[Riot]:https://riot.im