Unverified Commit cecf7702 authored by Alexander Bantyev's avatar Alexander Bantyev Committed by GitHub
Browse files

Merge pull request #268575 from ilya-fedin/kotato-nightly

kotatogram-desktop{,-with-webkit}: 1.4.9 -> 0-unstable-2024-07-01
parents b6867880 96bd7df2
Loading
Loading
Loading
Loading
+50 −72
Original line number Diff line number Diff line
@@ -6,17 +6,18 @@
, cmake
, ninja
, clang
, lld
, python3
, wrapQtAppsHook
, removeReferencesTo
, extra-cmake-modules
, qtbase
, qtimageformats
, qtsvg
, kwayland
, qtwayland
, kcoreaddons
, lz4
, xxHash
, ffmpeg_4
, ffmpeg
, openalSoft
, minizip
, libopus
@@ -25,94 +26,59 @@
, range-v3
, tl-expected
, hunspell
, glibmm
, gobject-introspection
, glibmm_2_68
, jemalloc
, rnnoise
, abseil-cpp
, microsoft-gsl
, boost
, fmt
, wayland
, libicns
, Cocoa
, CoreFoundation
, CoreServices
, CoreText
, CoreGraphics
, CoreMedia
, OpenGL
, AudioUnit
, ApplicationServices
, Foundation
, AGL
, Security
, SystemConfiguration
, Carbon
, AudioToolbox
, VideoToolbox
, VideoDecodeAcceleration
, AVFoundation
, CoreAudio
, CoreVideo
, CoreMediaIO
, QuartzCore
, AppKit
, CoreWLAN
, WebKit
, IOKit
, GSS
, MediaPlayer
, IOSurface
, Metal
, MetalKit
, darwin
}:

let
  tg_owt = callPackage ./tg_owt.nix {
    abseil-cpp = abseil-cpp.override {
      # abseil-cpp should use the same compiler
      inherit stdenv;
      cxxStandard = "20";
    };

    # tg_owt should use the same compiler
    inherit stdenv;

    inherit Cocoa AppKit IOKit IOSurface Foundation AVFoundation CoreMedia VideoToolbox
      CoreGraphics CoreVideo OpenGL Metal MetalKit CoreFoundation ApplicationServices;
  };

  mainProgram = if stdenv.isLinux then "kotatogram-desktop" else "Kotatogram";
