diff --git a/Telegram/SourceFiles/platform/linux/specific_linux.cpp b/Telegram/SourceFiles/platform/linux/specific_linux.cpp index 799e0f3fa3..d88e91c80f 100644 --- a/Telegram/SourceFiles/platform/linux/specific_linux.cpp +++ b/Telegram/SourceFiles/platform/linux/specific_linux.cpp @@ -123,6 +123,14 @@ void PortalAutostart(bool autostart, bool silent = false) { } } +bool IsXDGDesktopPortalKDEPresent() { + static const auto Result = QDBusInterface( + qsl("org.freedesktop.impl.portal.desktop.kde"), + kXDGDesktopPortalObjectPath.utf16()).isValid(); + + return Result; +} + uint FileChooserPortalVersion() { static const auto Result = [&]() -> uint { auto message = QDBusMessage::createMethodCall( @@ -731,17 +739,20 @@ bool IsXDGDesktopPortalPresent() { } bool UseXDGDesktopPortal() { +#ifndef DESKTOP_APP_DISABLE_DBUS_INTEGRATION static const auto Result = [&] { const auto envVar = qEnvironmentVariableIsSet("TDESKTOP_USE_PORTAL"); const auto portalPresent = IsXDGDesktopPortalPresent(); + const auto neededForKde = DesktopEnvironment::IsKDE() + && IsXDGDesktopPortalKDEPresent(); - return ( - DesktopEnvironment::IsKDE() - || envVar - ) && portalPresent; + return (neededForKde || envVar) && portalPresent; }(); return Result; +#endif // !DESKTOP_APP_DISABLE_DBUS_INTEGRATION + + return false; } bool CanOpenDirectoryWithPortal() {