Desktop client for Matrix using Qt and C++20.
Find a file
christarazi cd9d1a2ec6 Support audio, video, generic file for pasting (#220)
* Refactor widget items to use same interface

* Support audio, video, generic file for pasting

* Add utils function for human readable file sizes

* Set correct MIME type for media messages

This change also determines the size of the upload once from the
ContentLengthHeader, rather than seeking the QIODevice and asking for
its size. This prevents any future trouble in case the QIODevice is
sequential (cannot be seeked). The MIME type is also determined at
upload once, rather than using the QIODevice and the underlying data
inside.

* Allow for file urls to be used as fall-back

This fixes an issue on macOS which uses `text/uri-list` for copying
files to the clipboard.

fixes #228
2018-02-18 22:52:31 +02:00
.ci Add Dockerfile to create an AppImage for Debian (#156) 2018-02-01 12:08:51 -07:00
.github Update issue template 2017-11-02 22:02:31 +02:00
cmake Add make install and make uninstall rules to cmake (#196) 2018-01-09 20:34:01 +02: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
dist Update ci 2017-11-06 17:20:48 +02:00
include Support audio, video, generic file for pasting (#220) 2018-02-18 22:52:31 +02:00
libs Update matrix-structs 2018-02-01 15:29:22 -07:00
resources Support audio, video, generic file for pasting (#220) 2018-02-18 22:52:31 +02:00
scripts Add missing -j flag to the archive script 2018-01-02 11:00:16 +02:00
src Support audio, video, generic file for pasting (#220) 2018-02-18 22:52:31 +02:00
.clang-format Use C++11 braced list style (#121) 2017-11-05 23:04:55 +02:00
.gitignore Generate compile_commands.json 2018-01-25 15:08:19 +02:00
.gitmodules Initial integration with matrix-structs 2017-12-03 02:47:37 +02:00
.travis.yml Fix clang build 2018-02-16 10:26:31 +02:00
appveyor.yml Bump up Qt versions on travis & appveyor 2018-01-29 02:12:05 +02:00
CMakeLists.txt Support audio, video, generic file for pasting (#220) 2018-02-18 22:52:31 +02:00
default.nix Add basic nix expressions (#47) 2017-08-05 18:40:00 +03:00
Dockerfile Add deb and rpm packages on releases 2017-12-26 19:08:00 +02:00
Dockerfile.debian Add Dockerfile to create an AppImage for Debian (#156) 2018-02-01 12:08:51 -07:00
LICENSE Initial commit 2017-04-06 02:06:42 +03:00
Makefile Add Dockerfile to create an AppImage for Debian (#156) 2018-02-01 12:08:51 -07:00
package.nix Update package.nix to include QT Multimedia (#165) 2017-12-16 18:05:14 +02:00
README.md Update build instructions 2018-02-10 13:46:26 +02:00

nheko

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

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:

  • Creating, joining & leaving rooms.
  • Sending & receiving invites.
  • Sending & receiving files and emoji (inline widgets for images, audio and file messages).
  • Typing notifications.
  • Light, Dark & System themes.

Installation

There are continuous nightly releases here for Linux (AppImage, rpm, deb), Mac and Windows.

Arch Linux

pacaur -S 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.
  • LMDB.
  • A compiler that supports C++11.
    • Clang 3.8 (or greater).
    • GCC 4.9.4 (or greater).

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 cmake gcc fontconfig lmdb
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 apt-get update
sudo apt-get install -y qt59base qt59tools qt59multimedia cmake liblmdb-dev

To build on Ubuntu 14.04 Trusty out-of-the-box requires using Clang 3.6 instead of GCC:

sudo apt-get install clang-3.6
export CC=clang-3.6 CXX=clang++-3.6

On Ubuntu 14.04 Trusty, it's possible to use GCC 4.9.4+, but it is not recommended, because it requires installing GCC packages from third-party PPAs. Later versions of Ubuntu that come with GCC 4.9.4+ should work with GCC out-of-the-box.

macOS (Xcode 8 or later)
brew update
brew install qt5 lmdb cmake llvm

Building

Clone the repo and run

make release

which invokes cmake and translates to

cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=RelWithDebInfo
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=RelWithDebInfo -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

Any kind of contribution to the project is greatly appreciated. You are also encouraged to open feature request issues.

Screens

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

nheko

Third party