Optimistically replace package names with qt6 versions and im.nheko.Nheko

This commit is contained in:
Nicolas Werner 2024-06-11 00:58:50 +02:00
parent 7964ea2d5d
commit 15d8b4be41
No known key found for this signature in database
GPG key ID: C8D75E610773F2D9

View file

@ -12,7 +12,7 @@ feels more like a mainstream chat app ([Element], Telegram etc) and less like an
### Stable ### Stable
[![Stable Version](https://img.shields.io/badge/download-stable-green.svg)](https://github.com/Nheko-Reborn/nheko/releases/latest) [![Stable Version](https://img.shields.io/badge/download-stable-green.svg)](https://github.com/Nheko-Reborn/nheko/releases/latest)
<a href='https://flathub.org/apps/details/io.github.NhekoReborn.Nheko'><img height='32' alt='Download on Flathub' src='https://flathub.org/assets/badges/flathub-badge-en.png'/></a> <a href='https://flathub.org/apps/details/im.nheko.Nheko'><img height='32' alt='Download on Flathub' src='https://flathub.org/assets/badges/flathub-badge-en.png'/></a>
[![Packaging status](https://repology.org/badge/tiny-repos/nheko.svg)](https://repology.org/project/nheko/versions) [![Packaging status](https://repology.org/badge/tiny-repos/nheko.svg)](https://repology.org/project/nheko/versions)
For other options and details see the [Installation](#installation) section. For other options and details see the [Installation](#installation) section.
@ -39,17 +39,19 @@ Most of the features you would expect from a chat application are missing right
but we are getting close to a more feature complete client. but we are getting close to a more feature complete client.
Specifically there is support for: Specifically there is support for:
- E2E encryption. - E2E encryption.
- VoIP calls (voice & video). - VoIP calls (voice & video, support varies by platform).
- User registration. - User registration.
- Creating, joining & leaving rooms. - Creating, joining & leaving rooms.
- Sending & receiving invites. - Sending & receiving invites.
- Sending & receiving files and emoji (inline widgets for images, audio and file messages). - Sending & receiving files and emoji (inline widgets for images, audio and file messages).
- Custom stickers and emoji.
- Replies with text, images and other media (and actually render them as inline widgets). - Replies with text, images and other media (and actually render them as inline widgets).
- Typing notifications. - Typing notifications.
- Username auto-completion. - Username auto-completion.
- Message & mention notifications. - Message & mention notifications.
- Redacting messages. - Redacting messages.
- Read receipts. - Read receipts.
- Presence and status messages (if enabled on the server side).
- Basic communities support. - Basic communities support.
- Room switcher (ctrl-K). - Room switcher (ctrl-K).
- Light, Dark & System themes. - Light, Dark & System themes.
@ -60,8 +62,9 @@ Specifically there is support for:
### Releases ### Releases
Releases for Linux (AppImage), macOS (disk image) & Windows (x64 installer) Releases for Linux (Flatpak), macOS (disk image) & Windows (x64 msix or appinstaller)
can be found in the [GitHub releases](https://github.com/Nheko-Reborn/nheko/releases). can be found in the [GitHub releases](https://github.com/Nheko-Reborn/nheko/releases).
The appinstaller on Windows will regularly check our servers for updates. The msix won't.
### Repositories ### Repositories
@ -143,7 +146,7 @@ sudo zypper install qt-jdenticon
#### Flatpak #### Flatpak
``` ```
flatpak install flathub io.github.NhekoReborn.Nheko flatpak install flathub im.nheko.Nheko
``` ```
#### Guix #### Guix
@ -157,8 +160,8 @@ guix install nheko
Install nheko via the `Discover` app in Desktop Mode (this installs the flatpak). To also make it work in Game Mode you'll have create a wrapper script that starts kwalletd and then nheko. You can create `/home/deck/nheko.sh` with the following content and then add this script as a "Non-Steam Game" to Steam. Install nheko via the `Discover` app in Desktop Mode (this installs the flatpak). To also make it work in Game Mode you'll have create a wrapper script that starts kwalletd and then nheko. You can create `/home/deck/nheko.sh` with the following content and then add this script as a "Non-Steam Game" to Steam.
```bash ```bash
#!/bin/sh #!/bin/sh
kwalletd5& kwalletd6&
flatpak run --env=XDG_CURRENT_DESKTOP=KDE --env=KDE_SESSION_VERSION=5 --branch=stable --arch=x86_64 --command=io.github.NhekoReborn.Nheko --file-forwarding io.github.NhekoReborn.Nheko @@u @@ flatpak run --env=XDG_CURRENT_DESKTOP=KDE --env=KDE_SESSION_VERSION=5 --branch=stable --arch=x86_64 --command=im.nheko.Nheko --file-forwarding im.nheko.Nheko @@u @@
``` ```
#### macOS (10.14 and above) #### macOS (10.14 and above)
@ -237,14 +240,14 @@ sharing easier.
**A:** Nheko uses Qt's image plugins to render images. You might need to install **A:** Nheko uses Qt's image plugins to render images. You might need to install
additional packages to display some image types like webp. Usually those additional packages to display some image types like webp. Usually those
packages are called `qt5-image-formats-plugins`, `qt5-imageformats` or similar. packages are called `qt6-image-formats-plugins`, `qt6-imageformats` or similar.
KDE has similar plugins, that can extend the supported image types even more. KDE has similar plugins, that can extend the supported image types even more.
--- ---
### Build Requirements ### Build Requirements
- Qt5 (5.15 or greater). Required for overlapping hover handlers in Qml. - Qt6 (6.5 or greater). Required for overlapping hover handlers in Qml.
- CMake 3.15 or greater. (Lower version may work, but may break boost linking) - CMake 3.15 or greater. (Lower version may work, but may break boost linking)
- [mtxclient](https://github.com/Nheko-Reborn/mtxclient) - [mtxclient](https://github.com/Nheko-Reborn/mtxclient)
- [coeurl](https://nheko.im/nheko-reborn/coeurl) - [coeurl](https://nheko.im/nheko-reborn/coeurl)
@ -253,7 +256,7 @@ KDE has similar plugins, that can extend the supported image types even more.
- [cmark](https://github.com/commonmark/cmark) 0.29 or greater. - [cmark](https://github.com/commonmark/cmark) 0.29 or greater.
- [libolm](https://gitlab.matrix.org/matrix-org/olm) - [libolm](https://gitlab.matrix.org/matrix-org/olm)
- [spdlog](https://github.com/gabime/spdlog) (1.8.1 too old) - [spdlog](https://github.com/gabime/spdlog) (1.8.1 too old)
- [GStreamer](https://gitlab.freedesktop.org/gstreamer) 1.18.0 or greater (optional, needed for VoIP support. Pass `-DVOIP=OFF` to disable.). - [GStreamer](https://gitlab.freedesktop.org/gstreamer) 1.20.0 or greater (optional, needed for VoIP support. Pass `-DVOIP=OFF` to disable.).
- Installing the gstreamer core library plus gst-plugins-base, gst-plugins-good & gst-plugins-bad - Installing the gstreamer core library plus gst-plugins-base, gst-plugins-good & gst-plugins-bad
is often sufficient. The qmlgl plugin though is often packaged separately. The actual plugin requirements is often sufficient. The qmlgl plugin though is often packaged separately. The actual plugin requirements
are as follows: are as follows:
@ -265,7 +268,7 @@ KDE has similar plugins, that can extend the supported image types even more.
- [KDSingleApplication](https://github.com/KDAB/KDSingleApplication) (1.0 or greater with Qt6 support) - [KDSingleApplication](https://github.com/KDAB/KDSingleApplication) (1.0 or greater with Qt6 support)
- A compiler that supports C++ 20: - A compiler that supports C++ 20:
- Clang 16 (Only clazy 16 is tested in CI) - Clang 16 (Only clazy 16 is tested in CI)
- GCC 11 (tested on Gitlab CI) - GCC 11.3 (tested on Gitlab CI)
- MSVC 19.13 (tested on AppVeyor) - MSVC 19.13 (tested on AppVeyor)
Nheko can use bundled version for most of those libraries automatically, if the versions in your distro are too old. Nheko can use bundled version for most of those libraries automatically, if the versions in your distro are too old.
@ -303,17 +306,17 @@ make docker-app-image
#### Arch Linux #### Arch Linux
```bash ```bash
sudo pacman -S qt5-base \ sudo pacman -S qt6-base \
qt5-tools \ qt6-tools \
qt5-multimedia \ qt6-multimedia \
qt5-svg \ qt6-svg \
cmake \ cmake \
gcc \ gcc \
fontconfig \ fontconfig \
lmdb \ lmdb \
cmark \ cmark \
boost \ boost \
qtkeychain-qt5 qtkeychain-qt6
``` ```
#### Debian 13 [Testing/Sid] (Nheko QT6 Version) #### Debian 13 [Testing/Sid] (Nheko QT6 Version)
@ -335,8 +338,8 @@ cmake --build build
*Build requirements + qml modules needed at runtime (you may not need all of them, but the following seem to work according to reports):* *Build requirements + qml modules needed at runtime (you may not need all of them, but the following seem to work according to reports):*
```bash ```bash
sudo apt install --no-install-recommends g++ cmake make zlib1g-dev libssl-dev libolm-dev liblmdb-dev libcmark-dev nlohmann-json3-dev libspdlog-dev libevent-dev libcurl4-openssl-dev libre2-dev libxcb-ewmh-dev asciidoc-base \ sudo apt install --no-install-recommends g++ cmake make zlib1g-dev libssl-dev libolm-dev liblmdb-dev libcmark-dev nlohmann-json3-dev libspdlog-dev libevent-dev libcurl4-openssl-dev libre2-dev libxcb-ewmh-dev asciidoc-base \
qt{base,declarative,tools,multimedia,quickcontrols2-}5-dev libqt5svg5-dev qt5keychain-dev qml-module-qt{gstreamer,multimedia,quick-extras,-labs-settings,-labs-platform,graphicaleffects,quick-controls2,quick-particles2} \ qt{base,declarative,tools,multimedia,quickcontrols2-}5-dev libqt6svg5-dev qt6keychain-dev qml-module-qt{gstreamer,multimedia,quick-extras,-labs-settings,-labs-platform,graphicaleffects,quick-controls2,quick-particles2} \
libgstreamer1.0-dev libgstreamer-plugins-{base,bad}1.0-dev qtgstreamer-plugins-qt5 libnice-dev ninja-build libgstreamer1.0-dev libgstreamer-plugins-{base,bad}1.0-dev qtgstreamer-plugins-qt6 libnice-dev ninja-build
``` ```
lmdb++-dev is too old so bundled lmdbxx must be used. lmdb++-dev is too old so bundled lmdbxx must be used.
libspdlog-dev in debian bullseye is too old (without backporting) so requires using hunter to use bundled spdlog. libspdlog-dev in debian bullseye is too old (without backporting) so requires using hunter to use bundled spdlog.
@ -365,7 +368,7 @@ guix environment nheko
```bash ```bash
brew update brew update
brew install qt5 lmdb cmake llvm spdlog boost cmark libolm qtkeychain brew install qt6 lmdb cmake llvm spdlog boost cmark libolm qtkeychain
``` ```
#### Windows #### Windows
@ -398,18 +401,18 @@ Adapt the USE_BUNDLED_* as needed.
If the build fails with the following error If the build fails with the following error
``` ```
Could not find a package configuration file provided by "Qt5Widgets" with Could not find a package configuration file provided by "Qt6Widgets" with
any of the following names: any of the following names:
Qt5WidgetsConfig.cmake Qt6WidgetsConfig.cmake
qt5widgets-config.cmake qt6widgets-config.cmake
``` ```
You might need to pass `-DCMAKE_PREFIX_PATH` to cmake to point it at your qt5 install. You might need to pass `-DCMAKE_PREFIX_PATH` to cmake to point it at your qt6 install.
e.g on macOS e.g on macOS
``` ```
cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=$(brew --prefix qt5) cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=$(brew --prefix qt6)
cmake --build build cmake --build build
``` ```
@ -420,11 +423,11 @@ The `nheko` binary will be located in the `build` directory.
After installing all dependencies, you need to edit the `CMakeSettings.json` to After installing all dependencies, you need to edit the `CMakeSettings.json` to
be able to load and compile nheko within Visual Studio. be able to load and compile nheko within Visual Studio.
You need to fill out the paths for the `Qt5_DIR`. You need to fill out the paths for the `Qt6_DIR`.
The Qt5 dir should point to the `lib\cmake\Qt5` dir. The Qt6 dir should point to the `lib\cmake\Qt6` dir.
Examples for the paths are: Examples for the paths are:
- `C:\\Qt\\5.15.1\\msvc2017_64\\lib\\cmake\\Qt5` - `C:\\Qt\\6.5.2\\msvc2017_64\\lib\\cmake\\Qt6`
You should also enable hunter by setting `HUNTER_ENABLED` to `ON` and `BUILD_SHARED_LIBS` to `OFF`. You should also enable hunter by setting `HUNTER_ENABLED` to `ON` and `BUILD_SHARED_LIBS` to `OFF`.