in
stdenv.mkDerivation rec {
  pname = "kotatogram-desktop";
  version = "1.4.9";
  version = "0-unstable-2024-07-01";

  src = fetchFromGitHub {
    owner = "kotatogram";
    repo = "kotatogram-desktop";
    rev = "k${version}";
    sha256 = "sha256-6bF/6fr8mJyyVg53qUykysL7chuewtJB8E22kVyxjHw=";
    rev = "fbb22ebd3e39dfa4a036fa79a7a3f78b86b1cea2";
    sha256 = "sha256-ccfmaqapk9ct+5kvBI02xHJ7YCGmm1CcqwM+3hC1bk0=";
    fetchSubmodules = true;
  };

  patches = [
    ./kf594.patch
    ./shortcuts-binary-path.patch
    ./macos.patch
    ./macos-opengl.patch
  ];

  postPatch = lib.optionalString stdenv.isLinux ''
    substituteInPlace Telegram/ThirdParty/libtgvoip/os/linux/AudioInputALSA.cpp \
      --replace '"libasound.so.2"' '"${alsa-lib}/lib/libasound.so.2"'
      --replace-fail '"libasound.so.2"' '"${alsa-lib}/lib/libasound.so.2"'
    substituteInPlace Telegram/ThirdParty/libtgvoip/os/linux/AudioOutputALSA.cpp \
      --replace '"libasound.so.2"' '"${alsa-lib}/lib/libasound.so.2"'
      --replace-fail '"libasound.so.2"' '"${alsa-lib}/lib/libasound.so.2"'
    substituteInPlace Telegram/ThirdParty/libtgvoip/os/linux/AudioPulse.cpp \
      --replace '"libpulse.so.0"' '"${libpulseaudio}/lib/libpulse.so.0"'
      --replace-fail '"libpulse.so.0"' '"${libpulseaudio}/lib/libpulse.so.0"'
  '' + lib.optionalString stdenv.isDarwin ''
    sed -i "13i#import <CoreAudio/CoreAudio.h>" Telegram/lib_webrtc/webrtc/mac/webrtc_media_devices_mac.mm
    substituteInPlace Telegram/CMakeLists.txt \
      --replace 'COMMAND iconutil' 'COMMAND png2icns' \
      --replace '--convert icns' "" \
      --replace '--output AppIcon.icns' 'AppIcon.icns' \
      --replace "\''${appicon_path}" "\''${appicon_path}/icon_16x16.png \''${appicon_path}/icon_32x32.png \''${appicon_path}/icon_128x128.png \''${appicon_path}/icon_256x256.png \''${appicon_path}/icon_512x512.png"
    substituteInPlace Telegram/lib_webrtc/webrtc/platform/mac/webrtc_environment_mac.mm \
      --replace-fail kAudioObjectPropertyElementMain kAudioObjectPropertyElementMaster
  '';

  # Wrapping the inside of the app bundles, avoiding double-wrapping
  dontWrapQtApps = stdenv.isDarwin;

  nativeBuildInputs = [
    pkg-config
    cmake
@@ -123,7 +89,9 @@ stdenv.mkDerivation rec {
  ] ++ lib.optionals stdenv.isLinux [
    # to build bundled libdispatch
    clang
    extra-cmake-modules
    gobject-introspection
  ] ++ lib.optionals stdenv.isDarwin [
    lld
  ];

  buildInputs = [
@@ -132,7 +100,7 @@ stdenv.mkDerivation rec {
    qtsvg
    lz4
    xxHash
    ffmpeg_4
    ffmpeg
    openalSoft
    minizip
    libopus
@@ -141,15 +109,18 @@ stdenv.mkDerivation rec {
    rnnoise
    tg_owt
    microsoft-gsl
    boost
  ] ++ lib.optionals stdenv.isLinux [
    kwayland
    qtwayland
    kcoreaddons
    alsa-lib
    libpulseaudio
    hunspell
    glibmm
    glibmm_2_68
    jemalloc
    fmt
    wayland
  ] ++ lib.optionals stdenv.isDarwin [
  ] ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk_11_0.frameworks; [
    Cocoa
    CoreFoundation
    CoreServices
@@ -180,27 +151,34 @@ stdenv.mkDerivation rec {
    MediaPlayer
    IOSurface
    Metal
    NaturalLanguage
    libicns
  ];
  ]);

  enableParallelBuilding = true;

  env = lib.optionalAttrs stdenv.isDarwin {
    NIX_CFLAGS_LINK = "-fuse-ld=lld";
  };

  cmakeFlags = [
    "-DTDESKTOP_API_TEST=ON"
    "-DDESKTOP_APP_QT6=OFF"
  ];

  installPhase = lib.optionalString stdenv.isDarwin ''
    mkdir -p $out/Applications
    cp -r Kotatogram.app $out/Applications
    ln -s $out/Applications/Kotatogram.app/Contents/MacOS $out/bin
    cp -r ${mainProgram}.app $out/Applications
    ln -s $out/{Applications/${mainProgram}.app/Contents/MacOS,bin}
  '';

  preFixup = ''
    binName=${if stdenv.isLinux then "kotatogram-desktop" else "Kotatogram"}
    remove-references-to -t ${stdenv.cc.cc} $out/bin/$binName
    remove-references-to -t ${microsoft-gsl} $out/bin/$binName
    remove-references-to -t ${tg_owt.dev} $out/bin/$binName
    remove-references-to -t ${stdenv.cc.cc} $out/bin/${mainProgram}
    remove-references-to -t ${microsoft-gsl} $out/bin/${mainProgram}
    remove-references-to -t ${tg_owt.dev} $out/bin/${mainProgram}
  '';

  postFixup = lib.optionalString stdenv.isDarwin ''
    wrapQtApp $out/Applications/${mainProgram}.app/Contents/MacOS/${mainProgram}
  '';

  passthru = {
@@ -208,8 +186,8 @@ stdenv.mkDerivation rec {
  };

  meta = with lib; {
    inherit mainProgram;
    description = "Kotatogram – experimental Telegram Desktop fork";
    mainProgram = "kotatogram-desktop";
    longDescription = ''
      Unofficial desktop client for the Telegram messenger, based on Telegram Desktop.

+0 −57
Original line number Diff line number Diff line
diff --git a/Telegram/SourceFiles/platform/linux/linux_wayland_integration.cpp b/Telegram/SourceFiles/platform/linux/linux_wayland_integration.cpp
index 7641579aa..3c195e397 100644
--- a/Telegram/SourceFiles/platform/linux/linux_wayland_integration.cpp
+++ b/Telegram/SourceFiles/platform/linux/linux_wayland_integration.cpp
@@ -9,10 +9,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 
 #include "base/platform/base_platform_info.h"
 
-#include <connection_thread.h>
-#include <registry.h>
-#include <surface.h>
-#include <plasmashell.h>
+#include <KWayland/Client/connection_thread.h>
+#include <KWayland/Client/registry.h>
+#include <KWayland/Client/surface.h>
+#include <KWayland/Client/plasmashell.h>
 
 using namespace KWayland::Client;
 
Submodule Telegram/lib_base contains modified content
diff --git a/Telegram/lib_base/base/platform/linux/base_linux_wayland_integration.cpp b/Telegram/lib_base/base/platform/linux/base_linux_wayland_integration.cpp
index 32f0de6..30a087f 100644
--- a/Telegram/lib_base/base/platform/linux/base_linux_wayland_integration.cpp
+++ b/Telegram/lib_base/base/platform/linux/base_linux_wayland_integration.cpp
@@ -13,11 +13,11 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 #include <QtCore/QPointer>
 #include <QtGui/QWindow>
 
-#include <connection_thread.h>
-#include <registry.h>
-#include <surface.h>
-#include <xdgforeign.h>
-#include <idleinhibit.h>
+#include <KWayland/Client/connection_thread.h>
+#include <KWayland/Client/registry.h>
+#include <KWayland/Client/surface.h>
+#include <KWayland/Client/xdgforeign.h>
+#include <KWayland/Client/idleinhibit.h>
 
 using namespace KWayland::Client;
 
Submodule Telegram/lib_ui contains modified content
diff --git a/Telegram/lib_ui/ui/platform/linux/ui_linux_wayland_integration.cpp b/Telegram/lib_ui/ui/platform/linux/ui_linux_wayland_integration.cpp
index 01f1e80..163cb6a 100644
--- a/Telegram/lib_ui/ui/platform/linux/ui_linux_wayland_integration.cpp
+++ b/Telegram/lib_ui/ui/platform/linux/ui_linux_wayland_integration.cpp
@@ -24,8 +24,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 #include <private/qwaylandwindow_p.h>
 #include <private/qwaylandshellsurface_p.h>
 
-#include <connection_thread.h>
-#include <registry.h>
+#include <KWayland/Client/connection_thread.h>
+#include <KWayland/Client/registry.h>
 
 Q_DECLARE_METATYPE(QMargins);
 
+66 −0
Original line number Diff line number Diff line
diff --git a/Telegram/SourceFiles/media/view/media_view_pip.cpp b/Telegram/SourceFiles/media/view/media_view_pip.cpp
index 655e7cf410..c356acbffe 100644
--- a/Telegram/SourceFiles/media/view/media_view_pip.cpp
+++ b/Telegram/SourceFiles/media/view/media_view_pip.cpp
@@ -1333,7 +1333,7 @@ void Pip::setupStreaming() {
 Ui::GL::ChosenRenderer Pip::chooseRenderer(
 		Ui::GL::Capabilities capabilities) {
 	const auto use = Platform::IsMac()
-		? true
+		? false
 		: capabilities.transparency;
 	LOG(("OpenGL: %1 (PipPanel)").arg(Logs::b(use)));
 	if (use) {
Submodule Telegram/lib_ui contains modified content
diff --git a/Telegram/lib_ui/ui/gl/gl_detection.cpp b/Telegram/lib_ui/ui/gl/gl_detection.cpp
index 150eb8b..c7ce9f9 100644
--- a/Telegram/lib_ui/ui/gl/gl_detection.cpp
+++ b/Telegram/lib_ui/ui/gl/gl_detection.cpp
@@ -236,7 +236,7 @@ Capabilities CheckCapabilities(QWidget *widget, bool avoidWidgetCreation) {
 
 Backend ChooseBackendDefault(Capabilities capabilities) {
 	const auto use = ::Platform::IsMac()
-		? true
+		? false
 		: ::Platform::IsWindows()
 		? capabilities.supported
 		: capabilities.transparency;
diff --git a/Telegram/lib_ui/ui/platform/mac/ui_window_mac.mm b/Telegram/lib_ui/ui/platform/mac/ui_window_mac.mm
index 7b29363..22c4fb3 100644
--- a/Telegram/lib_ui/ui/platform/mac/ui_window_mac.mm
+++ b/Telegram/lib_ui/ui/platform/mac/ui_window_mac.mm
@@ -16,7 +16,6 @@
 #include <QtCore/QAbstractNativeEventFilter>
 #include <QtGui/QWindow>
 #include <QtGui/QtEvents>
-#include <QOpenGLWidget>
 #include <Cocoa/Cocoa.h>
 
 @interface WindowObserver : NSObject {
@@ -138,7 +137,6 @@ public:
 
 private:
 	void init();
-	void initOpenGL();
 	void resolveWeakPointers();
 	void revalidateWeakPointers() const;
 	void initCustomTitle();
@@ -272,10 +270,6 @@ void WindowHelper::Private::enforceStyle() {
 	}
 }
 
-void WindowHelper::Private::initOpenGL() {
-	auto forceOpenGL = std::make_unique<QOpenGLWidget>(_owner->window());
-}
-
 void WindowHelper::Private::resolveWeakPointers() {
 	if (!_owner->window()->winId()) {
 		_owner->window()->createWinId();
@@ -338,7 +332,6 @@ void WindowHelper::Private::initCustomTitle() {
 }
 
 void WindowHelper::Private::init() {
-	initOpenGL();
 	resolveWeakPointers();
 	initCustomTitle();
 }
+52 −0
Original line number Diff line number Diff line
Submodule Telegram/lib_base contains modified content
diff --git a/Telegram/lib_base/base/platform/mac/base_battery_saving_mac.mm b/Telegram/lib_base/base/platform/mac/base_battery_saving_mac.mm
index 7ce90d3..dac3c2c 100644
--- a/Telegram/lib_base/base/platform/mac/base_battery_saving_mac.mm
+++ b/Telegram/lib_base/base/platform/mac/base_battery_saving_mac.mm
@@ -138,6 +138,7 @@ BatterySaving::BatterySaving(Fn<void()> changedCallback) {
 	_observer = [[LowPowerModeObserver alloc] initWithCallback:std::move(wrapped)];
 
 	NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
+#if 0
 	if (@available(macOS 12.0, *)) {
 		[center
 			addObserver: _observer
@@ -145,6 +146,7 @@ BatterySaving::BatterySaving(Fn<void()> changedCallback) {
 			name: NSProcessInfoPowerStateDidChangeNotification
 			object: nil];
 	}
+#endif
 	[center
 		addObserver: _observer
 		selector: @selector(powerStateChanged:)
@@ -178,11 +180,13 @@ std::optional<bool> BatterySaving::enabled() const {
 		return std::nullopt;
 	}
 	NSProcessInfo *info = [NSProcessInfo processInfo];
+#if 0
 	if (@available(macOS 12.0, *)) {
 		if ([info isLowPowerModeEnabled]) {
 			return true;
 		}
 	}
+#endif
 	const auto state = DetectBatteryState();
 	if (!state.has || !state.draining) {
 		return false;
Submodule Telegram/lib_webview contains modified content
diff --git a/Telegram/lib_webview/webview/platform/mac/webview_mac.mm b/Telegram/lib_webview/webview/platform/mac/webview_mac.mm
index 657c5a4..4bfc097 100644
--- a/Telegram/lib_webview/webview/platform/mac/webview_mac.mm
+++ b/Telegram/lib_webview/webview/platform/mac/webview_mac.mm
@@ -317,9 +317,11 @@ Instance::Instance(Config config) {
 	_dataRequestHandler = std::move(config.dataRequestHandler);
 	[configuration setURLSchemeHandler:_handler forURLScheme:stdToNS(kDataUrlScheme)];
 	_webview = [[WKWebView alloc] initWithFrame:NSZeroRect configuration:configuration];
+#if 0
 	if (@available(macOS 13.3, *)) {
 		_webview.inspectable = config.debug ? YES : NO;
 	}
+#endif
 	[_manager addScriptMessageHandler:_handler name:@"external"];
 	[_webview setNavigationDelegate:_handler];
 	[_webview setUIDelegate:_handler];
+0 −38
Original line number Diff line number Diff line
diff --git a/Telegram/SourceFiles/core/application.cpp b/Telegram/SourceFiles/core/application.cpp
index 2a092c6ea..de46dd269 100644
--- a/Telegram/SourceFiles/core/application.cpp
+++ b/Telegram/SourceFiles/core/application.cpp
@@ -1173,7 +1173,7 @@ void Application::startShortcuts() {
 
 void Application::RegisterUrlScheme() {
 	base::Platform::RegisterUrlScheme(base::Platform::UrlSchemeDescriptor{
-		.executable = cExeDir() + cExeName(),
+		.executable = qsl("kotatogram-desktop"),
 		.arguments = qsl("-workdir \"%1\"").arg(cWorkingDir()),
 		.protocol = qsl("tg"),
 		.protocolName = qsl("Telegram Link"),
diff --git a/Telegram/SourceFiles/platform/linux/specific_linux.cpp b/Telegram/SourceFiles/platform/linux/specific_linux.cpp
index 26168baa7..00d2525a0 100644
--- a/Telegram/SourceFiles/platform/linux/specific_linux.cpp
+++ b/Telegram/SourceFiles/platform/linux/specific_linux.cpp
@@ -303,19 +303,11 @@ bool GenerateDesktopFile(
 
 	QFile target(targetFile);
 	if (target.open(QIODevice::WriteOnly)) {
-		fileText = fileText.replace(
-			QRegularExpression(
-				qsl("^TryExec=.*$"),
-				QRegularExpression::MultilineOption),
-			qsl("TryExec=%1").arg(
-				QString(cExeDir() + cExeName()).replace('\\', "\\\\")));
-
 		fileText = fileText.replace(
 			QRegularExpression(
 				qsl("^Exec=kotatogram-desktop(.*)$"),
 				QRegularExpression::MultilineOption),
-			qsl("Exec=%1 -workdir %2\\1").arg(
-				EscapeShellInLauncher(cExeDir() + cExeName()),
+			qsl("Exec=kotatogram-desktop -workdir %1\\1").arg(
 				EscapeShellInLauncher(cWorkingDir())));
 
 		fileText = fileText.replace(
Loading