diff --git a/net-im/nheko/additional-files/nheko.iom b/net-im/nheko/additional-files/nheko.iom new file mode 100644 index 000000000..ada35a8c1 Binary files /dev/null and b/net-im/nheko/additional-files/nheko.iom differ diff --git a/net-im/nheko/additional-files/nheko.rdef.in b/net-im/nheko/additional-files/nheko.rdef.in new file mode 100644 index 000000000..56d95a50d --- /dev/null +++ b/net-im/nheko/additional-files/nheko.rdef.in @@ -0,0 +1,28 @@ + +resource app_flags B_EXCLUSIVE_LAUNCH; + +resource app_version { + major = @MAJOR@, + middle = @MIDDLE@, + minor = @MINOR@, + + variety = B_APPV_FINAL, + + short_info = "Nheko", + long_info = "@LONG_INFO@" +}; + +resource app_signature "@APP_SIGNATURE@"; + + +resource vector_icon { + $"6E63696609040065050102000402B2E2E2E2FFAD9F9F03BEDCF303C7E7FF0200" + $"0402C685A8DCFF5289DA03BED0EA05F602000402C5969696FF897C8B0A080552" + $"3C525A4C5A332E372E0A09322D2E312E3B343E34504A5B4D5B5058503C0A0436" + $"3630333039363C0A043A383E3A3E523A500A083E3A4C414C5948574845424242" + $"543E520804363630333330393308043D3541373E3A3A380A044C413E3A41374F" + $"3E0804425445514544424108044D3D4D554A584A400C0A000100201F1C0A0101" + $"01201F1C0A020102201F1C0A030103201B1A0A050103201F1C0A020104201F1C" + $"0A070105201F1C0A040106201B1A0A060106201F1C0A070107201F1C0A080108" + $"201F1C0A08010920211D" +}; diff --git a/net-im/nheko/nheko-0.8.2.recipe b/net-im/nheko/nheko-0.8.2.recipe new file mode 100644 index 000000000..0837efa18 --- /dev/null +++ b/net-im/nheko/nheko-0.8.2.recipe @@ -0,0 +1,119 @@ +SUMMARY="A Qt5-based IM client for Matrix" +DESCRIPTION="Nheko client for matrix" +HOMEPAGE="https://nheko.im/nheko-reborn/nheko" +COPYRIGHT="2017-2021 Nheko Authors" +LICENSE="GNU GPL v3" +REVISION="1" +SOURCE_URI="https://github.com/Nheko-Reborn/nheko/archive/v${portVersion}.tar.gz" +CHECKSUM_SHA256="df4575c47daab47d418637a4637b599e3848dd749132ca1e92f981d9212eabb2" +SOURCE_FILENAME="nheko-${portVersion}.tar.gz" +SOURCE_DIR="nheko-${portVersion}" +PATCHES="nheko-${portVersion}.patchset" +ADDITIONAL_FILES="nheko.rdef.in" + +boostMinimumVersion="1.70.0" + +ARCHITECTURES="!x86_gcc2 x86 x86_64" +SECONDARY_ARCHITECTURES="x86" + +PROVIDES=" + nheko$secondaryArchSuffix = $portVersion + app:Nheko$secondaryArchSuffix = $portVersion + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libcmark$secondaryArchSuffix + lib:libcrypto$secondaryArchSuffix + lib:libfmt$secondaryArchSuffix + lib:liblmdb$secondaryArchSuffix + lib:libmatrix_client$secondaryArchSuffix + lib:libolm$secondaryArchSuffix + lib:libQt5Concurrent$secondaryArchSuffix + lib:libQt5Core$secondaryArchSuffix + lib:libQt5DBus$secondaryArchSuffix + lib:libQT5Gui$secondaryArchSuffix + lib:libqt5keychain$secondaryArchSuffix + lib:libQt5Multimedia$secondaryArchSuffix + lib:libQt5Qml$secondaryArchSuffix + lib:libQt5Quick$secondaryArchSuffix + lib:libQt5QuickControls2$secondaryArchSuffix + lib:libQt5QuickWidgets$secondaryArchSuffix + lib:libQt5Svg$secondaryArchSuffix + lib:libQt5Widgets$secondaryArchSuffix + lib:libspdlog$secondaryArchSuffix + lib:libssl$secondaryArchSuffix + lib:libz$secondaryArchSuffix + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + lmdbxx + nlohmann_json + tweeny + devel:libboost_iostreams$secondaryArchSuffix >= $boostMinimumVersion + devel:libboost_system$secondaryArchSuffix >= $boostMinimumVersion + devel:libboost_thread$secondaryArchSuffix >= $boostMinimumVersion + devel:libcmark$secondaryArchSuffix + devel:libfmt$secondaryArchSuffix + devel:liblmdb$secondaryArchSuffix + devel:libmatrix_client$secondaryArchSuffix >= 0.5.1 + devel:libolm$secondaryArchSuffix + devel:libQt5Concurrent$secondaryArchSuffix + devel:libQt5Core$secondaryArchSuffix + devel:libQt5Dbus$secondaryArchSuffix + devel:libQt5Gui$secondaryArchSuffix + devel:libqt5keychain$secondaryArchSuffix + devel:libQt5Multimedia$secondaryArchSuffix + devel:libQt5Network$secondaryArchSuffix + devel:libQt5Qml$secondaryArchSuffix + devel:libQt5Quick$secondaryArchSuffix + devel:libQt5QuickControls2$secondaryArchSuffix + devel:libQt5QuickWidgets$secondaryArchSuffix + devel:libQt5Svg$secondaryArchSuffix + devel:libQt5Widgets$secondaryArchSuffix + devel:libspdlog$secondaryArchSuffix + devel:libssl$secondaryArchSuffix + devel:libz$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + cmd:g++$secondaryArchSuffix + cmd:cmake + cmd:linguist$secondaryArchSuffix >= 5 + cmd:make + cmd:pkg_config$secondaryArchSuffix + " + +BUILD() +{ + mkdir -p build + cd build + cmake .. $cmakeDirArgs \ + -DCMAKE_INSTALL_BINDIR=$appsDir \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_EXE_LINKER_FLAGS="-lnetwork -lz" + make $jobArgs +} + +INSTALL() +{ + cd build + make install + + local APP_SIGNATURE="application/x-vnd.nheko" + local MAJOR="`echo "$portVersion" | cut -d. -f1`" + local MIDDLE="`echo "$portVersion" | cut -d. -f2`" + local MINOR="`echo "$portVersion" | cut -d. -f3`" + sed \ + -e "s|@APP_SIGNATURE@|$APP_SIGNATURE|" \ + -e "s|@MAJOR@|$MAJOR|" \ + -e "s|@MIDDLE@|$MIDDLE|" \ + -e "s|@MINOR@|$MINOR|" \ + -e "s|@LONG_INFO@|$SUMMARY|" \ + $portDir/additional-files/nheko.rdef.in > nheko.rdef + + mv $appsDir/nheko $appsDir/Nheko + rm -rf $dataDir + + addResourcesToBinaries nheko.rdef $appsDir/Nheko + addAppDeskbarSymlink $appsDir/Nheko +} diff --git a/net-im/nheko/patches/nheko-0.8.2.patchset b/net-im/nheko/patches/nheko-0.8.2.patchset new file mode 100644 index 000000000..7bddee812 --- /dev/null +++ b/net-im/nheko/patches/nheko-0.8.2.patchset @@ -0,0 +1,174 @@ +From 05cb74c094d285a568103a413c0d3e4ca95b8d21 Mon Sep 17 00:00:00 2001 +From: Pascal Abresch +Date: Sat, 24 Apr 2021 07:46:12 +0200 +Subject: HACK: disable rounding effect for avatars Having this enabled + produces empty avatars for some reason + + +diff --git a/resources/qml/Avatar.qml b/resources/qml/Avatar.qml +index 108bb76..75971a3 100644 +--- a/resources/qml/Avatar.qml ++++ b/resources/qml/Avatar.qml +@@ -60,18 +60,6 @@ Rectangle { + + } + +- layer.effect: OpacityMask { +- cached: true +- +- maskSource: Rectangle { +- anchors.fill: parent +- width: avatar.width +- height: avatar.height +- radius: Settings.avatarCircles ? height / 2 : 3 +- } +- +- } +- + } + + Rectangle { +-- +2.30.0 + + +From 0aa02aa568eaa2ff46e52192d25f7149c9430fee Mon Sep 17 00:00:00 2001 +From: Pascal Abresch +Date: Sat, 24 Apr 2021 07:51:50 +0200 +Subject: Haiku: decrease single pane threshold + + +diff --git a/src/Splitter.cpp b/src/Splitter.cpp +index 15e3f5c..aaf67e1 100644 +--- a/src/Splitter.cpp ++++ b/src/Splitter.cpp +@@ -160,7 +160,7 @@ splitter::calculateSidebarSizes(const QFont &f) + sz.small = std::ceil(3.8 * height); + sz.normal = std::ceil(16 * height); + sz.groups = std::ceil(3 * height); +- sz.collapsePoint = 2 * sz.normal; ++ sz.collapsePoint = 1.4 * sz.normal; + + return sz; + } +-- +2.30.0 + + +From 919142c89739e63a18b286d14bba4deb7fb07e4a Mon Sep 17 00:00:00 2001 +From: Pascal Abresch +Date: Sat, 24 Apr 2021 07:40:14 +0200 +Subject: Haiku: disable singleapplication + + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 468480d..2d8bcb3 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -461,9 +461,11 @@ else() + add_feature_info(voip OFF "GStreamer could not be found on your system. As a consequence call support has been disabled. If you don't want that, make sure gstreamer-sdp-1.0>=1.18 gstreamer-webrtc-1.0>=1.18 can be found via pkgconfig.") + endif() + ++if(NOT HAIKU) + # single instance functionality + set(QAPPLICATION_CLASS QApplication CACHE STRING "Inheritance class for SingleApplication") + add_subdirectory(third_party/SingleApplication-3.2.0-dc8042b/) ++endif() + + feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES) + +@@ -633,8 +635,12 @@ target_link_libraries(nheko PRIVATE + qt5keychain + nlohmann_json::nlohmann_json + lmdbxx::lmdbxx +- liblmdb::lmdb ++ liblmdb::lmdb) ++ ++if (NOT HAIKU) ++target_link_libraries(nheko PRIVATE + SingleApplication::SingleApplication) ++endif() + + if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.16.0") + target_precompile_headers(nheko +diff --git a/src/main.cpp b/src/main.cpp +index fe1a9ee..446e165 100644 +--- a/src/main.cpp ++++ b/src/main.cpp +@@ -29,7 +29,10 @@ + #include "MatrixClient.h" + #include "Utils.h" + #include "config/nheko.h" ++ ++#if !defined(Q_OS_HAIKU) + #include "singleapplication.h" ++#endif + + #if defined(Q_OS_MAC) + #include "emoji/MacHelper.h" +@@ -136,6 +139,7 @@ main(int argc, char *argv[]) + } + } + ++#if !defined(Q_OS_HAIKU) + SingleApplication app(argc, + argv, + true, +@@ -145,12 +149,17 @@ main(int argc, char *argv[]) + SingleApplication::Mode::SecondaryNotification, + 100, + userdata); ++#else ++ QApplication app(argc, argv, true); ++#endif + ++#if !defined(Q_OS_HAIKU) + if (app.isSecondary()) { + // open uri in main instance + app.sendMessage(matrixUri.toUtf8()); + return 0; + } ++#endif + + QCommandLineParser parser; + parser.addHelpOption(); +@@ -170,9 +179,11 @@ main(int argc, char *argv[]) + QCoreApplication::tr("profile name")); + parser.addOption(configName); + ++#if !defined(Q_OS_HAIKU) + parser.process(app); + + app.setWindowIcon(QIcon::fromTheme("nheko", QIcon{":/logos/nheko.png"})); ++#endif + + http::init(); + +@@ -236,6 +247,8 @@ main(int argc, char *argv[]) + nhlog::net()->debug("bye"); + } + }); ++ ++#if !defined(Q_OS_HAIKU) + QObject::connect(&app, &SingleApplication::instanceStarted, &w, [&w]() { + w.show(); + w.raise(); +@@ -247,9 +260,14 @@ main(int argc, char *argv[]) + &SingleApplication::receivedMessage, + ChatPage::instance(), + [&](quint32, QByteArray message) { ChatPage::instance()->handleMatrixUri(message); }); +- ++#endif + QMetaObject::Connection uriConnection; ++ ++#if !defined(Q_OS_HAIKU) + if (app.isPrimary() && !matrixUri.isEmpty()) { ++#else ++ if (!matrixUri.isEmpty()) { ++#endif + uriConnection = QObject::connect(ChatPage::instance(), + &ChatPage::contentLoaded, + ChatPage::instance(), +-- +2.30.0 +