Skip to content
Snippets Groups Projects
README.md 7.59 KiB
Newer Older
  • Learn to ignore specific revisions
  • Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    nheko
    ----
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    [![Build Status](https://travis-ci.org/mujx/nheko.svg?branch=master)](https://travis-ci.org/mujx/nheko)
    [![Build status](https://ci.appveyor.com/api/projects/status/07qrqbfylsg4hw2h/branch/master?svg=true)](https://ci.appveyor.com/project/mujx/nheko/branch/master)
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    [![Stable Version](https://img.shields.io/badge/download-stable-green.svg)](https://github.com/mujx/nheko/releases/v0.6.1)
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    [![Nightly](https://img.shields.io/badge/download-nightly-green.svg)](https://github.com/mujx/nheko/releases/nightly)
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    [![Chat on Matrix](https://img.shields.io/badge/chat-on%20matrix-blue.svg)](https://matrix.to/#/#nheko:matrix.org)
    
    [![AUR: nheko](https://img.shields.io/badge/AUR-nheko-blue.svg)](https://aur.archlinux.org/packages/nheko)
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    
    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.
    
    
    ### 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.
    
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    ## Features
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    Most of the features you would expect from a chat application are missing right now
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    but we are getting close to a more feature complete client.
    Specifically there is support for:
    
    - E2E encryption (text messages only: attachments are currently sent unencrypted).
    
    - User registration.
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    - Creating, joining & leaving rooms.
    - Sending & receiving invites.
    - Sending & receiving files and emoji (inline widgets for images, audio and file messages).
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    - Typing notifications.
    
    - Username auto-completion.
    
    mujx's avatar
    mujx committed
    - Message & mention notifications.
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    - Redacting messages.
    
    mujx's avatar
    mujx committed
    - Read receipts.
    - Basic communities support.
    - Room switcher (ctrl-K).
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    - Light, Dark & System themes.
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    ## Installation
    
    ### Releases
    
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    Releases for Linux (AppImage), macOS (disk image) & Windows (x64 installer) 
    
    can be found in the [Github releases](https://github.com/mujx/nheko/releases).
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    
    ### Repositories
    
    #### Arch Linux
    ```bash
    
    pacaur -S nheko # nheko-git
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    #### Fedora
    ```bash
    sudo dnf install nheko
    ```
    
    
    #### Gentoo Linux
    ```bash
    
    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.
    
    ```sh
    sudo apk add nheko
    ```
    
    
    #### Flatpak
    
    ```
    flatpak install flathub io.github.mujx.Nheko
    ```
    
    
    #### macOS (10.12 and above)
    
    with [macports](https://www.macports.org/) :
    
    ```sh
    sudo port install nheko
    ```
    
    
    ### Build Requirements
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    
    
    - Qt5 (5.7 or greater). Qt 5.7 adds support for color font rendering with
      Freetype, which is essential to properly support emoji.
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    - CMake 3.1 or greater.
    
    - [mtxclient](https://github.com/mujx/mtxclient)
    - [LMDB](https://symas.com/lightning-memory-mapped-database/)
    
    - [cmark](https://github.com/commonmark/cmark)
    
    - Boost 1.66 or greater.
    - [libolm](https://git.matrix.org/git/olm)
    - [libsodium](https://github.com/jedisct1/libsodium)
    - [spdlog](https://github.com/gabime/spdlog)
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    - A compiler that supports C++ 14:
        - Clang 5 (tested on Travis CI)
        - GCC 7 (tested on Travis CI)
        - MSVC 19.13 (tested on AppVeyor)
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    #### Linux 
    
    If you don't want to install any external dependencies, you can generate an AppImage locally using docker.
    
    ```bash
    make docker-app-image
    ```
    
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    ##### Arch Linux
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    
    ```bash
    
    sudo pacman -S qt5-base \
        qt5-tools \
        qt5-multimedia \
        qt5-svg \
        cmake \
        gcc \
        fontconfig \
        lmdb \
    
        cmark \
    
        boost \
        libsodium
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    ```
    
    
    sudo emerge -a ">=dev-qt/qtgui-5.7.1" media-libs/fontconfig
    
    ##### Ubuntu (e.g 14.04)
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    
    ```bash
    
    sudo add-apt-repository ppa:beineri/opt-qt592-trusty
    
    sudo add-apt-repository ppa:george-edison55/cmake-3.x
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    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)
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    
    ```bash
    
    brew install qt5 lmdb cmake llvm libsodium spdlog boost cmark
    
    ##### 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).
    
    
    3. Install dependencies with `vcpkg`. You can simply clone it into a subfolder
    
    of the root nheko source directory.
    
    ```powershell
    git clone http:\\github.com\Microsoft\vcpkg
    cd vcpkg
    .\bootstrap-vcpkg.bat
    
    .\vcpkg install --triplet x64-windows \
    	boost-asio \
    	boost-beast \
    	boost-iostreams \
    	boost-random \
    	boost-signals2 \
    	boost-system \
    	boost-thread \
    
    	cmark \
    
    	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
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    ### 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.
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    
    
    #### 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:
     - `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.
    
    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.
    
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    ### Contributing
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    
    
    See [CONTRIBUTING](.github/CONTRIBUTING.md)
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    ### Screens
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    
    Here is a screen shot to get a feel for the UI, but things will probably change.
    
    
    ![nheko](https://dl.dropboxusercontent.com/s/3zjcezdtk8kqe4i/nheko-v0.4.0.png)
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    
    
    - [Font Awesome](http://fontawesome.io/)
    
    - [Open Sans](https://fonts.google.com/specimen/Open+Sans)
    
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    [Matrix]:https://matrix.org
    [Riot]:https://riot.im